55import java .util .stream .IntStream ;
66
77import static bwapi .CommandType .*;
8+ import static bwapi .Point .TILE_WALK_FACTOR ;
89import static bwapi .Race .Zerg ;
910import static bwapi .UnitType .*;
1011
@@ -19,7 +20,7 @@ public class Game {
1920 {0 , 0 , 0 , 0 , 0 , 0 }, // None
2021 {0 , 0 , 0 , 0 , 0 , 0 } // Unknown
2122 };
22- private static boolean bPsiFieldMask [][] = {
23+ private static final boolean bPsiFieldMask [][] = {
2324 {false , false , false , false , false , true , true , true , true , true , true , false , false , false , false , false },
2425 {false , false , true , true , true , true , true , true , true , true , true , true , true , true , false , false },
2526 {false , true , true , true , true , true , true , true , true , true , true , true , true , true , true , false },
@@ -31,6 +32,9 @@ public class Game {
3132 {false , false , true , true , true , true , true , true , true , true , true , true , true , true , false , false },
3233 {false , false , false , false , false , true , true , true , true , true , true , false , false , false , false , false }
3334 };
35+
36+ private static final int REGION_DATA_SIZE = 5000 ;
37+
3438 private final Set <Unit > staticMinerals = new HashSet <>();
3539 private final Set <Unit > staticGeysers = new HashSet <>();
3640 private final Set <Unit > staticNeutralUnits = new HashSet <>();
@@ -193,17 +197,17 @@ void init() {
193197 mapTileRegionID [x ][y ] = gameData .mapTileRegionID (x , y );
194198 }
195199 }
196- walkable = new boolean [mapWidth * 4 ][mapHeight * 4 ];
197- for (int i = 0 ; i < mapWidth * 4 ; i ++) {
198- for (int j = 0 ; j < mapHeight * 4 ; j ++) {
200+ walkable = new boolean [mapWidth * TILE_WALK_FACTOR ][mapHeight * TILE_WALK_FACTOR ];
201+ for (int i = 0 ; i < mapWidth * TILE_WALK_FACTOR ; i ++) {
202+ for (int j = 0 ; j < mapHeight * TILE_WALK_FACTOR ; j ++) {
199203 walkable [i ][j ] = gameData .walkable (i , j );
200204 }
201205 }
202206
203- mapSplitTilesMiniTileMask = new short [5000 ];
204- mapSplitTilesRegion1 = new short [5000 ];
205- mapSplitTilesRegion2 = new short [5000 ];
206- for (int i = 0 ; i < 5000 ; i ++) {
207+ mapSplitTilesMiniTileMask = new short [REGION_DATA_SIZE ];
208+ mapSplitTilesRegion1 = new short [REGION_DATA_SIZE ];
209+ mapSplitTilesRegion2 = new short [REGION_DATA_SIZE ];
210+ for (int i = 0 ; i < REGION_DATA_SIZE ; i ++) {
207211 mapSplitTilesMiniTileMask [i ] = gameData .mapSplitTilesMiniTileMask (i );
208212 mapSplitTilesRegion1 [i ] = gameData .mapSplitTilesRegion1 (i );
209213 mapSplitTilesRegion2 [i ] = gameData .mapSplitTilesRegion2 (i );
@@ -1461,7 +1465,7 @@ public Region getRegionAt(final Position position) {
14611465 final int minitileShift = ((position .x & 0x1F ) / 8 ) + ((position .y & 0x1F ) / 8 ) * 4 ;
14621466 final int index = idx & 0x1FFF ;
14631467
1464- if (index >= 5000 ) {
1468+ if (index >= REGION_DATA_SIZE ) {
14651469 return null ;
14661470 }
14671471
0 commit comments