From f7abff5f963cddfdd134ac52ffd8e72e3ed88f0c Mon Sep 17 00:00:00 2001 From: tron Date: Mon, 14 Nov 2005 19:48:04 +0000 Subject: (svn r3181) -Bracing -Indentation -Whitespace -DeMorgan's Law -Test with NULL or 0 for non-booleans -'\0' instead of 0 for chars -Remove redundantly redundant comments (like DoFoo(); // Do foo) -Join multiple short lines with a single statement -Split single lines with multiple statements -Avoid assignments in if --- tunnelbridge_cmd.c | 249 +++++++++++++++++++++++++---------------------------- 1 file changed, 116 insertions(+), 133 deletions(-) (limited to 'tunnelbridge_cmd.c') diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c index 6ad1f79f7..ff8791f0f 100644 --- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -58,10 +58,12 @@ const Bridge orig_bridge[] = { // basically the cost delta is 1,1, 1, 2,2, 3,3,3, 4,4,4,4, 5,5,5,5,5, 6,6,6,6,6,6, 7,7,7,7,7,7,7, 8,8,8,8,8,8,8,8, int CalcBridgeLenCostFactor(int x) { - int n,r; + int n; + int r; + if (x < 2) return x; x -= 2; - for(n=0,r=2;;n++) { + for (n = 0, r = 2;; n++) { if (x <= n) return r + x * n; r += n * n; x -= n; @@ -115,79 +117,68 @@ static inline int GetBridgeType(TileIndex tile) */ static uint32 CheckBridgeSlope(uint direction, uint tileh, bool is_start_tile) { - if (!IsSteepTileh(tileh)) { // disable building on very steep slopes - - if (is_start_tile) { - /* check slope at start tile - - no extra cost - - direction X: tiles 0,12 - - direction Y: tiles 0, 9 - */ - if ((direction?0x201:0x1001) & (1 << tileh)) - return 0; - - // disallow certain start tiles to avoid certain crooked bridges - if (tileh == 2) - return CMD_ERROR; - - } - else { - /* check slope at end tile - - no extra cost - - direction X: tiles 0, 3 - - direction Y: tiles 0, 6 - */ - if ((direction?0x41:0x9) & (1 << tileh)) - return 0; - - // disallow certain end tiles to avoid certain crooked bridges - if (tileh == 8) - return CMD_ERROR; - - } - - /* disallow common start/end tiles to avoid certain crooked bridges e.g. - * start-tile: X 2,1 Y 2,4 (2 was disabled before) - * end-tile: X 8,4 Y 8,1 (8 was disabled before) - */ - if ( (tileh == 1 && (is_start_tile != (bool)direction)) || - (tileh == 4 && (is_start_tile == (bool)direction)) ) - return CMD_ERROR; + if (IsSteepTileh(tileh)) return CMD_ERROR; + + if (is_start_tile) { + /* check slope at start tile + - no extra cost + - direction X: tiles 0, 12 + - direction Y: tiles 0, 9 + */ + if ((direction ? 0x201 : 0x1001) & (1 << tileh)) return 0; + + // disallow certain start tiles to avoid certain crooked bridges + if (tileh == 2) return CMD_ERROR; + } else { + /* check slope at end tile + - no extra cost + - direction X: tiles 0, 3 + - direction Y: tiles 0, 6 + */ + if ((direction? 0x41 : 0x9) & (1 << tileh)) return 0; + + // disallow certain end tiles to avoid certain crooked bridges + if (tileh == 8) return CMD_ERROR; + } - // slope foundations - if (BRIDGE_FULL_LEVELED_FOUNDATION & (1 << tileh) || BRIDGE_PARTLY_LEVELED_FOUNDATION & (1 << tileh)) - return _price.terraform; + /* disallow common start/end tiles to avoid certain crooked bridges e.g. + * start-tile: X 2,1 Y 2,4 (2 was disabled before) + * end-tile: X 8,4 Y 8,1 (8 was disabled before) + */ + if ((tileh == 1 && is_start_tile != (bool)direction) || + (tileh == 4 && is_start_tile == (bool)direction)) { + return CMD_ERROR; } + // slope foundations + if (BRIDGE_FULL_LEVELED_FOUNDATION & (1 << tileh) || BRIDGE_PARTLY_LEVELED_FOUNDATION & (1 << tileh)) + return _price.terraform; + return CMD_ERROR; } uint32 GetBridgeLength(TileIndex begin, TileIndex end) { - int x1, y1, x2, y2; // coordinates of starting and end tiles - x1 = TileX(begin); - y1 = TileY(begin); - x2 = TileX(end); - y2 = TileY(end); + int x1 = TileX(begin); + int y1 = TileY(begin); + int x2 = TileX(end); + int y2 = TileY(end); - return abs((x2 + y2 - x1 - y1)) - 1; + return abs(x2 + y2 - x1 - y1) - 1; } -bool CheckBridge_Stuff(byte bridge_type, int bridge_len) +bool CheckBridge_Stuff(byte bridge_type, uint bridge_len) { - int max; // max possible length of a bridge (with patch 100) const Bridge *b = &_bridge[bridge_type]; + uint max; // max possible length of a bridge (with patch 100) if (bridge_type >= MAX_BRIDGES) return false; if (b->avail_year > _cur_year) return false; max = b->max_length; - if (max >= 16 && _patches.longbridges) - max = 100; + if (max >= 16 && _patches.longbridges) max = 100; - if (bridge_len < b->min_length || bridge_len > max) return false; - - return true; + return b->min_length <= bridge_len && bridge_len <= max; } /** Build a Bridge @@ -203,9 +194,10 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2) byte rail_or_road, railtype, m5; int sx,sy; TileInfo ti_start, ti_end, ti; /* OPT: only 2 of those are ever used */ - int bridge_len, odd_middle_part; + uint bridge_len; + uint odd_middle_part; uint direction; - int i; + uint i; int32 cost, terraformcost, ret; bool allow_on_slopes; @@ -233,8 +225,7 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2) /* check if valid, and make sure that (x,y) are smaller than (sx,sy) */ if (x == sx) { - if (y == sy) - return_cmd_error(STR_5008_CANNOT_START_AND_END_ON); + if (y == sy) return_cmd_error(STR_5008_CANNOT_START_AND_END_ON); direction = 1; if (y > sy) { intswap(y,sy); @@ -245,8 +236,9 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2) intswap(y,sy); intswap(x,sx); } - } else + } else { return_cmd_error(STR_500A_START_AND_END_MUST_BE_IN); + } /* set and test bridge length, availability */ bridge_len = ((sx + sy - x - y) >> 4) - 1; @@ -292,8 +284,8 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2) /* Try and clear the end landscape */ - if (CmdFailed(ret = DoCommandByTile(ti_end.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR))) - return CMD_ERROR; + ret = DoCommandByTile(ti_end.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); + if (CmdFailed(ret)) return CMD_ERROR; cost += ret; // false - end tile slope check @@ -330,18 +322,17 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2) for (i = 0; i != bridge_len; i++) { if (direction != 0) { y += 16; - } else + } else { x += 16; + } FindLandscapeHeight(&ti, x, y); _error_message = STR_5009_LEVEL_LAND_OR_WATER_REQUIRED; - if (ti.tileh != 0 && ti.z >= ti_start.z) - return CMD_ERROR; + if (ti.tileh != 0 && ti.z >= ti_start.z) return CMD_ERROR; // Find ship below - if ( ti.type == MP_WATER && !EnsureNoVehicle(ti.tile) ) - { + if (ti.type == MP_WATER && !EnsureNoVehicle(ti.tile)) { _error_message = STR_980E_SHIP_IN_THE_WAY; return CMD_ERROR; } @@ -366,8 +357,8 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2) } else { not_valid_below:; /* try and clear the middle landscape */ - if (CmdFailed(ret = DoCommandByTile(ti.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR))) - return CMD_ERROR; + ret = DoCommandByTile(ti.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); + if (CmdFailed(ret)) return CMD_ERROR; cost += ret; m5 = 0xC0; } @@ -385,21 +376,21 @@ not_valid_below:; // bridge len 5: 0 2 5 3 1 // bridge len 6: 0 2 3 2 3 1 // bridge len 7: 0 2 3 4 2 3 1 - // #0 - alwats as first, #1 - always as last (if len>1) + // #0 - always as first, #1 - always as last (if len>1) // #2,#3 are to pair in order // for odd bridges: #5 is going in the bridge middle if on even position, #4 on odd (counting from 0) - if(i==0) //first tile + if (i == 0) { // first tile m5 = 0; - else if (i==bridge_len-1) //last tile + } else if (i == bridge_len - 1) { // last tile m5 = 1; - else if(i==odd_middle_part) //we are on the middle of odd bridge: #5 on even pos, #4 on odd - m5 = 5 - (i%2); - else { + } else if (i == odd_middle_part) { // we are on the middle of odd bridge: #5 on even pos, #4 on odd + m5 = 5 - (i % 2); + } else { // generate #2 and #3 in turns [i%2==0], after the middle of odd bridge // this sequence swaps [... XOR (i>odd_middle_part)], // for even bridges XOR does not apply as odd_middle_part==bridge_len - m5 = 2 + ((i%2==0)^(i>odd_middle_part)); + m5 = 2 + ((i % 2 == 0) ^ (i > odd_middle_part)); } _m[ti.tile].m2 = (bridge_type << 4) | m5; @@ -409,7 +400,7 @@ not_valid_below:; } } - SetSignalsOnBothDir(ti_start.tile, (direction&1) ? 1 : 0); + SetSignalsOnBothDir(ti_start.tile, (direction & 1) ? 1 : 0); /* for human player that builds the bridge he gets a selection to choose from bridges (DC_QUERY_COST) It's unnecessary to execute this command every time for every bridge. So it is done only @@ -496,7 +487,7 @@ static int32 DoBuildTunnel(int x, int y, int x2, int y2, uint32 flags, uint exc_ z = ti.z; if (exc_tile != 3) { - if ( (direction ? 9U : 12U) != ti.tileh) + if ((direction ? 9U : 12U) != ti.tileh) return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION); ret = DoCommandByTile(ti.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (CmdFailed(ret)) return CMD_ERROR; @@ -504,11 +495,10 @@ static int32 DoBuildTunnel(int x, int y, int x2, int y2, uint32 flags, uint exc_ } cost += _price.build_tunnel; - for(;;) { + for (;;) { if (direction) y2-=16; else x2-=16; - if (x2 == x && y2 == y) - break; + if (x2 == x && y2 == y) break; FindLandscapeHeight(&ti, x2, y2); if (ti.z <= z) return CMD_ERROR; @@ -519,15 +509,14 @@ static int32 DoBuildTunnel(int x, int y, int x2, int y2, uint32 flags, uint exc_ cost += _price.build_tunnel; cost += (cost >> 3); - if (cost >= 400000000) - cost = 400000000; + if (cost >= 400000000) cost = 400000000; } FindLandscapeHeight(&ti, x2, y2); if (ti.z != z) return CMD_ERROR; if (exc_tile != 1) { - if ( (direction ? 6U : 3U) != ti.tileh) + if ((direction ? 6U : 3U) != ti.tileh) return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION); ret = DoCommandByTile(ti.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); @@ -559,7 +548,7 @@ static int32 DoBuildTunnel(int x, int y, int x2, int y2, uint32 flags, uint exc_ /** Build Tunnel. * @param x,y start tile coord of tunnel * @param p1 railtype, 0x200 for road tunnel - * @param p2 unused (XXX - ptr to uint that recieves end tile; wtf?????) + * @param p2 unused */ int32 CmdBuildTunnel(int x, int y, uint32 flags, uint32 p1, uint32 p2) { @@ -585,11 +574,12 @@ int32 CmdBuildTunnel(int x, int y, uint32 flags, uint32 p1, uint32 p2) if (!EnsureNoVehicle(tiorg.tile)) return CMD_ERROR; - if (!(direction=0, tiorg.tileh==12) && - !(direction++, tiorg.tileh==6) && - !(direction++, tiorg.tileh==3) && - !(direction++, tiorg.tileh==9) ) + if (!(direction=0, tiorg.tileh == 12) && + !(direction++, tiorg.tileh == 6) && + !(direction++, tiorg.tileh == 3) && + !(direction++, tiorg.tileh == 9)) { return_cmd_error(STR_500B_SITE_UNSUITABLE_FOR_TUNNEL); + } z = tiorg.z; do { @@ -600,8 +590,7 @@ int32 CmdBuildTunnel(int x, int y, uint32 flags, uint32 p1, uint32 p2) _build_tunnel_endtile = ti.tile; - if (!EnsureNoVehicle(ti.tile)) - return CMD_ERROR; + if (!EnsureNoVehicle(ti.tile)) return CMD_ERROR; if (ti.tileh != _build_tunnel_tileh[direction]) { if (CmdFailed(DoCommandByTile(ti.tile, ti.tileh & ~_build_tunnel_tileh[direction], 0, flags, CMD_TERRAFORM_LAND))) @@ -684,7 +673,7 @@ static int32 DoClearTunnel(TileIndex tile, uint32 flags) if (IsTileOwner(tile, OWNER_TOWN) && _game_mode != GM_EDITOR) ChangeTownRating(t, RATING_TUNNEL_BRIDGE_DOWN_STEP, RATING_TUNNEL_BRIDGE_MINIMUM); } - return _price.clear_tunnel * (length + 1); + return _price.clear_tunnel * (length + 1); } static TileIndex FindEdgesOfBridge(TileIndex tile, TileIndex *endtile) @@ -746,8 +735,7 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags) int32 cost; // check for vehicles under bridge - if (!EnsureNoVehicleZ(tile, TilePixelHeight(tile))) - return CMD_ERROR; + if (!EnsureNoVehicleZ(tile, TilePixelHeight(tile))) return CMD_ERROR; cost = _price.clear_water; if (flags & DC_EXEC) { _m[tile].m5 = _m[tile].m5 & ~0x38; @@ -765,8 +753,7 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags) return CMD_ERROR; } - if (!EnsureNoVehicle(tile) || !EnsureNoVehicle(endtile)) - return CMD_ERROR; + if (!EnsureNoVehicle(tile) || !EnsureNoVehicle(endtile)) return CMD_ERROR; /* Make sure there's no vehicle on the bridge Omit tile and endtile, since these are already checked, thus solving the problem @@ -775,7 +762,8 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags) tile += direction ? TileDiffXY(0, 1) : TileDiffXY(1, 0); endtile -= direction ? TileDiffXY(0, 1) : TileDiffXY(1, 0); /* Bridges on slopes might have their Z-value offset..correct this */ - if ((v = FindVehicleBetween(tile, endtile, TilePixelHeight(tile) + 8 + GetCorrectTileHeight(tile))) != NULL) { + v = FindVehicleBetween(tile, endtile, TilePixelHeight(tile) + 8 + GetCorrectTileHeight(tile)); + if (v != NULL) { VehicleInTheWayErrMsg(v); return CMD_ERROR; } @@ -811,7 +799,7 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags) if (m5 & 0x40) { if (m5 & 0x20) { static const uint16 _new_data_table[] = {0x1002, 0x1001, 0x2005, 0x200A, 0, 0, 0, 0}; - new_data = _new_data_table[((m5 & 0x18) >> 2) | (m5&1)]; + new_data = _new_data_table[((m5 & 0x18) >> 2) | (m5 & 1)]; } else { if (GB(m5, 3, 2) == 0) goto clear_it; new_data = (GetTileSlope(c, NULL) == 0) ? 0x6000 : 0x6001; @@ -846,13 +834,11 @@ static int32 ClearTile_TunnelBridge(TileIndex tile, byte flags) byte m5 = _m[tile].m5; if ((m5 & 0xF0) == 0) { - if (flags & DC_AUTO) - return_cmd_error(STR_5006_MUST_DEMOLISH_TUNNEL_FIRST); + if (flags & DC_AUTO) return_cmd_error(STR_5006_MUST_DEMOLISH_TUNNEL_FIRST); return DoClearTunnel(tile, flags); } else if (m5 & 0x80) { - if (flags & DC_AUTO) - return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST); + if (flags & DC_AUTO) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST); return DoClearBridge(tile, flags); } @@ -896,7 +882,7 @@ int32 DoConvertTunnelBridgeRail(TileIndex tile, uint totype, bool exec) MarkTileDirtyByTile(tile); } return _price.build_rail >> 1; - } else if ((_m[tile].m5&0xC6) == 0x80) { + } else if ((_m[tile].m5 & 0xC6) == 0x80) { TileIndex starttile; int32 cost; uint z = TilePixelHeight(tile); @@ -908,7 +894,8 @@ int32 DoConvertTunnelBridgeRail(TileIndex tile, uint totype, bool exec) // railway bridge starttile = tile = FindEdgesOfBridge(tile, &endtile); // Make sure there's no vehicle on the bridge - if ((v=FindVehicleBetween(tile, endtile, z)) != NULL) { + v = FindVehicleBetween(tile, endtile, z); + if (v != NULL) { VehicleInTheWayErrMsg(v); return CMD_ERROR; } @@ -929,7 +916,7 @@ int32 DoConvertTunnelBridgeRail(TileIndex tile, uint totype, bool exec) } MarkTileDirtyByTile(tile); } - cost += (_price.build_rail>>1); + cost += _price.build_rail >> 1; tile += GB(_m[tile].m5, 0, 1) ? TileDiffXY(0, 1) : TileDiffXY(1, 0); } while (tile <= endtile); @@ -1016,7 +1003,8 @@ static void DrawBridgePillars(const TileInfo *ti, int x, int y, int z) } } -uint GetBridgeFoundation(uint tileh, byte direction) { +uint GetBridgeFoundation(uint tileh, byte direction) +{ int i; // normal level sloped building (7, 11, 13, 14) if (BRIDGE_FULL_LEVELED_FOUNDATION & (1 << tileh)) @@ -1089,7 +1077,6 @@ static void DrawTile_TunnelBridge(TileInfo *ti) assert( (base_offset & 0x07) == 0x00); if (!(ti->map5 & 0x40)) { // bridge ramps - if (!(BRIDGE_NO_FOUNDATION & (1 << ti->tileh))) { // no foundations for 0, 3, 6, 9, 12 int f = GetBridgeFoundation(ti->tileh, ti->map5 & 0x1); // pass direction if (f) DrawFoundation(ti, f); @@ -1228,11 +1215,10 @@ static uint GetSlopeZ_TunnelBridge(const TileInfo* ti) // to the side of the tunnel/bridge? if (IS_INT_INSIDE(y, 5, 10+1)) { // tunnel? - if ( (ti->map5 & 0xF0) == 0) - return z; + if ((ti->map5 & 0xF0) == 0) return z; // bridge? - if ( ti->map5 & 0x80 ) { + if (ti->map5 & 0x80) { // bridge ending? if (!(ti->map5 & 0x40)) { if (BRIDGE_FULL_LEVELED_FOUNDATION & (1 << tileh)) // 7, 11, 13, 14 @@ -1241,7 +1227,6 @@ static uint GetSlopeZ_TunnelBridge(const TileInfo* ti) // no ramp for bridge ending if ((BRIDGE_PARTLY_LEVELED_FOUNDATION & (1 << tileh) || BRIDGE_NO_FOUNDATION & (1 << tileh)) && tileh != 0) { return z + 8; - } else if (!(ti->map5 & 0x20)) { // northern / southern ending // ramp return (z + (x>>1) + 1); @@ -1256,12 +1241,10 @@ static uint GetSlopeZ_TunnelBridge(const TileInfo* ti) if (tileh != 0) z += 8; // keep the same elevation because we're on the bridge? - if (_get_z_hint >= z + 8) - return _get_z_hint; + if (_get_z_hint >= z + 8) return _get_z_hint; // actually on the bridge, but not yet in the shared area. - if (!IS_INT_INSIDE(x, 5, 10+1)) - return GetBridgeHeight(ti) + 8; + if (!IS_INT_INSIDE(x, 5, 10 + 1)) return GetBridgeHeight(ti) + 8; // in the shared area, assume that we're below the bridge, cause otherwise the hint would've caught it. // if rail or road below then it means it's possibly build on slope below the bridge. @@ -1279,21 +1262,21 @@ static uint GetSlopeZ_TunnelBridge(const TileInfo* ti) } } else { // if it's a bridge middle with transport route below, then we need to compensate for build on slopes - if ( (ti->map5 & (0x80 + 0x40 + 0x20)) == (0x80 + 0x40 + 0x20)) { + if ((ti->map5 & (0x80 | 0x40 | 0x20)) == (0x80 | 0x40 | 0x20)) { uint f; if (tileh != 0) z += 8; - f = _bridge_foundations[ti->map5&1][tileh]; + f = _bridge_foundations[ti->map5 & 1][tileh]; if (IS_BYTE_INSIDE(f, 1, 15)) return z; if (f != 0) tileh = _inclined_tileh[f - 15]; } } // default case - z = ti->z; - return GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh) + z; + return GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh) + ti->z; } -static uint GetSlopeTileh_TunnelBridge(const TileInfo *ti) { +static uint GetSlopeTileh_TunnelBridge(const TileInfo* ti) +{ // not accurate, but good enough for slope graphics drawing return 0; } @@ -1363,7 +1346,7 @@ static void AnimateTile_TunnelBridge(TileIndex tile) static void TileLoop_TunnelBridge(TileIndex tile) { if (_opt.landscape == LT_HILLY) { - if ( GetTileZ(tile) > _opt.snow_line) { + if (GetTileZ(tile) > _opt.snow_line) { if (!(_m[tile].m4 & 0x80)) { _m[tile].m4 |= 0x80; MarkTileDirtyByTile(tile); @@ -1407,29 +1390,30 @@ static uint32 GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode result = 0; if (GB(m5, 1, 2) == mode) { /* Transport over the bridge is compatible */ - result = m5&1 ? 0x202 : 0x101; + result = m5 & 1 ? 0x202 : 0x101; } if (m5 & 0x40) { /* Bridge middle part */ if (!(m5 & 0x20)) { /* Clear ground or water underneath */ - if ((m5 & 0x18) != 8) + if ((m5 & 0x18) != 8) { /* Clear ground */ return result; - else - if (mode != TRANSPORT_WATER) - return result; + } else { + if (mode != TRANSPORT_WATER) return result; + } } else { /* Transport underneath */ - if (GB(m5, 3, 2) != mode) + if (GB(m5, 3, 2) != mode) { /* Incompatible transport underneath */ return result; + } } /* If we've not returned yet, there is a compatible * transport or water beneath, so we can add it to * result */ /* Why is this xor'd ? Can't it just be or'd? */ - result ^= m5&1 ? 0x101 : 0x202; + result ^= m5 & 1 ? 0x101 : 0x202; } return result; } else { @@ -1445,7 +1429,7 @@ static void ChangeTileOwner_TunnelBridge(TileIndex tile, PlayerID old_player, Pl if (new_player != OWNER_SPECTATOR) { SetTileOwner(tile, new_player); } else { - if((_m[tile].m5 & 0xC0)==0xC0) { + if ((_m[tile].m5 & 0xC0) == 0xC0) { // the stuff BELOW the middle part is owned by the deleted player. if (!(_m[tile].m5 & (1 << 4 | 1 << 3))) { // convert railway into grass. @@ -1556,9 +1540,8 @@ static uint32 VehicleEnter_TunnelBridge(Vehicle *v, TileIndex tile, int x, int y myabs(h - v->z_pos) > 2) { // high above the ground -> on the bridge /* modify speed of vehicle */ uint16 spd = _bridge[GetBridgeType(tile)].speed; - if (v->type == VEH_Road) spd<<=1; - if (spd < v->cur_speed) - v->cur_speed = spd; + if (v->type == VEH_Road) spd *= 2; + if (spd < v->cur_speed) v->cur_speed = spd; } } } -- cgit v1.2.3-54-g00ecf