mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Add extra information to bridges about pillars.
parent
adc221f0d4
commit
9f29f9fa56
|
@ -91,6 +91,7 @@ add_files(
|
||||||
bridge_gui.cpp
|
bridge_gui.cpp
|
||||||
bridge_map.cpp
|
bridge_map.cpp
|
||||||
bridge_map.h
|
bridge_map.h
|
||||||
|
bridge_type.h
|
||||||
build_vehicle_gui.cpp
|
build_vehicle_gui.cpp
|
||||||
cachecheck.cpp
|
cachecheck.cpp
|
||||||
cargo_type.h
|
cargo_type.h
|
||||||
|
|
29
src/bridge.h
29
src/bridge.h
|
@ -13,29 +13,16 @@
|
||||||
#include "gfx_type.h"
|
#include "gfx_type.h"
|
||||||
#include "tile_cmd.h"
|
#include "tile_cmd.h"
|
||||||
#include "timer/timer_game_calendar.h"
|
#include "timer/timer_game_calendar.h"
|
||||||
|
#include "bridge_type.h"
|
||||||
/**
|
|
||||||
* This enum is related to the definition of bridge pieces,
|
|
||||||
* which is used to determine the proper sprite table to use
|
|
||||||
* while drawing a given bridge part.
|
|
||||||
*/
|
|
||||||
enum BridgePieces : uint8_t {
|
|
||||||
BRIDGE_PIECE_NORTH = 0,
|
|
||||||
BRIDGE_PIECE_SOUTH,
|
|
||||||
BRIDGE_PIECE_INNER_NORTH,
|
|
||||||
BRIDGE_PIECE_INNER_SOUTH,
|
|
||||||
BRIDGE_PIECE_MIDDLE_ODD,
|
|
||||||
BRIDGE_PIECE_MIDDLE_EVEN,
|
|
||||||
BRIDGE_PIECE_HEAD,
|
|
||||||
NUM_BRIDGE_PIECES,
|
|
||||||
};
|
|
||||||
|
|
||||||
DECLARE_INCREMENT_DECREMENT_OPERATORS(BridgePieces)
|
|
||||||
|
|
||||||
static const uint MAX_BRIDGES = 13; ///< Maximal number of available bridge specs.
|
static const uint MAX_BRIDGES = 13; ///< Maximal number of available bridge specs.
|
||||||
constexpr uint SPRITES_PER_BRIDGE_PIECE = 32; ///< Number of sprites there are per bridge piece.
|
constexpr uint SPRITES_PER_BRIDGE_PIECE = 32; ///< Number of sprites there are per bridge piece.
|
||||||
|
|
||||||
typedef uint BridgeType; ///< Bridge spec number.
|
enum class BridgeSpecCtrlFlag : uint8_t{
|
||||||
|
CustomPillarFlags,
|
||||||
|
InvalidPillarFlags,
|
||||||
|
};
|
||||||
|
using BridgeSpecCtrlFlags = EnumBitSet<BridgeSpecCtrlFlag, uint8_t>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Struct containing information about a single bridge type
|
* Struct containing information about a single bridge type
|
||||||
|
@ -52,6 +39,8 @@ struct BridgeSpec {
|
||||||
StringID transport_name[2]; ///< description of the bridge, when built for road or rail
|
StringID transport_name[2]; ///< description of the bridge, when built for road or rail
|
||||||
std::vector<std::vector<PalSpriteID>> sprite_table; ///< table of sprites for drawing the bridge
|
std::vector<std::vector<PalSpriteID>> sprite_table; ///< table of sprites for drawing the bridge
|
||||||
uint8_t flags; ///< bit 0 set: disable drawing of far pillars.
|
uint8_t flags; ///< bit 0 set: disable drawing of far pillars.
|
||||||
|
BridgeSpecCtrlFlags ctrl_flags{}; ///< control flags
|
||||||
|
std::array<std::array<BridgePillarFlags, AXIS_END>, NUM_BRIDGE_PIECES - 1> pillar_flags{}; ///< bridge pillar flags, 6 for each axis.
|
||||||
};
|
};
|
||||||
|
|
||||||
extern BridgeSpec _bridge[MAX_BRIDGES];
|
extern BridgeSpec _bridge[MAX_BRIDGES];
|
||||||
|
@ -75,6 +64,8 @@ void DrawBridgeMiddle(const TileInfo *ti);
|
||||||
CommandCost CheckBridgeAvailability(BridgeType bridge_type, uint bridge_len, DoCommandFlags flags = {});
|
CommandCost CheckBridgeAvailability(BridgeType bridge_type, uint bridge_len, DoCommandFlags flags = {});
|
||||||
int CalcBridgeLenCostFactor(int x);
|
int CalcBridgeLenCostFactor(int x);
|
||||||
|
|
||||||
|
BridgePillarFlags GetBridgeTilePillarFlags(TileIndex tile, TileIndex rampnorth, TileIndex rampsouth, BridgeType type, TransportType transport_type);
|
||||||
|
|
||||||
void ResetBridges();
|
void ResetBridges();
|
||||||
|
|
||||||
#endif /* BRIDGE_H */
|
#endif /* BRIDGE_H */
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* This file is part of OpenTTD.
|
||||||
|
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||||
|
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @file bridge_type.h Header file for bridge types. */
|
||||||
|
|
||||||
|
#ifndef BRIDGE_TYPE_H
|
||||||
|
#define BRIDGE_TYPE_H
|
||||||
|
|
||||||
|
#include "core/enum_type.hpp"
|
||||||
|
|
||||||
|
using BridgeType = uint; ///< Bridge spec number.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This enum is related to the definition of bridge pieces,
|
||||||
|
* which is used to determine the proper sprite table to use
|
||||||
|
* while drawing a given bridge part.
|
||||||
|
*/
|
||||||
|
enum BridgePieces : uint8_t {
|
||||||
|
BRIDGE_PIECE_NORTH = 0,
|
||||||
|
BRIDGE_PIECE_SOUTH,
|
||||||
|
BRIDGE_PIECE_INNER_NORTH,
|
||||||
|
BRIDGE_PIECE_INNER_SOUTH,
|
||||||
|
BRIDGE_PIECE_MIDDLE_ODD,
|
||||||
|
BRIDGE_PIECE_MIDDLE_EVEN,
|
||||||
|
BRIDGE_PIECE_HEAD,
|
||||||
|
NUM_BRIDGE_PIECES,
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLARE_INCREMENT_DECREMENT_OPERATORS(BridgePieces)
|
||||||
|
|
||||||
|
enum class BridgePillarFlag : uint8_t {
|
||||||
|
CornerW = 0,
|
||||||
|
CornerS = 1,
|
||||||
|
CornerE = 2,
|
||||||
|
CornerN = 3,
|
||||||
|
EdgeNE = 4,
|
||||||
|
EdgeSE = 5,
|
||||||
|
EdgeSW = 6,
|
||||||
|
EdgeNW = 7,
|
||||||
|
};
|
||||||
|
using BridgePillarFlags = EnumBitSet<BridgePillarFlag, uint8_t>;
|
||||||
|
|
||||||
|
static constexpr BridgePillarFlags BRIDGEPILLARFLAGS_ALL{
|
||||||
|
BridgePillarFlag::CornerW, BridgePillarFlag::CornerS, BridgePillarFlag::CornerE, BridgePillarFlag::CornerN,
|
||||||
|
BridgePillarFlag::EdgeNE, BridgePillarFlag::EdgeSE, BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNW,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* BRIDGE_TYPE_H */
|
|
@ -93,6 +93,7 @@ static ChangeInfoResult BridgeChangeInfo(uint first, uint last, int prop, ByteRe
|
||||||
MapSpriteMappingRecolour(&bridge->sprite_table[tableid][sprite]);
|
MapSpriteMappingRecolour(&bridge->sprite_table[tableid][sprite]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!bridge->ctrl_flags.Test(BridgeSpecCtrlFlag::CustomPillarFlags)) bridge->ctrl_flags.Set(BridgeSpecCtrlFlag::InvalidPillarFlags);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,6 +121,20 @@ static ChangeInfoResult BridgeChangeInfo(uint first, uint last, int prop, ByteRe
|
||||||
bridge->price = buf.ReadWord();
|
bridge->price = buf.ReadWord();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x14:
|
||||||
|
buf.ReadWord();
|
||||||
|
buf.ReadWord();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x15: // Pillars
|
||||||
|
for (uint j = 0; j != 6; ++j) {
|
||||||
|
bridge->pillar_flags[j][AXIS_X] = BridgePillarFlags{buf.ReadByte()};
|
||||||
|
bridge->pillar_flags[j][AXIS_Y] = BridgePillarFlags{buf.ReadByte()};
|
||||||
|
}
|
||||||
|
bridge->ctrl_flags.Reset(BridgeSpecCtrlFlag::InvalidPillarFlags);
|
||||||
|
bridge->ctrl_flags.Set(BridgeSpecCtrlFlag::CustomPillarFlags);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ret = CIR_UNKNOWN;
|
ret = CIR_UNKNOWN;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -745,8 +745,42 @@ static const std::span<const std::span<const PalSpriteID>> _bridge_sprite_table[
|
||||||
* @param nrl description of the rail bridge in query tool
|
* @param nrl description of the rail bridge in query tool
|
||||||
* @param nrd description of the road bridge in query tool
|
* @param nrd description of the road bridge in query tool
|
||||||
*/
|
*/
|
||||||
#define MBR(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
|
#define MBR(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd, pillars) \
|
||||||
{TimerGameCalendar::Year{y}, mnl, mxl, p, mxs, spr, plt, dsc, { nrl, nrd }, {}, 0}
|
{TimerGameCalendar::Year{y}, mnl, mxl, p, mxs, spr, plt, dsc, { nrl, nrd }, {}, 0, {}, pillars}
|
||||||
|
|
||||||
|
static constexpr BridgePillarFlags BRIDGEPILLARFLAGS_ALL_CORNERS = {
|
||||||
|
BridgePillarFlag::CornerW, BridgePillarFlag::CornerS, BridgePillarFlag::CornerE, BridgePillarFlag::CornerN
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Pillar flags for bridges which have pillars on the all corners on each piece. */
|
||||||
|
static constexpr std::array<std::array<BridgePillarFlags, AXIS_END>, NUM_BRIDGE_PIECES - 1> ALL_PILLARS = {{
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
}};
|
||||||
|
|
||||||
|
/** Pillar flags for suspension style bridges. */
|
||||||
|
static constexpr std::array<std::array<BridgePillarFlags, AXIS_END>, NUM_BRIDGE_PIECES - 1> SUSPENSION_PILLARS = {{
|
||||||
|
{{{BridgePillarFlag::CornerW, BridgePillarFlag::CornerS}, {BridgePillarFlag::CornerS, BridgePillarFlag::CornerE}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
{{{BridgePillarFlag::CornerW, BridgePillarFlag::CornerS}, {BridgePillarFlag::CornerS, BridgePillarFlag::CornerE}}},
|
||||||
|
{{BRIDGEPILLARFLAGS_ALL_CORNERS, BRIDGEPILLARFLAGS_ALL_CORNERS}},
|
||||||
|
{{{}, {}}},
|
||||||
|
}};
|
||||||
|
|
||||||
|
/** Pillar flags for cantilever style bridges. */
|
||||||
|
static constexpr std::array<std::array<BridgePillarFlags, AXIS_END>, NUM_BRIDGE_PIECES - 1> CANTILEVER_PILLARS = {{
|
||||||
|
{{{}, {}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
{{{BridgePillarFlag::CornerE, BridgePillarFlag::CornerN}, {BridgePillarFlag::CornerW, BridgePillarFlag::CornerN}}},
|
||||||
|
}};
|
||||||
|
|
||||||
const BridgeSpec _orig_bridge[] = {
|
const BridgeSpec _orig_bridge[] = {
|
||||||
/*
|
/*
|
||||||
|
@ -760,43 +794,43 @@ const BridgeSpec _orig_bridge[] = {
|
||||||
string with description name on rail name on road
|
string with description name on rail name on road
|
||||||
| | | | */
|
| | | | */
|
||||||
MBR( 0, 0, 0xFFFF, 80, 32, 0xA24, PAL_NONE,
|
MBR( 0, 0, 0xFFFF, 80, 32, 0xA24, PAL_NONE,
|
||||||
STR_BRIDGE_NAME_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN),
|
STR_BRIDGE_NAME_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN, ALL_PILLARS),
|
||||||
|
|
||||||
MBR( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
|
MBR( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
|
||||||
STR_BRIDGE_NAME_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE),
|
STR_BRIDGE_NAME_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE, ALL_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
|
MBR(1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
|
||||||
STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL),
|
STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL, ALL_PILLARS),
|
||||||
|
|
||||||
MBR( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
|
MBR( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
|
||||||
STR_BRIDGE_NAME_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE),
|
STR_BRIDGE_NAME_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE, SUSPENSION_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 3, 0xFFFF, 185, 96, 0xA22, PAL_NONE,
|
MBR(1930, 3, 0xFFFF, 185, 96, 0xA22, PAL_NONE,
|
||||||
STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL),
|
STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL, SUSPENSION_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 3, 0xFFFF, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
|
MBR(1930, 3, 0xFFFF, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
|
||||||
STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL),
|
STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL, SUSPENSION_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
|
MBR(1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
|
||||||
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL),
|
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL, CANTILEVER_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
|
MBR(1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
|
||||||
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL),
|
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL, CANTILEVER_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
|
MBR(1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
|
||||||
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL),
|
STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL, CANTILEVER_PILLARS),
|
||||||
|
|
||||||
MBR(1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
|
MBR(1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
|
||||||
STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL),
|
STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL, ALL_PILLARS),
|
||||||
|
|
||||||
MBR(1995, 2, 0xFFFF, 255, 320, 0xA28, PAL_NONE,
|
MBR(1995, 2, 0xFFFF, 255, 320, 0xA28, PAL_NONE,
|
||||||
STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL),
|
STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL, CANTILEVER_PILLARS),
|
||||||
|
|
||||||
MBR(2005, 2, 0xFFFF, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
|
MBR(2005, 2, 0xFFFF, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
|
||||||
STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL),
|
STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL, CANTILEVER_PILLARS),
|
||||||
|
|
||||||
MBR(2010, 2, 0xFFFF, 510, 608, 0xA28, PALETTE_TO_STRUCT_CONCRETE,
|
MBR(2010, 2, 0xFFFF, 510, 608, 0xA28, PALETTE_TO_STRUCT_CONCRETE,
|
||||||
STR_BRIDGE_TUBULAR_SILICON, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL)
|
STR_BRIDGE_TUBULAR_SILICON, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL, CANTILEVER_PILLARS),
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef MBR
|
#undef MBR
|
||||||
|
|
Loading…
Reference in New Issue