summaryrefslogtreecommitdiff
path: root/src/station_cmd.cpp
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2010-01-24 20:25:28 +0000
committeryexo <yexo@openttd.org>2010-01-24 20:25:28 +0000
commit388c713f08092ed3ddf9eefa0122d9bea65450a5 (patch)
treee2dbf4ced0d2b4209fb48bf34725e8d2d14e48af /src/station_cmd.cpp
parent6ff482f515a831ec8d2f7cff258a56588c7c4d36 (diff)
downloadopenttd-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.cpp30
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);
}
}