# HG changeset patch # User ludde # Date 1121444970 0 # Node ID d2872c468206bb4b0fe4b6ef05b8ae089ad7837c # Parent c889fcc763981f085e26b70c88cecc8f36774f95 (svn r2574) Fix: AnimatedTile leak in town_cmd.c (this one has probably been here since day 1) diff -r c889fcc76398 -r d2872c468206 town_cmd.c --- a/town_cmd.c Fri Jul 15 15:09:52 2005 +0000 +++ b/town_cmd.c Fri Jul 15 16:29:30 2005 +0000 @@ -71,14 +71,14 @@ #include "table/town_land.h" -static void TownDrawTileProc1(TileInfo *ti) +static void TownDrawHouseLift(TileInfo *ti) { AddChildSpriteScreen(0x5A3, 0xE, 0x3C - (_m[ti->tile].owner&0x7F)); } typedef void TownDrawTileProc(TileInfo *ti); static TownDrawTileProc * const _town_draw_tile_procs[1] = { - TownDrawTileProc1 + TownDrawHouseLift }; @@ -159,7 +159,14 @@ if (_tick_counter & 3) return; - assert(_m[tile].m4 == 4 || _m[tile].m4 == 5); + // If the house is not one with a lift anymore, then stop this animating. + // Not exactly sure when this happens, but probably when a house changes. + // Before this was just a return...so it'd leak animated tiles.. + // That bug seems to have been here since day 1?? + if (!(_housetype_extra_flags[_m[tile].m4] & 0x20)) { + DeleteAnimatedTile(tile); + return; + } if (!((old=_m[tile].owner)&0x80)) { _m[tile].owner |= 0x80; @@ -2085,5 +2092,3 @@ const ChunkHandler _town_chunk_handlers[] = { { 'CITY', Save_TOWN, Load_TOWN, CH_ARRAY | CH_LAST}, }; - -