mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r12107) -Codechange: Add and use the typedef BridgeType
This commit is contained in:
parent
d8b3526840
commit
4f0e6ab0ea
|
@ -13,6 +13,8 @@ enum {
|
||||||
MAX_BRIDGES = 13
|
MAX_BRIDGES = 13
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef uint BridgeType;
|
||||||
|
|
||||||
/** Struct containing information about a single bridge type
|
/** Struct containing information about a single bridge type
|
||||||
*/
|
*/
|
||||||
struct Bridge {
|
struct Bridge {
|
||||||
|
@ -35,7 +37,7 @@ extern Bridge _bridge[MAX_BRIDGES];
|
||||||
Foundation GetBridgeFoundation(Slope tileh, Axis axis);
|
Foundation GetBridgeFoundation(Slope tileh, Axis axis);
|
||||||
bool HasBridgeFlatRamp(Slope tileh, Axis axis);
|
bool HasBridgeFlatRamp(Slope tileh, Axis axis);
|
||||||
|
|
||||||
static inline const Bridge *GetBridgeSpec(uint i)
|
static inline const Bridge *GetBridgeSpec(BridgeType i)
|
||||||
{
|
{
|
||||||
assert(i < lengthof(_bridge));
|
assert(i < lengthof(_bridge));
|
||||||
return &_bridge[i];
|
return &_bridge[i];
|
||||||
|
@ -43,7 +45,7 @@ static inline const Bridge *GetBridgeSpec(uint i)
|
||||||
|
|
||||||
void DrawBridgeMiddle(const TileInfo *ti);
|
void DrawBridgeMiddle(const TileInfo *ti);
|
||||||
|
|
||||||
bool CheckBridge_Stuff(byte bridge_type, uint bridge_len);
|
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len);
|
||||||
int CalcBridgeLenCostFactor(int x);
|
int CalcBridgeLenCostFactor(int x);
|
||||||
|
|
||||||
void ResetBridges();
|
void ResetBridges();
|
||||||
|
|
|
@ -26,7 +26,7 @@ static struct BridgeData {
|
||||||
TileIndex start_tile;
|
TileIndex start_tile;
|
||||||
TileIndex end_tile;
|
TileIndex end_tile;
|
||||||
uint8 type;
|
uint8 type;
|
||||||
uint8 indexes[MAX_BRIDGES];
|
BridgeType indexes[MAX_BRIDGES];
|
||||||
Money costs[MAX_BRIDGES];
|
Money costs[MAX_BRIDGES];
|
||||||
|
|
||||||
BridgeData()
|
BridgeData()
|
||||||
|
@ -188,14 +188,14 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, byte bridge_type)
|
||||||
const uint tot_bridgedata_len = CalcBridgeLenCostFactor(bridge_len + 2);
|
const uint tot_bridgedata_len = CalcBridgeLenCostFactor(bridge_len + 2);
|
||||||
|
|
||||||
/* loop for all bridgetypes */
|
/* loop for all bridgetypes */
|
||||||
for (bridge_type = 0; bridge_type != MAX_BRIDGES; bridge_type++) {
|
for (BridgeType brd_type = 0; brd_type != MAX_BRIDGES; brd_type++) {
|
||||||
if (CheckBridge_Stuff(bridge_type, bridge_len)) {
|
if (CheckBridge_Stuff(brd_type, bridge_len)) {
|
||||||
/* bridge is accepted, add to list */
|
/* bridge is accepted, add to list */
|
||||||
const Bridge *b = GetBridgeSpec(bridge_type);
|
const Bridge *b = GetBridgeSpec(brd_type);
|
||||||
/* Add to terraforming & bulldozing costs the cost of the
|
/* Add to terraforming & bulldozing costs the cost of the
|
||||||
* bridge itself (not computed with DC_QUERY_COST) */
|
* bridge itself (not computed with DC_QUERY_COST) */
|
||||||
_bridgedata.costs[j] = ret.GetCost() + (((int64)tot_bridgedata_len * _price.build_bridge * b->price) >> 8);
|
_bridgedata.costs[j] = ret.GetCost() + (((int64)tot_bridgedata_len * _price.build_bridge * b->price) >> 8);
|
||||||
_bridgedata.indexes[j] = bridge_type;
|
_bridgedata.indexes[j] = brd_type;
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "direction_func.h"
|
#include "direction_func.h"
|
||||||
#include "rail_type.h"
|
#include "rail_type.h"
|
||||||
#include "road_map.h"
|
#include "road_map.h"
|
||||||
|
#include "bridge.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,7 +68,7 @@ static inline bool IsBridgeAbove(TileIndex t)
|
||||||
* @pre IsBridgeTile(t)
|
* @pre IsBridgeTile(t)
|
||||||
* @return The bridge type
|
* @return The bridge type
|
||||||
*/
|
*/
|
||||||
static inline uint GetBridgeType(TileIndex t)
|
static inline BridgeType GetBridgeType(TileIndex t)
|
||||||
{
|
{
|
||||||
assert(IsBridgeTile(t));
|
assert(IsBridgeTile(t));
|
||||||
return GB(_m[t].m2, 4, 4);
|
return GB(_m[t].m2, 4, 4);
|
||||||
|
@ -163,7 +164,7 @@ static inline void SetBridgeMiddle(TileIndex t, Axis a)
|
||||||
* @param rt the road or rail type
|
* @param rt the road or rail type
|
||||||
* @note this function should not be called directly.
|
* @note this function should not be called directly.
|
||||||
*/
|
*/
|
||||||
static inline void MakeBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, TransportType tt, uint rt)
|
static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, TransportType tt, uint rt)
|
||||||
{
|
{
|
||||||
SetTileType(t, MP_TUNNELBRIDGE);
|
SetTileType(t, MP_TUNNELBRIDGE);
|
||||||
SetTileOwner(t, o);
|
SetTileOwner(t, o);
|
||||||
|
@ -181,7 +182,7 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDir
|
||||||
* @param d the direction this ramp must be facing
|
* @param d the direction this ramp must be facing
|
||||||
* @param r the road type of the bridge
|
* @param r the road type of the bridge
|
||||||
*/
|
*/
|
||||||
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, RoadTypes r)
|
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RoadTypes r)
|
||||||
{
|
{
|
||||||
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, r);
|
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, r);
|
||||||
}
|
}
|
||||||
|
@ -194,7 +195,7 @@ static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, uint bridgetype, Dia
|
||||||
* @param d the direction this ramp must be facing
|
* @param d the direction this ramp must be facing
|
||||||
* @param r the rail type of the bridge
|
* @param r the rail type of the bridge
|
||||||
*/
|
*/
|
||||||
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, RailType r)
|
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RailType r)
|
||||||
{
|
{
|
||||||
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL, r);
|
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL, r);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ Bridge _bridge[MAX_BRIDGES];
|
||||||
void ResetBridges()
|
void ResetBridges()
|
||||||
{
|
{
|
||||||
/* First, free sprite table data */
|
/* First, free sprite table data */
|
||||||
for (uint i = 0; i < MAX_BRIDGES; i++) {
|
for (BridgeType i = 0; i < MAX_BRIDGES; i++) {
|
||||||
if (_bridge[i].sprite_table != NULL) {
|
if (_bridge[i].sprite_table != NULL) {
|
||||||
for (uint j = 0; j < 7; j++) free(_bridge[i].sprite_table[j]);
|
for (uint j = 0; j < 7; j++) free(_bridge[i].sprite_table[j]);
|
||||||
free(_bridge[i].sprite_table);
|
free(_bridge[i].sprite_table);
|
||||||
|
@ -151,7 +151,7 @@ static CommandCost CheckBridgeSlopeSouth(Axis axis, Slope *tileh, uint *z)
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckBridge_Stuff(byte bridge_type, uint bridge_len)
|
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len)
|
||||||
{
|
{
|
||||||
const Bridge *b = GetBridgeSpec(bridge_type);
|
const Bridge *b = GetBridgeSpec(bridge_type);
|
||||||
uint max; // max possible length of a bridge (with patch 100)
|
uint max; // max possible length of a bridge (with patch 100)
|
||||||
|
@ -176,7 +176,7 @@ bool CheckBridge_Stuff(byte bridge_type, uint bridge_len)
|
||||||
*/
|
*/
|
||||||
CommandCost CmdBuildBridge(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
|
CommandCost CmdBuildBridge(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
|
||||||
{
|
{
|
||||||
uint bridge_type;
|
BridgeType bridge_type;
|
||||||
RailType railtype = INVALID_RAILTYPE;
|
RailType railtype = INVALID_RAILTYPE;
|
||||||
RoadTypes roadtypes = ROADTYPES_NONE;
|
RoadTypes roadtypes = ROADTYPES_NONE;
|
||||||
uint x;
|
uint x;
|
||||||
|
@ -196,7 +196,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p
|
||||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||||
CommandCost ret;
|
CommandCost ret;
|
||||||
bool replace_bridge = false;
|
bool replace_bridge = false;
|
||||||
uint replaced_bridge_type;
|
BridgeType replaced_bridge_type;
|
||||||
TransportType transport_type;
|
TransportType transport_type;
|
||||||
|
|
||||||
/* unpack parameters */
|
/* unpack parameters */
|
||||||
|
@ -708,7 +708,7 @@ static CommandCost ClearTile_TunnelBridge(TileIndex tile, byte flags)
|
||||||
* @param y Sprite Y position of front pillar.
|
* @param y Sprite Y position of front pillar.
|
||||||
* @param z_bridge Absolute height of bridge bottom.
|
* @param z_bridge Absolute height of bridge bottom.
|
||||||
*/
|
*/
|
||||||
static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo* ti, Axis axis, uint type, int x, int y, int z_bridge)
|
static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo* ti, Axis axis, BridgeType type, int x, int y, int z_bridge)
|
||||||
{
|
{
|
||||||
SpriteID image = psid->sprite;
|
SpriteID image = psid->sprite;
|
||||||
if (image != 0) {
|
if (image != 0) {
|
||||||
|
@ -994,7 +994,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
|
||||||
TileIndex rampsouth;
|
TileIndex rampsouth;
|
||||||
Axis axis;
|
Axis axis;
|
||||||
uint piece;
|
uint piece;
|
||||||
uint type;
|
BridgeType type;
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
uint z;
|
uint z;
|
||||||
|
|
Loading…
Reference in New Issue