mirror of https://github.com/OpenTTD/OpenTTD
(svn r20669) -Codechange: trigger the whole object every 256 ticks instead of every 250 ticks
parent
41a80490be
commit
2d10b0f11d
|
@ -952,7 +952,6 @@ void GenerateLandscape(byte mode)
|
||||||
if (_settings_game.game_creation.landscape == LT_TROPIC) CreateDesertOrRainForest();
|
if (_settings_game.game_creation.landscape == LT_TROPIC) CreateDesertOrRainForest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnTick_Objects();
|
|
||||||
void OnTick_Town();
|
void OnTick_Town();
|
||||||
void OnTick_Trees();
|
void OnTick_Trees();
|
||||||
void OnTick_Station();
|
void OnTick_Station();
|
||||||
|
@ -967,6 +966,5 @@ void CallLandscapeTick()
|
||||||
OnTick_Station();
|
OnTick_Station();
|
||||||
OnTick_Industry();
|
OnTick_Industry();
|
||||||
|
|
||||||
OnTick_Objects();
|
|
||||||
OnTick_Companies();
|
OnTick_Companies();
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ enum AirpAnimationTrigger {
|
||||||
enum ObjectAnimationTrigger {
|
enum ObjectAnimationTrigger {
|
||||||
OAT_BUILT, ///< Triggered when the object is built (for all tiles at the same time).
|
OAT_BUILT, ///< Triggered when the object is built (for all tiles at the same time).
|
||||||
OAT_TILELOOP, ///< Triggered in the periodic tile loop.
|
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 */
|
#endif /* NEWGRF_ANIMATION_TYPE_H */
|
||||||
|
|
|
@ -439,7 +439,11 @@ static void GetTileDesc_Object(TileIndex tile, TileDesc *td)
|
||||||
static void TileLoop_Object(TileIndex tile)
|
static void TileLoop_Object(TileIndex tile)
|
||||||
{
|
{
|
||||||
const ObjectSpec *spec = ObjectSpec::GetByTile(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);
|
if (IsTileOnWater(tile)) TileLoop_Water(tile);
|
||||||
|
|
||||||
|
@ -491,21 +495,6 @@ static void AnimateTile_Object(TileIndex tile)
|
||||||
AnimateNewObjectTile(tile);
|
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 */
|
/* checks, if a radio tower is within a 9x9 tile square around tile */
|
||||||
static bool IsRadioTowerNearby(TileIndex tile)
|
static bool IsRadioTowerNearby(TileIndex tile)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue