Add town variable for town tile X and Y coordinates
This commit is contained in:
@@ -51,6 +51,8 @@
|
||||
<tr><td>town_zone_2_radius_square_uncapped</td><td>0..4294967295</td><td>Town zone 2 radius squared (not clamped to 0xFFFF)</td><td><font face="monospace">town_uncapped_variables</font>, version 1</td></tr>
|
||||
<tr><td>town_zone_3_radius_square_uncapped</td><td>0..4294967295</td><td>Town zone 3 radius squared (not clamped to 0xFFFF)</td><td><font face="monospace">town_uncapped_variables</font>, version 1</td></tr>
|
||||
<tr><td>town_zone_4_radius_square_uncapped</td><td>0..4294967295</td><td>Town zone 4 radius squared (not clamped to 0xFFFF)</td><td><font face="monospace">town_uncapped_variables</font>, version 1</td></tr>
|
||||
<tr><td>x_coordinate</td><td>0..65535</td><td>X coordinate of town tile</td><td><font face="monospace">varaction2_towns_town_xy</font>, version 1</td></tr>
|
||||
<tr><td>y_coordinate</td><td>0..65535</td><td>Y coordinate of town tile</td><td><font face="monospace">varaction2_towns_town_xy</font>, version 1</td></tr>
|
||||
</table>
|
||||
|
||||
<h3 id="town_generic_callbacks">Town Generic Callbacks</h3>
|
||||
|
@@ -54,6 +54,7 @@
|
||||
<tr><td><a href="#town_zone_N_radius_square">town_zone_2_radius_square</a></td><td>Town zone 2 radius squared</td></tr>
|
||||
<tr><td><a href="#town_zone_N_radius_square">town_zone_3_radius_square</a></td><td>Town zone 3 radius squared</td></tr>
|
||||
<tr><td><a href="#town_zone_N_radius_square">town_zone_4_radius_square</a></td><td>Town zone 4 radius squared</td></tr>
|
||||
<tr><td><a href="#town_xy">town_xy</a></td><td>Town tile X and Y coordinates</td></tr>
|
||||
</table>
|
||||
|
||||
<h4 id="town_house_count">Number of town house (mappable variable: town_house_count)</h4>
|
||||
@@ -68,6 +69,16 @@
|
||||
<p>This is the same as <a href="https://newgrf-specs.tt-wiki.net/wiki/VariationalAction2/Towns">town variables 94, 96, 98, 9A, 9C</a>, except 32 bits and not clamped to a maximum value of 0xFFFF.</p>
|
||||
<p>This requires <font face="monospace">town_uncapped_variables</font>, version 1.</p>
|
||||
|
||||
<h4 id="town_xy">Town tile X and Y coordinates (mappable variable: town_xy)</h4>
|
||||
<table>
|
||||
<tr><th>Bits</th><th>Meaning</th></tr>
|
||||
<tr><td>0 - 15</td><td>X coordinate of town tile</td></tr>
|
||||
<tr><td>16 - 31</td><td>Y coordinate of town tile</td></tr>
|
||||
</table>
|
||||
<p>This is similar to town variable 80, except the Y part is in the upper 16 bits and the X part is in the lower 16 bits.</p>
|
||||
<p>This is the same format as <a href="https://newgrf-specs.tt-wiki.net/wiki/VariationalAction2/Houses#XY_Coordinate_of_the_building_.2847.29">house variable 47</a>.</p>
|
||||
<p>This requires <font face="monospace">varaction2_towns_town_xy</font>, version 1.</p>
|
||||
|
||||
<br />
|
||||
|
||||
<h3 id="a3town">Action 3 - Town</h3>
|
||||
|
@@ -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"),
|
||||
|
@@ -96,6 +96,7 @@ enum Action2VariableRemapIds {
|
||||
A2VRI_TOWNS_ZONE_2,
|
||||
A2VRI_TOWNS_ZONE_3,
|
||||
A2VRI_TOWNS_ZONE_4,
|
||||
A2VRI_TOWNS_XY,
|
||||
};
|
||||
|
||||
enum GRFFeatureTestObservationFlag : uint8 {
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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()
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user