Mercurial > hg > openttd
changeset 15981:e880317a7797 draft
(svn r20669) -Codechange: trigger the whole object every 256 ticks instead of every 250 ticks
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 28 Aug 2010 19:13:20 +0000 |
parents | 0f57aae709d0 |
children | 62befe1b097c |
files | src/landscape.cpp src/newgrf_animation_type.h src/object_cmd.cpp |
diffstat | 3 files changed, 6 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/landscape.cpp +++ b/src/landscape.cpp @@ -952,7 +952,6 @@ if (_settings_game.game_creation.landscape == LT_TROPIC) CreateDesertOrRainForest(); } -void OnTick_Objects(); void OnTick_Town(); void OnTick_Trees(); void OnTick_Station(); @@ -967,6 +966,5 @@ OnTick_Station(); OnTick_Industry(); - OnTick_Objects(); OnTick_Companies(); }
--- a/src/newgrf_animation_type.h +++ b/src/newgrf_animation_type.h @@ -57,7 +57,7 @@ enum ObjectAnimationTrigger { OAT_BUILT, ///< Triggered when the object is built (for all tiles at the same time). OAT_TILELOOP, ///< Triggered in the periodic tile loop. - OAT_250_TICKS, ///< Triggered every 250 ticks (for all tiles at the same time). + OAT_256_TICKS, ///< Triggered every 256 ticks (for all tiles at the same time). }; #endif /* NEWGRF_ANIMATION_TYPE_H */
--- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -439,7 +439,11 @@ static void TileLoop_Object(TileIndex tile) { const ObjectSpec *spec = ObjectSpec::GetByTile(tile); - if (spec->flags & OBJECT_FLAG_ANIMATION) TriggerObjectTileAnimation(Object::GetByTile(tile), tile, OAT_TILELOOP, spec); + if (spec->flags & OBJECT_FLAG_ANIMATION) { + const Object *o = Object::GetByTile(tile); + TriggerObjectTileAnimation(o, tile, OAT_TILELOOP, spec); + if (o->location.tile == tile) TriggerObjectAnimation(o, OAT_256_TICKS, spec); + } if (IsTileOnWater(tile)) TileLoop_Water(tile); @@ -491,21 +495,6 @@ AnimateNewObjectTile(tile); } -/** Call the ticks on the objects. */ -void OnTick_Objects() -{ - const Object *o; - FOR_ALL_OBJECTS(o) { - /* Run 250 tick interval trigger for object animation. - * Object index is included so that triggers are not all done - * at the same time. */ - if ((_tick_counter + o->index) % 250 == 0) { - const ObjectSpec *spec = ObjectSpec::GetByTile(o->location.tile); - if (spec->flags & OBJECT_FLAG_ANIMATION) TriggerObjectAnimation(o, OAT_250_TICKS, spec); - } - } -} - /* checks, if a radio tower is within a 9x9 tile square around tile */ static bool IsRadioTowerNearby(TileIndex tile) {