diff options
author | yexo <yexo@openttd.org> | 2010-01-24 20:25:28 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2010-01-24 20:25:28 +0000 |
commit | 388c713f08092ed3ddf9eefa0122d9bea65450a5 (patch) | |
tree | e2dbf4ced0d2b4209fb48bf34725e8d2d14e48af /src/station_cmd.cpp | |
parent | 6ff482f515a831ec8d2f7cff258a56588c7c4d36 (diff) | |
download | openttd-388c713f08092ed3ddf9eefa0122d9bea65450a5.tar.xz |
(svn r18912) -Codechange: free up a bunch of airporttile ids by using the tile animation frame
Diffstat (limited to 'src/station_cmd.cpp')
-rw-r--r-- | src/station_cmd.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 215bb5b1a..2605595b7 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -46,6 +46,7 @@ #include "core/random_func.hpp" #include "company_base.h" #include "newgrf.h" +#include "table/airporttile_ids.h" #include "table/strings.h" @@ -2345,6 +2346,27 @@ static void DrawTile_Station(TileInfo *ti) total_offset = 0; custom_ground_offset = 0; } + + if (IsAirport(ti->tile)) { + switch (GetStationGfx(ti->tile)) { + case APT_RADAR_GRASS_FENCE_SW: + t = &_station_display_datas_airport_radar_grass_fence_sw[GetStationAnimationFrame(ti->tile)]; + break; + case APT_GRASS_FENCE_NE_FLAG: + t = &_station_display_datas_airport_flag_grass_fence_ne[GetStationAnimationFrame(ti->tile)]; + break; + case APT_RADAR_FENCE_SW: + t = &_station_display_datas_airport_radar_fence_sw[GetStationAnimationFrame(ti->tile)]; + break; + case APT_RADAR_FENCE_NE: + t = &_station_display_datas_airport_radar_fence_ne[GetStationAnimationFrame(ti->tile)]; + break; + case APT_GRASS_FENCE_NE_FLAG_2: + t = &_station_display_datas_airport_flag_grass_fence_ne_2[GetStationAnimationFrame(ti->tile)]; + break; + } + } + Owner owner = GetTileOwner(ti->tile); PaletteID palette; @@ -2602,7 +2624,7 @@ static void TileLoop_Station(TileIndex tile) * hardcoded.....not good */ switch (GetStationType(tile)) { case STATION_AIRPORT: - if (AirportTileSpec::Get(GetStationGfx(tile))->anim_next != AIRPORTTILE_NOANIM) { + if (AirportTileSpec::Get(GetStationGfx(tile))->animation_info != 0xFFFF) { AddAnimatedTile(tile); } break; @@ -2630,8 +2652,10 @@ static void AnimateTile_Station(TileIndex tile) if (IsAirport(tile)) { const AirportTileSpec *ats = AirportTileSpec::Get(GetStationGfx(tile)); uint16 mask = (1 << ats->animation_speed) - 1; - if (ats->anim_next != AIRPORTTILE_NOANIM && (_tick_counter & mask) == 0) { - SetStationGfx(tile, ats->anim_next); + if (ats->animation_info != 0xFFFF && (_tick_counter & mask) == 0) { + uint8 next_frame = GetStationAnimationFrame(tile) + 1; + if (next_frame >= GB(ats->animation_info, 0, 8)) next_frame = 0; + SetStationAnimationFrame(tile, next_frame); MarkTileDirtyByTile(tile); } } |