tile-names: change format of relative building offsets

This commit is contained in:
Jason Long 2013-12-14 10:14:39 -05:00
parent d3009d1b9f
commit de36ad6590

View file

@ -97,9 +97,7 @@ public class TileSpec
int mrow = bi.height >= 3 ? -1 : 0;
for (int row = 0; row < bi.height; row++) {
for (int col = 0; col < bi.width; col++) {
String n = this.name + (
(row + mrow == 0 && col + mcol == 0) ? "" :
("@"+(col+mcol)+","+(row+mrow)));
String n = this.name + makeOffsetSuffix(col+mcol, row+mrow);
bi.members[row*bi.width+col] = tileMap.get(n);
}
}
@ -108,6 +106,24 @@ public class TileSpec
this.buildingInfo = bi;
}
/**
* Generate the suffix used to identify a member tile of a building.
* E.g. for the tile directly north of the center tile, the suffix is
* "{@literal @}N1". For the tile southeast of the center tile, the
* suffix is "{@literal @}S1E1". For the center tile itself, the suffix
* is an empty string.
*/
static String makeOffsetSuffix(int dx, int dy)
{
if (dx == 0 && dy == 0) {
return "";
}
return "@" +
(dy > 0 ? ("S"+dy) : dy < 0 ? ("N"+(-dy)) : "") +
(dx > 0 ? ("E"+dx) : dx < 0 ? ("W"+(-dx)) : "");
}
public CityDimension getBuildingSize()
{
if (buildingInfo != null) {