summaryrefslogtreecommitdiff
path: root/tunnelbridge_cmd.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-03-11 17:06:16 +0000
committertron <tron@openttd.org>2006-03-11 17:06:16 +0000
commit86491ca2574b1f650bab7c1ede71236412d243f5 (patch)
tree2a7233a5c11752c627c41179a3f110f51af0970f /tunnelbridge_cmd.c
parent25606a2e0b4f8dccb8c86c61d9859ba33b03fed9 (diff)
downloadopenttd-86491ca2574b1f650bab7c1ede71236412d243f5.tar.xz
(svn r3820) Be a bit more strict with types: use special types instead of generic byte and don't fill arbitrary data into inappropriate types
Diffstat (limited to 'tunnelbridge_cmd.c')
-rw-r--r--tunnelbridge_cmd.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c
index b7c837e67..37576556b 100644
--- a/tunnelbridge_cmd.c
+++ b/tunnelbridge_cmd.c
@@ -195,7 +195,9 @@ bool CheckBridge_Stuff(byte bridge_type, uint bridge_len)
int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
int bridge_type;
- byte rail_or_road, railtype, m5;
+ byte m5;
+ TransportType transport;
+ RailType railtype;
int sx,sy;
TileInfo ti_start, ti_end;
TileIndex tile;
@@ -211,17 +213,17 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2)
/* unpack parameters */
bridge_type = GB(p2, 0, 8);
- railtype = GB(p2, 8, 8);
if (p1 >= MapSize()) return CMD_ERROR;
// type of bridge
- if (HASBIT(railtype, 7)) { // bit 15 of original p2 param
+ if (HASBIT(p2, 15)) {
railtype = 0;
- rail_or_road = 2;
+ transport = TRANSPORT_ROAD;
} else {
- if (!ValParamRailtype(railtype)) return CMD_ERROR;
- rail_or_road = 0;
+ if (!ValParamRailtype(GB(p2, 8, 8))) return CMD_ERROR;
+ railtype = GB(p2, 8, 8);
+ transport = TRANSPORT_RAIL;
}
sx = TileX(p1) * 16;
@@ -311,7 +313,7 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2)
MP_MAP2 | MP_MAP3LO | MP_MAPOWNER_CURRENT | MP_MAP5,
(bridge_type << 4), /* map2 */
railtype, /* map3_lo */
- 0x80 | direction | rail_or_road /* map5 */
+ 0x80 | direction | transport << 1 /* map5 */
);
/* build the end tile */
@@ -320,7 +322,7 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2)
MP_MAP2 | MP_MAP3LO | MP_MAPOWNER_CURRENT | MP_MAP5,
(bridge_type << 4), /* map2 */
railtype, /* map3_lo */
- 0x80 | 0x20 | direction | rail_or_road /* map5 */
+ 0x80 | 0x20 | direction | transport << 1 /* map5 */
);
}
@@ -374,7 +376,7 @@ not_valid_below:;
/* do middle part of bridge */
if (flags & DC_EXEC) {
- _m[tile].m5 = (byte)(m5 | direction | rail_or_road);
+ _m[tile].m5 = (byte)(m5 | direction | transport << 1);
SetTileType(tile, MP_TUNNELBRIDGE);
//bridges pieces sequence (middle parts)