Sequences
This article is actively undergoing a major edit. The user who added this notice will be listed in its edit history should you wish to contact them. |
Many of the events that happen throughout Rebirth are triggered sequences - a sound plays, then the player's FoV changes, then a light starts flashing etc. etc.
We control all of those through a set of wrappers we call Sequences, which hide a bunch of timers away and make things easier to read.
They are very useful when we need to handle a big amount of timers that should occur one after another - or in other words - a sequence.
For each sequence you need a map property to store the state - a cSequenceStatesData property e.g.
- shows viewer*
Then you create a sequence function. This will be repeatedly called until the whole sequence is over. It looks something like this:
- shows sequence example*
As you can see, Sequence_DoStepAndPause() in there actually pauses the whole sequence until some external event - in this case the callback from the voice playing code - calls SequenceStates_Resume() and asks it to continue.
To start the sequence, you just call the sequence function once with an empty argument when you want it to trigger e.g.
No need to call it every frame or anything! Once started, timers will automatically make sure that the sequence steps get followed when they need to be.
Since sequences are totally independent of each other, you could run multiple sequences in parallel, but it can get very confusing, so I wouldn’t recommend it.