Sequences

From Frictional Wiki
< HPL3
Revision as of 14:49, 12 August 2020 by TiMan (talk | contribs)
Jump to navigation Jump to search


Many of the events that happen inside map script files are triggered sequences. For example: A sound plays, then the player's FoV changes, then a light starts flashing, 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.

cSequenceStatesData mSequenceAlert;

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:

Sequence_Alert("");

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.

Icon tip.png Tip: Since sequences are totally independent of each other, you could run multiple sequences in parallel.

See Also



Timers