tiles: parse 'building' attribute at initialize time

rather than per-use

git-svn-id: https://micropolis.googlecode.com/svn/trunk/micropolis-java@906 d9718cc8-9f43-0410-858b-315f434eb58c
This commit is contained in:
jason@long.name 2013-12-14 22:10:30 +00:00
parent ae13414b34
commit ca55c1112c

View file

@ -24,6 +24,7 @@ public class TileSpec
public TileSpec owner; public TileSpec owner;
public int ownerOffsetX; public int ownerOffsetX;
public int ownerOffsetY; public int ownerOffsetY;
BuildingInfo buildingInfo;
Map<String,String> attributes; Map<String,String> attributes;
List<String> images; List<String> images;
@ -62,13 +63,19 @@ public class TileSpec
public BuildingInfo getBuildingInfo() public BuildingInfo getBuildingInfo()
{ {
CityDimension buildingSize = getBuildingSize(); return buildingInfo;
if (buildingSize == null) { return null; } }
private void resolveBuildingInfo(Map<String,TileSpec> tileMap)
{
String tmp = getAttribute("building");
if (tmp == null) { return; }
BuildingInfo bi = new BuildingInfo(); BuildingInfo bi = new BuildingInfo();
bi.width = buildingSize.width; String [] p2 = tmp.split("x");
bi.height = buildingSize.height; bi.width = Integer.parseInt(p2[0]);
bi.height = Integer.parseInt(p2[1]);
bi.members = new short[bi.width*bi.height]; bi.members = new short[bi.width*bi.height];
int startTile = tileNumber; int startTile = tileNumber;
@ -82,19 +89,20 @@ public class TileSpec
} }
} }
return bi; this.buildingInfo = bi;
} }
public CityDimension getBuildingSize() public CityDimension getBuildingSize()
{ {
String tmp = getAttribute("building"); if (buildingInfo != null) {
if (tmp == null) { return null; } return new CityDimension(
buildingInfo.width,
String [] p2 = tmp.split("x"); buildingInfo.height
return new CityDimension( );
Integer.parseInt(p2[0]), }
Integer.parseInt(p2[1]) else {
); return null;
}
} }
public int getDescriptionNumber() public int getDescriptionNumber()
@ -303,6 +311,8 @@ public class TileSpec
if (tmp != null) { if (tmp != null) {
this.handleBuildingPart(tmp, tileMap); this.handleBuildingPart(tmp, tileMap);
} }
resolveBuildingInfo(tileMap);
} }
private void handleBuildingPart(String text, Map<String,TileSpec> tileMap) private void handleBuildingPart(String text, Map<String,TileSpec> tileMap)