diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 5b350f26e6..e9f04c95d6 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2090,9 +2090,9 @@ static ChangeInfoResult StationChangeInfo(uint first, uint last, int prop, ByteR if (statspec->tileflags.size() < 8) statspec->tileflags.resize(8); for (int j = 0; j < 8; ++j) { if (HasBit(pylons, j)) { - statspec->tileflags[j] |= StationSpec::TileFlags::Pylons; + statspec->tileflags[j].Set(StationSpec::TileFlag::Pylons); } else { - statspec->tileflags[j] &= ~StationSpec::TileFlags::Pylons; + statspec->tileflags[j].Reset(StationSpec::TileFlag::Pylons); } } break; @@ -2115,9 +2115,9 @@ static ChangeInfoResult StationChangeInfo(uint first, uint last, int prop, ByteR if (statspec->tileflags.size() < 8) statspec->tileflags.resize(8); for (int j = 0; j < 8; ++j) { if (HasBit(wires, j)) { - statspec->tileflags[j] |= StationSpec::TileFlags::NoWires; + statspec->tileflags[j].Set(StationSpec::TileFlag::NoWires); } else { - statspec->tileflags[j] &= ~StationSpec::TileFlags::NoWires; + statspec->tileflags[j].Reset(StationSpec::TileFlag::NoWires); } } break; @@ -2128,9 +2128,9 @@ static ChangeInfoResult StationChangeInfo(uint first, uint last, int prop, ByteR if (statspec->tileflags.size() < 8) statspec->tileflags.resize(8); for (int j = 0; j < 8; ++j) { if (HasBit(blocked, j)) { - statspec->tileflags[j] |= StationSpec::TileFlags::Blocked; + statspec->tileflags[j].Set(StationSpec::TileFlag::Blocked); } else { - statspec->tileflags[j] &= ~StationSpec::TileFlags::Blocked; + statspec->tileflags[j].Reset(StationSpec::TileFlag::Blocked); } } break; diff --git a/src/newgrf_station.h b/src/newgrf_station.h index 6a58001f14..3d282cfaae 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -160,12 +160,12 @@ struct StationSpec : NewGRFSpecBase { uint8_t flags; ///< Bitmask of flags, bit 0: use different sprite set; bit 1: divide cargo about by station size - enum class TileFlags : uint8_t { - None = 0, - Pylons = 1U << 0, ///< Tile should contain catenary pylons. - NoWires = 1U << 1, ///< Tile should NOT contain catenary wires. - Blocked = 1U << 2, ///< Tile is blocked to vehicles. + enum class TileFlag : uint8_t { + Pylons = 0, ///< Tile should contain catenary pylons. + NoWires = 1, ///< Tile should NOT contain catenary wires. + Blocked = 2, ///< Tile is blocked to vehicles. }; + using TileFlags = EnumBitSet; std::vector tileflags; ///< List of tile flags. AnimationInfo animation; @@ -173,7 +173,6 @@ struct StationSpec : NewGRFSpecBase { /** Custom platform layouts, keyed by platform and length combined. */ std::unordered_map> layouts; }; -DECLARE_ENUM_AS_BIT_SET(StationSpec::TileFlags); /** Class containing information relating to station classes. */ using StationClass = NewGRFClass; diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index fffbdf737d..f379b76aae 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1310,7 +1310,7 @@ static CommandCost CalculateRailStationCost(TileArea tile_area, DoCommandFlag fl static StationSpec::TileFlags GetStationTileFlags(StationGfx gfx, const StationSpec *statspec) { /* Default stations do not draw pylons under roofs (gfx >= 4) */ - if (statspec == nullptr || gfx >= statspec->tileflags.size()) return gfx < 4 ? StationSpec::TileFlags::Pylons : StationSpec::TileFlags::None; + if (statspec == nullptr || gfx >= statspec->tileflags.size()) return gfx < 4 ? StationSpec::TileFlag::Pylons : StationSpec::TileFlags{}; return statspec->tileflags[gfx]; } @@ -1322,9 +1322,9 @@ static StationSpec::TileFlags GetStationTileFlags(StationGfx gfx, const StationS void SetRailStationTileFlags(TileIndex tile, const StationSpec *statspec) { const auto flags = GetStationTileFlags(GetStationGfx(tile), statspec); - SetStationTileBlocked(tile, HasFlag(flags, StationSpec::TileFlags::Blocked)); - SetStationTileHavePylons(tile, HasFlag(flags, StationSpec::TileFlags::Pylons)); - SetStationTileHaveWires(tile, !HasFlag(flags, StationSpec::TileFlags::NoWires)); + SetStationTileBlocked(tile, flags.Test(StationSpec::TileFlag::Blocked)); + SetStationTileHavePylons(tile, flags.Test(StationSpec::TileFlag::Pylons)); + SetStationTileHaveWires(tile, !flags.Test(StationSpec::TileFlag::NoWires)); } /**