From 7f6b5d3103422714d9ffcc4a6cd01546df0f1389 Mon Sep 17 00:00:00 2001 From: Susan Date: Fri, 11 Jul 2025 04:51:17 +0100 Subject: [PATCH] Codechange: use BridgePiecePillarFlags in more places --- src/newgrf_roadstop.h | 3 ++- src/newgrf_station.h | 3 ++- src/station_cmd.cpp | 14 +++++++------- src/tunnelbridge_cmd.cpp | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/newgrf_roadstop.h b/src/newgrf_roadstop.h index d7631a5f27..ac7646a712 100644 --- a/src/newgrf_roadstop.h +++ b/src/newgrf_roadstop.h @@ -12,6 +12,7 @@ #ifndef NEWGRF_ROADSTATION_H #define NEWGRF_ROADSTATION_H +#include "bridge.h" #include "newgrf_animation_type.h" #include "newgrf_spritegroup.h" #include "newgrf_badge_type.h" @@ -146,7 +147,7 @@ struct RoadStopSpec : NewGRFSpecBase { AnimationInfo animation; uint8_t bridge_height[6]; ///< Minimum height for a bridge above, 0 for none - uint8_t bridge_disallowed_pillars[6]; ///< Disallowed pillar flags for a bridge above + BridgePiecePillarFlags bridge_disallowed_pillars[6]; ///< Disallowed pillar flags for a bridge above uint8_t build_cost_multiplier = 16; ///< Build cost multiplier per tile. uint8_t clear_cost_multiplier = 16; ///< Clear cost multiplier per tile. diff --git a/src/newgrf_station.h b/src/newgrf_station.h index 7237b8e035..08bd489acc 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -10,6 +10,7 @@ #ifndef NEWGRF_STATION_H #define NEWGRF_STATION_H +#include "bridge.h" #include "core/enum_type.hpp" #include "newgrf_animation_type.h" #include "newgrf_badge_type.h" @@ -170,7 +171,7 @@ struct StationSpec : NewGRFSpecBase { struct BridgeAboveFlags { uint8_t height = UINT8_MAX; ///< Minimum height for a bridge above, 0 for none - uint8_t disallowed_pillars = 0; ///< Disallowed pillar flags for a bridge above + BridgePiecePillarFlags disallowed_pillars = {}; ///< Disallowed pillar flags for a bridge above }; std::vector bridge_above_flags; ///< List of bridge above flags. diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index bfffd323e8..0c534019b7 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1226,7 +1226,7 @@ CommandCost IsRailStationBridgeAboveOk(TileIndex tile, const StationSpec *statsp BridgePiecePillarFlags disallowed_pillar_flags; if (statspec != nullptr && statspec->internal_flags.Test(StationSpecIntlFlag::BridgeDisallowedPillarsSet)) { /* Pillar flags set by NewGRF */ - disallowed_pillar_flags = (BridgePiecePillarFlags) statspec->GetBridgeAboveFlags(layout).disallowed_pillars; + disallowed_pillar_flags = statspec->GetBridgeAboveFlags(layout).disallowed_pillars; } else if (!statspec) { /* Default stations/waypoints */ if (layout < 8) { @@ -1243,15 +1243,15 @@ CommandCost IsRailStationBridgeAboveOk(TileIndex tile, const StationSpec *statsp disallowed_pillar_flags = st_flags[layout]; } else { - disallowed_pillar_flags = (BridgePiecePillarFlags) 0; + disallowed_pillar_flags = {}; } } else if (GetStationTileFlags(layout, statspec).Test(StationSpec::TileFlag::Blocked)) { /* Non-track station tiles */ - disallowed_pillar_flags = (BridgePiecePillarFlags) 0; + disallowed_pillar_flags = {}; } else { /* Tracked station tiles */ const Axis axis = HasBit(layout, 0) ? AXIS_Y : AXIS_X; - disallowed_pillar_flags = (BridgePiecePillarFlags) (axis == AXIS_X ? 0x50 : 0xA0); + disallowed_pillar_flags = axis == AXIS_X ? BridgePiecePillarFlags({BridgePiecePillarFlag::BPPF_EDGE_SW, BridgePiecePillarFlag::BPPF_EDGE_NE}) : BridgePiecePillarFlags({BridgePiecePillarFlag::BPPF_EDGE_NW, BridgePiecePillarFlag::BPPF_EDGE_SE}); //0x50, 0xA0 } if ((GetBridgeTilePillarFlags(tile, northern_bridge_end, southern_bridge_end, bridge_type, bridge_transport_type) & disallowed_pillar_flags).Any()) { @@ -1289,11 +1289,11 @@ CommandCost IsRoadStopBridgeAboveOK(TileIndex tile, const RoadStopSpec *spec, bo } } - BridgePiecePillarFlags disallowed_pillar_flags = (BridgePiecePillarFlags) 0; + BridgePiecePillarFlags disallowed_pillar_flags = {}; if (spec != nullptr && spec->internal_flags.Test(RoadStopSpecIntlFlag::BridgeDisallowedPillarsSet)) { - disallowed_pillar_flags = (BridgePiecePillarFlags) spec->bridge_disallowed_pillars[drive_through ? (GFX_TRUCK_BUS_DRIVETHROUGH_OFFSET + DiagDirToAxis(entrance)) : entrance]; + disallowed_pillar_flags = spec->bridge_disallowed_pillars[drive_through ? (GFX_TRUCK_BUS_DRIVETHROUGH_OFFSET + DiagDirToAxis(entrance)) : entrance]; } else if (drive_through) { - disallowed_pillar_flags = (BridgePiecePillarFlags) (DiagDirToAxis(entrance) == AXIS_X ? 0x50 : 0xA0); + disallowed_pillar_flags = DiagDirToAxis(entrance) == AXIS_X ? BridgePiecePillarFlags({BridgePiecePillarFlag::BPPF_EDGE_SW, BridgePiecePillarFlag::BPPF_EDGE_NE}) : BridgePiecePillarFlags({BridgePiecePillarFlag::BPPF_EDGE_NW, BridgePiecePillarFlag::BPPF_EDGE_SE}); //0x50, 0xA0 } else { disallowed_pillar_flags.Set((BridgePiecePillarFlags) (4 + entrance)); } diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index b542509576..a84fada4d6 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -1623,7 +1623,7 @@ BridgePiecePillarFlags GetBridgeTilePillarFlags(TileIndex tile, TileIndex northe const BridgeSpec *spec = GetBridgeSpec(bridge_type); const Axis axis = TileX(northern_bridge_end) == TileX(southern_bridge_end) ? AXIS_Y : AXIS_X; if (!spec->ctrl_flags.Test(BridgeSpecCtrlFlag::BSCF_INVALID_PILLAR_FLAGS)) { - return (BridgePiecePillarFlags) spec->pillar_flags[piece * 2 + (axis == AXIS_Y ? 1 : 0)]; + return spec->pillar_flags[piece * 2 + (axis == AXIS_Y ? 1 : 0)]; } else { uint base_offset; if (bridge_transport_type == TRANSPORT_RAIL) {