From 454409cecf16ed8ab59cece0996942dfa9f7ec24 Mon Sep 17 00:00:00 2001 From: "jason@long.name" Date: Fri, 6 Dec 2013 16:01:48 +0000 Subject: [PATCH] tiles.rc: eliminate BULLBIT and use annotation instead git-svn-id: https://micropolis.googlecode.com/svn/trunk/micropolis-java@894 d9718cc8-9f43-0410-858b-315f434eb58c --- src/micropolisj/engine/Bulldozer.java | 2 +- src/micropolisj/engine/MapGenerator.java | 12 ++--- src/micropolisj/engine/MapScanner.java | 10 ++-- src/micropolisj/engine/Micropolis.java | 16 +----- src/micropolisj/engine/RoadLikeTool.java | 54 ++++++++++----------- src/micropolisj/engine/Sprite.java | 3 +- src/micropolisj/engine/TerrainBehavior.java | 38 +++++++-------- src/micropolisj/engine/TileConstants.java | 7 +-- src/micropolisj/engine/ToolStroke.java | 10 ++-- 9 files changed, 69 insertions(+), 83 deletions(-) diff --git a/src/micropolisj/engine/Bulldozer.java b/src/micropolisj/engine/Bulldozer.java index f31f187..8194033 100644 --- a/src/micropolisj/engine/Bulldozer.java +++ b/src/micropolisj/engine/Bulldozer.java @@ -110,7 +110,7 @@ class Bulldozer extends ToolStroke tile = tile & LOMASK; if (tile != RADTILE && tile != DIRT) { int z = inPreview ? 0 : city.PRNG.nextInt(3); - int nTile = (TINYEXP + z) | BULLBIT; + int nTile = TINYEXP + z; eff.setTile(xx, yy, nTile); } } diff --git a/src/micropolisj/engine/MapGenerator.java b/src/micropolisj/engine/MapGenerator.java index 5e0ca1f..5f9e842 100644 --- a/src/micropolisj/engine/MapGenerator.java +++ b/src/micropolisj/engine/MapGenerator.java @@ -391,10 +391,10 @@ public class MapGenerator } static final char [] REdTab = new char[] { - (RIVEDGE+8) + BULLBIT, (RIVEDGE+8) + BULLBIT, (RIVEDGE+12)+ BULLBIT, (RIVEDGE+10)+ BULLBIT, - (RIVEDGE+0) + BULLBIT, RIVER, (RIVEDGE+14)+ BULLBIT, (RIVEDGE+12)+ BULLBIT, - (RIVEDGE+4) + BULLBIT, (RIVEDGE+6) + BULLBIT, RIVER, (RIVEDGE+8) + BULLBIT, - (RIVEDGE+2) + BULLBIT, (RIVEDGE+4) + BULLBIT, (RIVEDGE+0) + BULLBIT, RIVER + RIVEDGE + 8, RIVEDGE + 8, RIVEDGE + 12, RIVEDGE + 10, + RIVEDGE + 0, RIVER, RIVEDGE + 14, RIVEDGE + 12, + RIVEDGE + 4, RIVEDGE + 6, RIVER, RIVEDGE + 8, + RIVEDGE + 2, RIVEDGE + 4, RIVEDGE + 0, RIVER }; private void smoothRiver() @@ -479,7 +479,7 @@ public class MapGenerator if ((map[mapY][mapX] & LOMASK) == DIRT) { - map[mapY][mapX] = WOODS | BULLBIT; + map[mapY][mapX] = WOODS; } } } @@ -532,7 +532,7 @@ public class MapGenerator temp -= 8; } } - map[mapY][mapX] = (char)(temp | BULLBIT); + map[mapY][mapX] = temp; } else { diff --git a/src/micropolisj/engine/MapScanner.java b/src/micropolisj/engine/MapScanner.java index 4b8386e..ef46be3 100644 --- a/src/micropolisj/engine/MapScanner.java +++ b/src/micropolisj/engine/MapScanner.java @@ -167,7 +167,7 @@ class MapScanner extends TileBehavior { for (int x = xpos-1; x < xpos-1+bi.width; x++) { - city.setTile(x, y, (char)(bi.members[i] | (x == xpos && y == ypos ? BULLBIT : 0))); + city.setTile(x, y, (char) bi.members[i]); i++; } } @@ -672,7 +672,7 @@ class MapScanner extends TileBehavior assert houseNumber >= 0 && houseNumber < 12; assert city.testBounds(xx, yy); - city.setTile(xx, yy, (char)((HOUSE + houseNumber) | BULLBIT)); + city.setTile(xx, yy, (char)(HOUSE + houseNumber)); } } @@ -800,7 +800,7 @@ class MapScanner extends TileBehavior // downgrade from full-size zone to 8 little houses int pwrBit = (rawTile & PWRBIT); - city.setTile(xpos, ypos, (char)(RESCLR | BULLBIT | pwrBit)); + city.setTile(xpos, ypos, (char)(RESCLR | pwrBit)); for (int x = xpos-1; x <= xpos+1; x++) { for (int y = ypos-1; y <= ypos+1; y++) @@ -811,7 +811,7 @@ class MapScanner extends TileBehavior { // pick a random small house int houseNumber = value * 3 + PRNG.nextInt(3); - city.setTile(x, y, (char) ((HOUSE + houseNumber) | BULLBIT)); + city.setTile(x, y, (char) (HOUSE + houseNumber)); } } } @@ -836,7 +836,7 @@ class MapScanner extends TileBehavior int loc = city.map[y][x] & LOMASK; if (loc >= LHTHR && loc <= HHTHR) { //little house - city.setTile(x, y, (char)((Brdr[z] + RESCLR - 4) | BULLBIT)); + city.setTile(x, y, (char)(Brdr[z] + RESCLR - 4)); return; } } diff --git a/src/micropolisj/engine/Micropolis.java b/src/micropolisj/engine/Micropolis.java index e12db19..074ae07 100644 --- a/src/micropolisj/engine/Micropolis.java +++ b/src/micropolisj/engine/Micropolis.java @@ -2204,7 +2204,7 @@ public class Micropolis if (isVulnerable(getTile(x, y))) { if (PRNG.nextInt(4) != 0) { - setTile(x, y, (char)(RUBBLE + BULLBIT + PRNG.nextInt(4))); + setTile(x, y, (char)(RUBBLE + PRNG.nextInt(4))); } else { setTile(x, y, (char)(FIRE + PRNG.nextInt(8))); } @@ -2374,20 +2374,6 @@ public class Micropolis // this will take care of stopping smoke animations shutdownZone(xpos, ypos, dim); - - for (int y = 0; y < dim.height; y++) { - for (int x = 0; x < dim.width; x++, zoneBase++) { - int xtem = xpos - 1 + x; - int ytem = ypos - 1 + y; - if (!testBounds(xtem, ytem)) - continue; - - int t = getTile(xtem, ytem); - if (isConstructed(t)) { - setTile(xtem, ytem, (char)(t | BULLBIT)); - } - } - } } /** diff --git a/src/micropolisj/engine/RoadLikeTool.java b/src/micropolisj/engine/RoadLikeTool.java index 7b807bb..a4acb07 100644 --- a/src/micropolisj/engine/RoadLikeTool.java +++ b/src/micropolisj/engine/RoadLikeTool.java @@ -163,7 +163,7 @@ class RoadLikeTool extends ToolStroke eTile == HRAIL || (eTile >= LHRAIL && eTile <= HRAILROAD)) { - eff.setTile(0, 0, (char) (HRAIL | BULLBIT)); + eff.setTile(0, 0, HRAIL); break; } } @@ -175,7 +175,7 @@ class RoadLikeTool extends ToolStroke wTile == HRAIL || (wTile > VRAIL && wTile < VRAILROAD)) { - eff.setTile(0, 0, (char) (HRAIL | BULLBIT)); + eff.setTile(0, 0, HRAIL); break; } } @@ -187,7 +187,7 @@ class RoadLikeTool extends ToolStroke sTile == VRAILROAD || (sTile > HRAIL && sTile < HRAILROAD)) { - eff.setTile(0, 0, (char) (VRAIL | BULLBIT)); + eff.setTile(0, 0, VRAIL); break; } } @@ -199,7 +199,7 @@ class RoadLikeTool extends ToolStroke nTile == VRAILROAD || (nTile > HRAIL && nTile < HRAILROAD)) { - eff.setTile(0, 0, (char) (VRAIL | BULLBIT)); + eff.setTile(0, 0, VRAIL); break; } } @@ -208,19 +208,19 @@ class RoadLikeTool extends ToolStroke return false; case LHPOWER: // rail on power - eff.setTile(0, 0, (char) (RAILVPOWERH | BULLBIT)); + eff.setTile(0, 0, RAILVPOWERH); break; case LVPOWER: // rail on power - eff.setTile(0, 0, (char) (RAILHPOWERV | BULLBIT)); + eff.setTile(0, 0, RAILHPOWERV); break; case TileConstants.ROADS: // rail on road (case 1) - eff.setTile(0, 0, (char) (VRAILROAD | BULLBIT)); + eff.setTile(0, 0, VRAILROAD); break; case ROADS2: // rail on road (case 2) - eff.setTile(0, 0, (char) (HRAILROAD | BULLBIT)); + eff.setTile(0, 0, HRAILROAD); break; default: @@ -235,7 +235,7 @@ class RoadLikeTool extends ToolStroke } //rail on dirt - eff.setTile(0, 0, (char) (LHRAIL | BULLBIT)); + eff.setTile(0, 0, LHRAIL); break; } @@ -266,7 +266,7 @@ class RoadLikeTool extends ToolStroke eTile == HBRIDGE || (eTile >= TileConstants.ROADS && eTile <= HROADPOWER)) { - eff.setTile(0, 0, (char) (HBRIDGE | BULLBIT)); + eff.setTile(0, 0, HBRIDGE); break; } } @@ -278,7 +278,7 @@ class RoadLikeTool extends ToolStroke wTile == HBRIDGE || (wTile >= TileConstants.ROADS && wTile <= INTERSECTION)) { - eff.setTile(0, 0, (char) (HBRIDGE | BULLBIT)); + eff.setTile(0, 0, HBRIDGE); break; } } @@ -290,7 +290,7 @@ class RoadLikeTool extends ToolStroke sTile == VROADPOWER || (sTile >= VBRIDGE && sTile <= INTERSECTION)) { - eff.setTile(0, 0, (char) (VBRIDGE | BULLBIT)); + eff.setTile(0, 0, VBRIDGE); break; } } @@ -302,7 +302,7 @@ class RoadLikeTool extends ToolStroke nTile == VROADPOWER || (nTile >= VBRIDGE && nTile <= INTERSECTION)) { - eff.setTile(0, 0, (char) (VBRIDGE | BULLBIT)); + eff.setTile(0, 0, VBRIDGE); break; } } @@ -311,19 +311,19 @@ class RoadLikeTool extends ToolStroke return false; case LHPOWER: //road on power - eff.setTile(0, 0, (char) (VROADPOWER | BULLBIT)); + eff.setTile(0, 0, VROADPOWER); break; case LVPOWER: //road on power #2 - eff.setTile(0, 0, (char) (HROADPOWER | BULLBIT)); + eff.setTile(0, 0, HROADPOWER); break; case LHRAIL: //road on rail - eff.setTile(0, 0, (char) (HRAILROAD | BULLBIT)); + eff.setTile(0, 0, HRAILROAD); break; case LVRAIL: //road on rail #2 - eff.setTile(0, 0, (char) (VRAILROAD | BULLBIT)); + eff.setTile(0, 0, VRAILROAD); break; default: @@ -339,7 +339,7 @@ class RoadLikeTool extends ToolStroke // road on dirt; // just build a plain road, fixZone will fix it. - eff.setTile(0, 0, (char) (TileConstants.ROADS | BULLBIT)); + eff.setTile(0, 0, TileConstants.ROADS); break; } @@ -375,7 +375,7 @@ class RoadLikeTool extends ToolStroke tmpn != RAILHPOWERV && tmpn != HPOWER) { - eff.setTile(0, 0, (char) (VPOWER | BULLBIT)); + eff.setTile(0, 0, VPOWER); break; } } @@ -390,7 +390,7 @@ class RoadLikeTool extends ToolStroke tmpn != RAILHPOWERV && tmpn != HPOWER) { - eff.setTile(0, 0, (char) (VPOWER | BULLBIT)); + eff.setTile(0, 0, VPOWER); break; } } @@ -405,7 +405,7 @@ class RoadLikeTool extends ToolStroke tmpn != RAILVPOWERH && tmpn != VPOWER) { - eff.setTile(0, 0, (char) (HPOWER | BULLBIT)); + eff.setTile(0, 0, HPOWER); break; } } @@ -420,7 +420,7 @@ class RoadLikeTool extends ToolStroke tmpn != RAILVPOWERH && tmpn != VPOWER) { - eff.setTile(0, 0, (char) (HPOWER | BULLBIT)); + eff.setTile(0, 0, HPOWER); break; } } @@ -429,19 +429,19 @@ class RoadLikeTool extends ToolStroke return false; case TileConstants.ROADS: // wire on E/W road - eff.setTile(0, 0, (char) (HROADPOWER | BULLBIT)); + eff.setTile(0, 0, HROADPOWER); break; case ROADS2: // wire on N/S road - eff.setTile(0, 0, (char) (VROADPOWER | BULLBIT)); + eff.setTile(0, 0, VROADPOWER); break; case LHRAIL: // wire on E/W railroad tracks - eff.setTile(0, 0, (char) (RAILHPOWERV | BULLBIT)); + eff.setTile(0, 0, RAILHPOWERV); break; case LVRAIL: // wire on N/S railroad tracks - eff.setTile(0, 0, (char) (RAILVPOWERH | BULLBIT)); + eff.setTile(0, 0, RAILVPOWERH); break; default: @@ -456,7 +456,7 @@ class RoadLikeTool extends ToolStroke } //wire on dirt - eff.setTile(0, 0, (char) (LHPOWER | BULLBIT)); + eff.setTile(0, 0, LHPOWER); break; } diff --git a/src/micropolisj/engine/Sprite.java b/src/micropolisj/engine/Sprite.java index c914bbf..dd7e038 100644 --- a/src/micropolisj/engine/Sprite.java +++ b/src/micropolisj/engine/Sprite.java @@ -192,8 +192,7 @@ public abstract class Sprite city.setTile(xpos, ypos, RIVER); } else { - city.setTile(xpos, ypos, - (char) (TINYEXP | BULLBIT)); + city.setTile(xpos, ypos, TINYEXP); } } } diff --git a/src/micropolisj/engine/TerrainBehavior.java b/src/micropolisj/engine/TerrainBehavior.java index 2665d42..479d301 100644 --- a/src/micropolisj/engine/TerrainBehavior.java +++ b/src/micropolisj/engine/TerrainBehavior.java @@ -97,7 +97,7 @@ class TerrainBehavior extends TileBehavior cov != 0 ? 3 : 10; if (PRNG.nextInt(rate+1) == 0) { - city.setTile(xpos, ypos, (char)(RUBBLE + PRNG.nextInt(4) + BULLBIT)); + city.setTile(xpos, ypos, (char)(RUBBLE + PRNG.nextInt(4))); } } @@ -171,7 +171,7 @@ class TerrainBehavior extends TileBehavior if (isOverWater(rawTile)) city.setTile(xpos, ypos, RIVER); else - city.setTile(xpos, ypos, (char)(RUBBLE + PRNG.nextInt(4) + BULLBIT)); + city.setTile(xpos, ypos, (char)(RUBBLE + PRNG.nextInt(4))); return; } } @@ -225,7 +225,7 @@ class TerrainBehavior extends TileBehavior if (isOverWater(rawTile)) { city.setTile(xpos,ypos,RIVER); } else { - city.setTile(xpos,ypos,(char)(RUBBLE + PRNG.nextInt(4)+BULLBIT)); + city.setTile(xpos,ypos,(char)(RUBBLE + PRNG.nextInt(4))); } } } @@ -249,27 +249,27 @@ class TerrainBehavior extends TileBehavior final int HDx[] = { -2, 2, -2, -1, 0, 1, 2 }; final int HDy[] = { -1, -1, 0, 0, 0, 0, 0 }; final char HBRTAB[] = { - HBRDG1 | BULLBIT, HBRDG3 | BULLBIT, - HBRDG0 | BULLBIT, RIVER, - BRWH | BULLBIT, RIVER, - HBRDG2 | BULLBIT }; + HBRDG1, HBRDG3, + HBRDG0, RIVER, + BRWH, RIVER, + HBRDG2 }; final char HBRTAB2[] = { - RIVER, RIVER, - HBRIDGE | BULLBIT, HBRIDGE | BULLBIT, - HBRIDGE | BULLBIT, HBRIDGE | BULLBIT, - HBRIDGE | BULLBIT }; + RIVER, RIVER, + HBRIDGE, HBRIDGE, + HBRIDGE, HBRIDGE, + HBRIDGE }; final int VDx[] = { 0, 1, 0, 0, 0, 0, 1 }; final int VDy[] = { -2, -2, -1, 0, 1, 2, 2 }; final char VBRTAB[] = { - VBRDG0 | BULLBIT, VBRDG1 | BULLBIT, - RIVER, BRWV | BULLBIT, - RIVER, VBRDG2 | BULLBIT, - VBRDG3 | BULLBIT }; + VBRDG0, VBRDG1, + RIVER, BRWV, + RIVER, VBRDG2, + VBRDG3 }; final char VBRTAB2[] = { - VBRIDGE | BULLBIT, RIVER, - VBRIDGE | BULLBIT, VBRIDGE | BULLBIT, - VBRIDGE | BULLBIT, VBRIDGE | BULLBIT, + VBRIDGE, RIVER, + VBRIDGE, VBRIDGE, + VBRIDGE, VBRIDGE, RIVER }; if (tile == BRWV) { @@ -371,6 +371,6 @@ class TerrainBehavior extends TileBehavior void doExplosion() { // clear AniRubble - city.setTile(xpos, ypos, (char)(RUBBLE + PRNG.nextInt(4) + BULLBIT)); + city.setTile(xpos, ypos, (char)(RUBBLE + PRNG.nextInt(4))); } } diff --git a/src/micropolisj/engine/TileConstants.java b/src/micropolisj/engine/TileConstants.java index bedfa10..b37303e 100644 --- a/src/micropolisj/engine/TileConstants.java +++ b/src/micropolisj/engine/TileConstants.java @@ -181,7 +181,7 @@ public class TileConstants public static final char PWRBIT = 32768; // bit 15 ... currently powered // bit 14 ... unused // bit 13 ... unused - public static final char BULLBIT = 4096; // bit 12 ... is bulldozable + // bit 12 ... unused // bit 11 ... unused // bit 10 ... unused @@ -363,12 +363,13 @@ public class TileConstants public static boolean isDozeable(int tile) { - return tile >= 0 && (tile & BULLBIT) != 0; + TileSpec spec = Tiles.get(tile & LOMASK); + return spec != null && spec.canBulldoze; } static boolean isFloodable(int tile) { - return (tile == DIRT || ((tile & BULLBIT) != 0 && isCombustible(tile))); + return (tile == DIRT || (isDozeable(tile) && isCombustible(tile))); } /** diff --git a/src/micropolisj/engine/ToolStroke.java b/src/micropolisj/engine/ToolStroke.java index fdd8a28..7c54e5e 100644 --- a/src/micropolisj/engine/ToolStroke.java +++ b/src/micropolisj/engine/ToolStroke.java @@ -242,9 +242,9 @@ public class ToolStroke int z = inPreview ? 0 : city.PRNG.nextInt(5); int tile; if (z < 4) { - tile = (WOODS2 + z) | BULLBIT; + tile = WOODS2 + z; } else { - tile = FOUNTAIN | BULLBIT; + tile = FOUNTAIN; } eff.spend(cost); @@ -304,7 +304,7 @@ public class ToolStroke adjTile |= 8; } - eff.setTile(0, 0, (RoadTable[adjTile] | BULLBIT)); + eff.setTile(0, 0, RoadTable[adjTile]); } //endif on a road tile else if (isRailDynamic(tile)) @@ -336,7 +336,7 @@ public class ToolStroke adjTile |= 8; } - eff.setTile(0, 0, (RailTable[adjTile] | BULLBIT)); + eff.setTile(0, 0, RailTable[adjTile]); } //end if on a rail tile else if (isWireDynamic(tile)) @@ -368,7 +368,7 @@ public class ToolStroke adjTile |= 8; } - eff.setTile(0, 0, (WireTable[adjTile] | BULLBIT)); + eff.setTile(0, 0, WireTable[adjTile]); } //end if on a rail tile return;