diff options
author | rubidium <rubidium@openttd.org> | 2006-12-29 09:10:44 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2006-12-29 09:10:44 +0000 |
commit | 0d459f909cefe93e20f606dca9b576881dfc4704 (patch) | |
tree | 905d42765705ac20ac00b2134ee9290fb427f3a8 /tunnelbridge_cmd.c | |
parent | 9cb975f7f077a4d6e8be2e7e5540a8a85b6ed3f9 (diff) | |
download | openttd-0d459f909cefe93e20f606dca9b576881dfc4704.tar.xz |
(svn r7607) -Codechange: remove direct map accesses for snow/desert on tunnels and bridges.
Diffstat (limited to 'tunnelbridge_cmd.c')
-rw-r--r-- | tunnelbridge_cmd.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c index a3c2ba478..7e38814c4 100644 --- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -798,7 +798,6 @@ uint GetBridgeFoundation(Slope tileh, Axis axis) static void DrawTile_TunnelBridge(TileInfo *ti) { uint32 image; - bool ice = _m[ti->tile].m4 & 0x80; if (IsTunnel(ti->tile)) { if (GetTunnelTransportType(ti->tile) == TRANSPORT_RAIL) { @@ -807,7 +806,7 @@ static void DrawTile_TunnelBridge(TileInfo *ti) image = SPR_TUNNEL_ENTRY_REAR_ROAD; } - if (ice) image += 32; + if (HasTunnelSnowOrDesert(ti->tile)) image += 32; image += GetTunnelDirection(ti->tile) * 2; DrawGroundSprite(image); @@ -817,6 +816,7 @@ static void DrawTile_TunnelBridge(TileInfo *ti) DrawBridgeMiddle(ti); } else if (IsBridge(ti->tile)) { // XXX is this necessary? int base_offset; + bool ice = HasBridgeSnowOrDesert(ti->tile); if (GetBridgeTransportType(ti->tile) == TRANSPORT_RAIL) { base_offset = GetRailTypeInfo(GetRailType(ti->tile))->bridge_offset; @@ -1109,17 +1109,26 @@ static void AnimateTile_TunnelBridge(TileIndex tile) static void TileLoop_TunnelBridge(TileIndex tile) { + bool snow_or_desert = IsTunnelTile(tile) ? HasTunnelSnowOrDesert(tile) : HasBridgeSnowOrDesert(tile); switch (_opt.landscape) { case LT_HILLY: - if (HASBIT(_m[tile].m4, 7) != (GetTileZ(tile) > _opt.snow_line)) { - TOGGLEBIT(_m[tile].m4, 7); + if (snow_or_desert != (GetTileZ(tile) > _opt.snow_line)) { + if (IsTunnelTile(tile)) { + SetTunnelSnowOrDesert(tile, !snow_or_desert); + } else { + SetBridgeSnowOrDesert(tile, !snow_or_desert); + } MarkTileDirtyByTile(tile); } break; case LT_DESERT: - if (GetTropicZone(tile) == TROPICZONE_DESERT && !(_m[tile].m4 & 0x80)) { - _m[tile].m4 |= 0x80; + if (GetTropicZone(tile) == TROPICZONE_DESERT && !snow_or_desert) { + if (IsTunnelTile(tile)) { + SetTunnelSnowOrDesert(tile, true); + } else { + SetBridgeSnowOrDesert(tile, true); + } MarkTileDirtyByTile(tile); } break; |