GRF: Add road stops variable for road info of nearby plain road tile
See: #464
This commit is contained in:
@@ -55,7 +55,7 @@ extern const GRFFeatureInfo _grf_feature_list[] = {
|
||||
GRFFeatureInfo("action0_object_edge_foundation_mode", 2),
|
||||
GRFFeatureInfo("action0_object_flood_resistant", 1),
|
||||
GRFFeatureInfo("action0_object_viewport_map_tile_type", 1),
|
||||
GRFFeatureInfo("road_stops", 4),
|
||||
GRFFeatureInfo("road_stops", 5),
|
||||
GRFFeatureInfo("new_landscape", 2),
|
||||
GRFFeatureInfo(),
|
||||
};
|
||||
@@ -147,6 +147,7 @@ extern const GRFVariableMapDefinition _grf_action2_remappable_variables[] = {
|
||||
GRFVariableMapDefinition(GSF_ROADSTOPS, 0x67, "roadstop_land_info_nearby_tiles"),
|
||||
GRFVariableMapDefinition(GSF_ROADSTOPS, 0x68, "roadstop_road_stop_info_nearby_tiles"),
|
||||
GRFVariableMapDefinition(GSF_ROADSTOPS, 0x6A, "roadstop_road_stop_grfid_nearby_tiles"),
|
||||
GRFVariableMapDefinition(GSF_ROADSTOPS, 0x6B, "roadstop_road_info_nearby_tiles"),
|
||||
GRFVariableMapDefinition(GSF_RAILTYPES, A2VRI_RAILTYPE_SIGNAL_RESTRICTION_INFO, "railtype_signal_restriction_info"),
|
||||
GRFVariableMapDefinition(GSF_RAILTYPES, A2VRI_RAILTYPE_SIGNAL_CONTEXT, "railtype_signal_context"),
|
||||
GRFVariableMapDefinition(GSF_SIGNALS, A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO, "signals_signal_restriction_info"),
|
||||
|
@@ -187,6 +187,23 @@ uint32 RoadStopScopeResolver::GetVariable(uint16 variable, uint32 parameter, Get
|
||||
return ssl.grfid;
|
||||
}
|
||||
|
||||
/* Road info of nearby tiles */
|
||||
case 0x6B: {
|
||||
if (this->tile == INVALID_TILE) return 0xFFFFFFFF;
|
||||
TileIndex nearby_tile = GetNearbyTile(parameter, this->tile);
|
||||
|
||||
if (!IsNormalRoadTile(nearby_tile)) return 0xFFFFFFFF;
|
||||
|
||||
RoadBits road = GetRoadBits(nearby_tile, RTT_ROAD);
|
||||
RoadBits tram = GetRoadBits(nearby_tile, RTT_TRAM);
|
||||
Slope tileh = GetTileSlope(nearby_tile);
|
||||
extern uint GetRoadSpriteOffset(Slope slope, RoadBits bits);
|
||||
uint road_offset = (road == 0) ? 0xFF : GetRoadSpriteOffset(tileh, road);
|
||||
uint tram_offset = (tram == 0) ? 0xFF : GetRoadSpriteOffset(tileh, tram);
|
||||
|
||||
return (tram_offset << 16) | (road_offset << 8) | (tram << 4) | (road);
|
||||
}
|
||||
|
||||
case 0xF0: return this->st == nullptr ? 0 : this->st->facilities; // facilities
|
||||
|
||||
case 0xFA: return Clamp((this->st == nullptr ? _date : this->st->build_date) - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // build date
|
||||
|
@@ -1866,7 +1866,7 @@ const byte _road_sloped_sprites[14] = {
|
||||
* @param bits Roadbits
|
||||
* @return Offset for the sprite within the spritegroup.
|
||||
*/
|
||||
static uint GetRoadSpriteOffset(Slope slope, RoadBits bits)
|
||||
uint GetRoadSpriteOffset(Slope slope, RoadBits bits)
|
||||
{
|
||||
if (slope != SLOPE_FLAT) {
|
||||
switch (slope) {
|
||||
|
@@ -1701,6 +1701,7 @@ static const NIVariable _nif_roadstops[] = {
|
||||
NIV(0x68, "road stop info of nearby tiles"),
|
||||
NIV(0x69, "information about cargo accepted in the past"),
|
||||
NIV(0x6A, "GRFID of nearby road stop tiles"),
|
||||
NIV(0x6B, "Road info of nearby plain road tiles"),
|
||||
NIV_END(),
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user