Dedicated animated tiles
The syntax to activate animated tiles is in the ‘vars’ (variant) variable of each tile. Again, to recap, the Tiles’ ‘vars’ property denote the any number of states that the Tile can be in. For every state specified in the ‘vars’ property, there is a corresponding data related to the graphic that will be shown when the Tile (of that Layer) reaches that state.
Note * and ‘a’ and ’15’.
The * denotes that it is the default state of the Tile.
The ‘a’ denotes that instead of using another Tile ID for this state, use an animated variant.
The ’15’ denotes an alternate Tile ID which is an extra level of control in order to find the animated Sprite
Ok, so how does it evaluate which animated Sprite to use?
Through the use of Nicknames to reliably instantiate the tileset Family (ts_f) each animated Tile variant is given a unique name. The syntax template is:
What this means is this: let’s say we have the above ‘vars’ property in the Tile from the ‘objects’ tilesheet, it’s Tile ID is 10. For a give state, let’s say ‘open’, the system will look for a nickname called:
If this ts_f exists then it will be picked. This ts_f is a dedicated animated sprite for that tilesheet/tile ID/state combination.
Now, as another example, if the Layer’s Tile state becomes ‘close’, the ‘vars’ property above specifies:
In this case, it will look for a nickname called:
No ‘nominal’ state
As an aside topic, this is about whether tile states (ie TcoDict) should have a ‘nominal’ (or default) state. This was apparently not a good idea, since it is logically ambiguous. A default of any state make it impossible to know what is the converse value of it.
At any rate, I’ve made all TcoDict unambiguously have a state, and this is inherited in the C2 import of the TMX.
The behaviour before was that for each TCO, it reads the ‘layers’ property and there initialises the state. This could be tedious in the future. And since it is possible to indicate the state of a Sprite/Tile by visually looking at it (eg open door, closed box), I will do it by reading the Tile’s ‘vars’ and looking for the -1 directive. Whatever state it is, it will be written as the default state of the Tile in the TcoDict.