Add railtype/signal variable to get signal side
This commit is contained in:
@@ -164,6 +164,16 @@
|
||||
Above signal context variables in one variable (all of the railtype_signal_context variable)
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td>signal_side</td><td>SIGNAL_SIDE_XXX</td>
|
||||
<td>
|
||||
<dl>
|
||||
<dt>LEFT</dt>
|
||||
<dd>Signals are on the left</dd>
|
||||
<dt>RIGHT</dt>
|
||||
<dd>Signals are on the right</dd>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3 id="roadtype-properties"><a href="https://newgrf-specs.tt-wiki.net/wiki/NML:Roadtypes#Roadtype_properties">Roadtype properties</a></h3>
|
||||
<table>
|
||||
@@ -650,6 +660,16 @@ item (FEAT_GLOBALVARS) {
|
||||
Above signal context variables in one variable (all of the signals_signal_context variable)
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td>signal_side</td><td>SIGNAL_SIDE_XXX</td>
|
||||
<td>
|
||||
<dl>
|
||||
<dt>LEFT</dt>
|
||||
<dd>Signals are on the left</dd>
|
||||
<dt>RIGHT</dt>
|
||||
<dd>Signals are on the right</dd>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td>signal_style</td><td>0 - 255</td>
|
||||
<td>
|
||||
The style ID defined using define_style for signals using a custom style, or 0 for signals using the default style
|
||||
|
@@ -753,6 +753,20 @@
|
||||
</table>
|
||||
</p>
|
||||
<p>This is indicated by the feature name: <font face="monospace">varaction2_railtype_signal_context</font>, version 1</p>
|
||||
<h4 id="railtype_signal_side">Signal side (mappable variable: railtype_signal_side)</h4>
|
||||
<p>This applies to <a href="https://newgrf-specs.tt-wiki.net/wiki/Action3/Railtypes#Signal_sprites_.280B.29">Action 2/3 - Railtype custom signal sprites</a>.<br />
|
||||
<table>
|
||||
<tr><th>Bit</th><th>Meaning</th></tr>
|
||||
<tr><td>0</td><td>
|
||||
<table>
|
||||
<tr><th>Value</th><th>Meaning</th></tr>
|
||||
<tr><td>0</td><td>Signals are on the left</td></tr>
|
||||
<tr><td>1</td><td>Signals are on the right</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
||||
</p>
|
||||
<p>This is indicated by the feature name: <font face="monospace">varaction2_railtype_signal_side</font>, version 1</p>
|
||||
<br />
|
||||
<h3 id="varaction2_object"><a href="https://newgrf-specs.tt-wiki.net/wiki/VariationalAction2/Objects">Variational Action 2 - Objects</a></h3>
|
||||
<h4 id="object_foundation_tile_slope">Tile slope after foundation applied (mappable variable: object_foundation_tile_slope)</h4>
|
||||
@@ -795,6 +809,20 @@
|
||||
</table>
|
||||
</p>
|
||||
<p>This is indicated by the feature name: <font face="monospace">varaction2_signals_signal_context</font>, version 1</p>
|
||||
<h4 id="signals_signal_side">Signal side (mappable variable: signals_signal_side)</h4>
|
||||
<p>This applies to <a href="#a3signals_custom_signal_sprites">Action 2/3 Signals (Feature 0E) custom signal sprites</a>.<br />
|
||||
<table>
|
||||
<tr><th>Bit</th><th>Meaning</th></tr>
|
||||
<tr><td>0</td><td>
|
||||
<table>
|
||||
<tr><th>Value</th><th>Meaning</th></tr>
|
||||
<tr><td>0</td><td>Signals are on the left</td></tr>
|
||||
<tr><td>1</td><td>Signals are on the right</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
||||
</p>
|
||||
<p>This is indicated by the feature name: <font face="monospace">varaction2_signals_signal_side</font>, version 1</p>
|
||||
<h4 id="signals_signal_style">Signal style (mappable variable: signals_signal_style)</h4>
|
||||
<p>This applies to <a href="#a3signals_custom_signal_sprites">Action 2/3 Signals (Feature 0E) custom signal sprites</a>.<br />
|
||||
If the signal being drawn uses a custom signal style, the value is the signal style ID as set in the <a href="#signals_define_style">signals_define_style</a> property.<br />
|
||||
|
@@ -41,6 +41,7 @@ extern const GRFFeatureInfo _grf_feature_list[] = {
|
||||
GRFFeatureInfo("action0_roadtype_extra_flags", 2),
|
||||
GRFFeatureInfo("action0_roadtype_collision_mode", 1),
|
||||
GRFFeatureInfo("varaction2_railtype_signal_context", 1),
|
||||
GRFFeatureInfo("varaction2_railtype_signal_side", 1),
|
||||
GRFFeatureInfo("action0_global_extra_station_names", 2),
|
||||
GRFFeatureInfo("action0_global_default_object_generate_amount", 1),
|
||||
GRFFeatureInfo("action0_global_allow_rocks_in_desert", 1),
|
||||
@@ -51,6 +52,7 @@ extern const GRFFeatureInfo _grf_feature_list[] = {
|
||||
GRFFeatureInfo("action0_signals_extra_aspects", 1),
|
||||
GRFFeatureInfo("action0_signals_style", 1),
|
||||
GRFFeatureInfo("varaction2_signals_signal_context", 1),
|
||||
GRFFeatureInfo("varaction2_signals_signal_side", 1),
|
||||
GRFFeatureInfo("action3_signals_custom_signal_sprites", 1),
|
||||
GRFFeatureInfo("action0_object_use_land_ground", 1),
|
||||
GRFFeatureInfo("action0_object_edge_foundation_mode", 2),
|
||||
@@ -156,9 +158,11 @@ extern const GRFVariableMapDefinition _grf_action2_remappable_variables[] = {
|
||||
GRFVariableMapDefinition(GSF_ROADSTOPS, A2VRI_ROADSTOP_INFO_NEARBY_TILES_V2, "roadstop_road_stop_info_nearby_tiles_v2"),
|
||||
GRFVariableMapDefinition(GSF_RAILTYPES, A2VRI_RAILTYPE_SIGNAL_RESTRICTION_INFO, "railtype_signal_restriction_info"),
|
||||
GRFVariableMapDefinition(GSF_RAILTYPES, A2VRI_RAILTYPE_SIGNAL_CONTEXT, "railtype_signal_context"),
|
||||
GRFVariableMapDefinition(GSF_RAILTYPES, A2VRI_RAILTYPE_SIGNAL_SIDE, "railtype_signal_side"),
|
||||
GRFVariableMapDefinition(GSF_SIGNALS, A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO, "signals_signal_restriction_info"),
|
||||
GRFVariableMapDefinition(GSF_SIGNALS, A2VRI_SIGNALS_SIGNAL_CONTEXT, "signals_signal_context"),
|
||||
GRFVariableMapDefinition(GSF_SIGNALS, A2VRI_SIGNALS_SIGNAL_STYLE, "signals_signal_style"),
|
||||
GRFVariableMapDefinition(GSF_SIGNALS, A2VRI_SIGNALS_SIGNAL_SIDE, "signals_signal_side"),
|
||||
GRFVariableMapDefinition(GSF_NEWLANDSCAPE, 0x40, "newlandscape_terrain_type"),
|
||||
GRFVariableMapDefinition(GSF_NEWLANDSCAPE, 0x41, "newlandscape_tile_slope"),
|
||||
GRFVariableMapDefinition(GSF_NEWLANDSCAPE, 0x42, "newlandscape_tile_height"),
|
||||
|
@@ -81,9 +81,11 @@ enum Action2VariableRemapIds {
|
||||
A2VRI_ROADSTOP_INFO_NEARBY_TILES_V2,
|
||||
A2VRI_RAILTYPE_SIGNAL_RESTRICTION_INFO,
|
||||
A2VRI_RAILTYPE_SIGNAL_CONTEXT,
|
||||
A2VRI_RAILTYPE_SIGNAL_SIDE,
|
||||
A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO,
|
||||
A2VRI_SIGNALS_SIGNAL_CONTEXT,
|
||||
A2VRI_SIGNALS_SIGNAL_STYLE,
|
||||
A2VRI_SIGNALS_SIGNAL_SIDE,
|
||||
};
|
||||
|
||||
enum GRFFeatureTestObservationFlag : uint8 {
|
||||
|
@@ -34,6 +34,17 @@ static uint8 MapSignalStyle(uint8 style)
|
||||
return style != 0 ? _new_signal_styles[style - 1].grf_local_id : 0;
|
||||
}
|
||||
|
||||
uint32 GetNewSignalsSideVariable()
|
||||
{
|
||||
bool side;
|
||||
switch (_settings_game.construction.train_signal_side) {
|
||||
case 0: side = false; break; // left
|
||||
case 2: side = true; break; // right
|
||||
default: side = _settings_game.vehicle.road_side != 0; break; // driving side
|
||||
}
|
||||
return side ? 1 : 0;
|
||||
}
|
||||
|
||||
/* virtual */ uint32 NewSignalsScopeResolver::GetVariable(uint16 variable, uint32 parameter, GetVariableExtra *extra) const
|
||||
{
|
||||
if (this->tile == INVALID_TILE) {
|
||||
@@ -42,6 +53,7 @@ static uint8 MapSignalStyle(uint8 style)
|
||||
case A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO: return 0;
|
||||
case A2VRI_SIGNALS_SIGNAL_CONTEXT: return this->signal_context;
|
||||
case A2VRI_SIGNALS_SIGNAL_STYLE: return MapSignalStyle(this->signal_style);
|
||||
case A2VRI_SIGNALS_SIGNAL_SIDE: return GetNewSignalsSideVariable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +64,7 @@ static uint8 MapSignalStyle(uint8 style)
|
||||
case A2VRI_SIGNALS_SIGNAL_CONTEXT:
|
||||
return GetNewSignalsSignalContext(this->signal_context, this->tile);
|
||||
case A2VRI_SIGNALS_SIGNAL_STYLE: return MapSignalStyle(this->signal_style);
|
||||
case A2VRI_SIGNALS_SIGNAL_SIDE: return GetNewSignalsSideVariable();
|
||||
}
|
||||
|
||||
DEBUG(grf, 1, "Unhandled new signals tile variable 0x%X", variable);
|
||||
|
@@ -111,4 +111,6 @@ inline uint GetNewSignalsSignalContext(CustomSignalSpriteContext signal_context,
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32 GetNewSignalsSideVariable();
|
||||
|
||||
#endif /* NEWGRF_NEWSIGNALS_H */
|
||||
|
@@ -36,6 +36,7 @@
|
||||
case 0x44: return HZB_TOWN_EDGE;
|
||||
case A2VRI_RAILTYPE_SIGNAL_RESTRICTION_INFO: return 0;
|
||||
case A2VRI_RAILTYPE_SIGNAL_CONTEXT: return this->signal_context;
|
||||
case A2VRI_RAILTYPE_SIGNAL_SIDE: return GetNewSignalsSideVariable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +60,8 @@
|
||||
return GetNewSignalsRestrictedSignalsInfo(this->prog, this->tile, 0);
|
||||
case A2VRI_RAILTYPE_SIGNAL_CONTEXT:
|
||||
return GetNewSignalsSignalContext(this->signal_context, this->tile);
|
||||
case A2VRI_RAILTYPE_SIGNAL_SIDE:
|
||||
return GetNewSignalsSideVariable();
|
||||
}
|
||||
|
||||
DEBUG(grf, 1, "Unhandled rail type tile variable 0x%X", variable);
|
||||
|
@@ -1193,6 +1193,7 @@ static const NIVariable _niv_signals[] = {
|
||||
NIV(A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO, "restriction info"),
|
||||
NIV(A2VRI_SIGNALS_SIGNAL_CONTEXT, "context"),
|
||||
NIV(A2VRI_SIGNALS_SIGNAL_STYLE, "style"),
|
||||
NIV(A2VRI_SIGNALS_SIGNAL_SIDE, "side"),
|
||||
NIV_END()
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user