Add town variable for town tile X and Y coordinates

This commit is contained in:
Jonathan G Rennison
2023-04-13 21:19:53 +01:00
parent ce9480ee20
commit 64925aedf8
6 changed files with 21 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ extern const GRFFeatureInfo _grf_feature_list[] = {
GRFFeatureInfo("town_feature", 1),
GRFFeatureInfo("town_uncapped_variables", 1),
GRFFeatureInfo("town_zone_callback", 1, GFTOF_TOWN_ZONE_CALLBACK),
GRFFeatureInfo("varaction2_towns_town_xy", 1),
GRFFeatureInfo("more_varaction2_types", 1, GFTOF_MORE_VARACTION2_TYPES),
GRFFeatureInfo("multi_part_ships", 1, GFTOF_MULTI_PART_SHIPS),
GRFFeatureInfo(),
@@ -182,6 +183,7 @@ extern const GRFVariableMapDefinition _grf_action2_remappable_variables[] = {
GRFVariableMapDefinition(GSF_FAKE_TOWNS, A2VRI_TOWNS_ZONE_2, "town_zone_2_radius_square"),
GRFVariableMapDefinition(GSF_FAKE_TOWNS, A2VRI_TOWNS_ZONE_3, "town_zone_3_radius_square"),
GRFVariableMapDefinition(GSF_FAKE_TOWNS, A2VRI_TOWNS_ZONE_4, "town_zone_4_radius_square"),
GRFVariableMapDefinition(GSF_FAKE_TOWNS, A2VRI_TOWNS_XY, "town_xy"),
GRFVariableMapDefinition(GSF_NEWLANDSCAPE, 0x40, "newlandscape_terrain_type"),
GRFVariableMapDefinition(GSF_NEWLANDSCAPE, 0x41, "newlandscape_tile_slope"),
GRFVariableMapDefinition(GSF_NEWLANDSCAPE, 0x42, "newlandscape_tile_height"),

View File

@@ -96,6 +96,7 @@ enum Action2VariableRemapIds {
A2VRI_TOWNS_ZONE_2,
A2VRI_TOWNS_ZONE_3,
A2VRI_TOWNS_ZONE_4,
A2VRI_TOWNS_XY,
};
enum GRFFeatureTestObservationFlag : uint8 {

View File

@@ -119,6 +119,9 @@
case A2VRI_TOWNS_ZONE_3:
case A2VRI_TOWNS_ZONE_4:
return this->t->cache.squared_town_zone_radius[variable - A2VRI_TOWNS_ZONE_0];
case A2VRI_TOWNS_XY:
return TileY(this->t->xy) << 16 | (TileX(this->t->xy) & 0xFFFF);
}
DEBUG(grf, 1, "Unhandled town variable 0x%X", variable);
@@ -180,6 +183,7 @@
case A2VRI_TOWNS_ZONE_2:
case A2VRI_TOWNS_ZONE_3:
case A2VRI_TOWNS_ZONE_4:
case A2VRI_TOWNS_XY:
return 0;
}

View File

@@ -1639,6 +1639,7 @@ static const NIVariable _niv_towns[] = {
NIV(A2VRI_TOWNS_ZONE_2, "zone radius 2 (uncapped)"),
NIV(A2VRI_TOWNS_ZONE_3, "zone radius 3 (uncapped)"),
NIV(A2VRI_TOWNS_ZONE_4, "zone radius 4 (uncapped)"),
NIV(A2VRI_TOWNS_XY, "town tile xy"),
NIV_END()
};