Difference between revisions of "Callback: Animation control"
From GRFSpecs
Jump to navigationJump to searchm (Create a separate page for each callback *** existing text overwritten ***) |
m (Add detail to the information carried in variable 18) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== Animation control (1B/25/140/152/159) == |
== Animation control (1B/25/140/152/159) == |
||
− | Called periodically, in a time interval specified in property 16 (houses) or when an animation trigger happens (industry tiles and |
+ | Called periodically, in a time interval specified in property 16 (houses) or when an animation trigger happens (industry tiles, stations, airport tiles and objects). Returns the number of the frame the animation should jump to, or one of the following special values: |
{| |- |
{| |- |
||
Line 13: | Line 13: | ||
|} |
|} |
||
− | For multi-tile town buildings, [[ |
+ | * For multi-tile town buildings, [[Action0/Houses#Extra_Flags_.2819.29|property 19/bit 2]] modifies this callback slightly, see details there. |
− | + | * Except for CB 1B (houses), the low byte of variable 18 contains the reason (animation trigger) for the call. This is formatted as the number of the bit that was set in the relevant action 0 property. The other bits may contain additional information specific for the trigger/reason. |
|
+ | :{| |- |
||
+ | ! Feature !! Callback !! Animation triggers |
||
+ | |- |
||
+ | | Houses || 1B || none |
||
+ | |- |
||
+ | | Industry tiles || 25 || [[Action0/Industry_Tiles#Triggers_for_callback_25_.2811.29|Property 11]] |
||
+ | |- |
||
+ | | Stations || 140 || [[Action0/Stations#Animation_triggers_.2818.29|Property 18]] |
||
+ | |- |
||
+ | | Airport tiles || 152 || [[Action0/Airport_Tiles#Animation_triggers_via_callback_153_.2811.29|Property 11]] |
||
+ | |- |
||
+ | | Objects || 159 || [[Action0/Objects#Animation_triggers_.2813.29|Property 13]] |
||
+ | |} |
||
− | + | * Except for CB 1B (houses), the callbacks are always used when defined, no bit in the action 0 property needs to be set to activate them. |
|
− | Since TTDPatch 2.5 beta 2, |
+ | * {{ottdp| |2.5|ttdprev=beta 2}} Since TTDPatch 2.5 beta 2, these callbacks get random bits in variable 10, to allow randomizing changes. |
− | For callback 1B, the exact randomness depends on bit 2 of property 19 (synchronized callback 1B). If the callback is synchronized, the high 16 bits will be the same for all tiles and the low 16 bits will be different for each tile. Otherwise, all 32 bits will be independent for each tile. |
+ | * For callback 1B (houses), the exact randomness depends on bit 2 of [[Action0/Houses#Extra_Flags_.2819.29|property 19]] (synchronized callback 1B). If the callback is synchronized, the high 16 bits will be the same for all tiles and the low 16 bits will be different for each tile. Otherwise, all 32 bits will be independent for each tile. |
− | For |
+ | * For CB 25 (industry tiles), the randomness depends on the type of the event. For triggers that happen for the whole industry (triggers 2, 3 and 4), the high 16 bits will be the same for all tiles, while the low 16 bits will be different. For other triggers, all 32 bits are independent. |
− | For |
+ | * For CB 140 (stations), the high 16 bits are the same for all tiles triggered, while the low 16 bits are different for each tile. |
− | Like all animation callbacks, if the high byte of the result is nonzero, it will be interpreted as a sound effect number, and the corresponding sound effect will be played at the tile. |
+ | * Like all animation callbacks, if the high byte of the result is nonzero, it will be interpreted as a sound effect number, and the corresponding sound effect will be played at the tile. |
[[Category:Callbacks]] |
[[Category:Callbacks]] |
||
+ | |||
+ | Note: Every time the animation frame is changed the map tile will be refreshed, even if the selected graphics stay the same. Therefore using the animation frame as a timer should be avoided, and animation triggers should be preferred instead. |
Latest revision as of 15:19, 12 August 2024
Animation control (1B/25/140/152/159)
Called periodically, in a time interval specified in property 16 (houses) or when an animation trigger happens (industry tiles, stations, airport tiles and objects). Returns the number of the frame the animation should jump to, or one of the following special values:
Value | Meaning |
---|---|
FF | stop animation in its current frame |
FE | start animation with its current frame |
FD | leave the animation in its current state (do nothing) |
- For multi-tile town buildings, property 19/bit 2 modifies this callback slightly, see details there.
- Except for CB 1B (houses), the low byte of variable 18 contains the reason (animation trigger) for the call. This is formatted as the number of the bit that was set in the relevant action 0 property. The other bits may contain additional information specific for the trigger/reason.
Feature Callback Animation triggers Houses 1B none Industry tiles 25 Property 11 Stations 140 Property 18 Airport tiles 152 Property 11 Objects 159 Property 13
- Except for CB 1B (houses), the callbacks are always used when defined, no bit in the action 0 property needs to be set to activate them.
- 2.5 Since TTDPatch 2.5 beta 2, these callbacks get random bits in variable 10, to allow randomizing changes.
- For callback 1B (houses), the exact randomness depends on bit 2 of property 19 (synchronized callback 1B). If the callback is synchronized, the high 16 bits will be the same for all tiles and the low 16 bits will be different for each tile. Otherwise, all 32 bits will be independent for each tile.
- For CB 25 (industry tiles), the randomness depends on the type of the event. For triggers that happen for the whole industry (triggers 2, 3 and 4), the high 16 bits will be the same for all tiles, while the low 16 bits will be different. For other triggers, all 32 bits are independent.
- For CB 140 (stations), the high 16 bits are the same for all tiles triggered, while the low 16 bits are different for each tile.
- Like all animation callbacks, if the high byte of the result is nonzero, it will be interpreted as a sound effect number, and the corresponding sound effect will be played at the tile.
Note: Every time the animation frame is changed the map tile will be refreshed, even if the selected graphics stay the same. Therefore using the animation frame as a timer should be avoided, and animation triggers should be preferred instead.