mirror of https://github.com/OpenTTD/OpenTTD
Codechange: use BridgePiecePillarFlags in more places
parent
5a1a8adb3f
commit
7f6b5d3103
|
@ -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<RoadStopClassID> {
|
|||
AnimationInfo<StationAnimationTriggers> 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.
|
||||
|
|
|
@ -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<StationClassID> {
|
|||
|
||||
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<BridgeAboveFlags> bridge_above_flags; ///< List of bridge above flags.
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue