-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGridSystem.as
101 lines (74 loc) · 2.42 KB
/
GridSystem.as
1
package { //imports import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.display.MovieClip; public class GridSystem extends MovieClip{ private static var instance:GridSystem; public static function getInstance():GridSystem { if (instance == null) { instance = new GridSystem(); } return instance; } public function GridSystem(){ } public static var GridArray = new Array(); //Global definition public static var SPACE_ON_TOP:Number = 5; public static var SPACE_ON_BUTTOM:Number = 0; public static var SPACE_ON_LEFT:Number = 0; public static var SPACE_ON_RIGHT:Number = 0; public static var GRID_SIZE:Number = 13; public static var GRID_SPACING:Number = 4; public static var BATTLEFIELD_X:Number; public static var BATTLEFIELD_Y:Number; public static var INIT_X:Number = 0; public static var INIT_Y:Number = 0; public static var GRID_ACTUAL_SIZE:Number = GRID_SIZE + GRID_SPACING; public function init(){ //calculate the size; BATTLEFIELD_X = Math.floor((480 - GRID_SPACING - SPACE_ON_LEFT - SPACE_ON_RIGHT)/GRID_ACTUAL_SIZE); BATTLEFIELD_Y = Math.floor((320 - GRID_SPACING - SPACE_ON_TOP - SPACE_ON_BUTTOM)/GRID_ACTUAL_SIZE); GridArray = new Array(); for (var i:Number = 0; i<BATTLEFIELD_X;i++){ GridArray[i] = []; for (var j:Number =0; j<BATTLEFIELD_Y;j++){ var g:Grid = new Grid(); addChild(g); g.init(i,j); g.x = GRID_SPACING + SPACE_ON_LEFT + i * GRID_ACTUAL_SIZE; g.y = GRID_SPACING + SPACE_ON_TOP + j * GRID_ACTUAL_SIZE; GridArray[i][j] = g; } } } public static function outOfBorder(x:int, y:int):Boolean{ if (x < 0 || y < 0) return true; if (x >= BATTLEFIELD_X || y >= BATTLEFIELD_Y) return true; return false; } public static function distance(g1:Grid, g2:Grid):int{ return (Math.abs(g1.idX - g2.idX) + Math.abs(g1.idY - g2.idY)); } public static function reset(){ instance = null; } public static function getGridByXY(_x:int, _y:int):Grid{ if (!outOfBorder(_x, _y)) return GridSystem.GridArray[_x][_y]; return null; } public static function gridValidAndAvailableByXY(_x:int, _y:int):Boolean{ var g = getGridByXY(_x, _y); if (g == null) return false; else if (g.isAvailable()) return true; return false; } }}