Difference between revisions of "HPL3/Scripting/Scripting Guide/Timers"

From Frictional Wiki
Jump to navigation Jump to search
Line 4: Line 4:
 
Timers are set up to wait for a selected amount of time before executing code. It can be very useful if you want to wait a specified amount of time for something to happen in the level, such as intense countdown or to spawn / despawn particles in a dynamic way.  
 
Timers are set up to wait for a selected amount of time before executing code. It can be very useful if you want to wait a specified amount of time for something to happen in the level, such as intense countdown or to spawn / despawn particles in a dynamic way.  
  
== Creating Timers ==
+
==Creating Timers==
In order to add timer to a map, we need to use <code>Map_AddTimer</code>. Let's see an example:
+
In order to add timer to a map, we need to use the function <code>Map_AddTimer</code>. Let's see an example:<syntaxhighlight lang="c++">
 +
////////////////////////////
 +
// Run first time starting map
 +
void OnStart()
 +
{
 +
Map_AddTimer("JumpVeryHigh", 5.0f, "Timer_JumpVeryHigh");
 +
}
  
s
+
//...somewhere else in the code
 +
 
 +
void Timer_JumpVeryHigh(const tString&in asTimer)
 +
{
 +
MyHelper_MakeThePlayerJumpVeryHigh();
 +
}
 +
</syntaxhighlight>
 +
 
 +
===Breakdown===
 +
 
 +
* We called the function and gave it three arguments: The internal name of the timer, the time (in seconds) of the timer, and the function callback which will be called once the timer is done.
 +
* Our timer callback is called "Timer_JumpVeryHigh" and has one parameter called asTimer - this is the internal name of the timer. In our case, the internal name will be "JumpVeryHigh".
  
 
We can do more than just create a timer, we can remove timers as well, or check if a timer is already running. For example, if we enter this area, create a timer of 5 seconds. However, if a timer has already been created, we don’t need to create that timer again, right? So we can use Map_TimerExists for that.
 
We can do more than just create a timer, we can remove timers as well, or check if a timer is already running. For example, if we enter this area, create a timer of 5 seconds. However, if a timer has already been created, we don’t need to create that timer again, right? So we can use Map_TimerExists for that.
Line 13: Line 30:
 
Timers are very easy to use as you can see, and it will help us to understand the concept of Sequences in the next episode.
 
Timers are very easy to use as you can see, and it will help us to understand the concept of Sequences in the next episode.
  
== See Also ==
+
==See Also==
* [[HPL3/Scripting/Map Helper|Map Helper]]
+
 
 +
*[[HPL3/Scripting/Map Helper|Map Helper]]
  
 
{{NavBar|HPL3/Scripting/Scripting_Guide/The Update method|The Update method|HPL3/Scripting/HPL3 Scripting Guide|HPL3 Scripting Guide|HPL3/Scripting/Scripting_Guide/Sequences|Sequences}}
 
{{NavBar|HPL3/Scripting/Scripting_Guide/The Update method|The Update method|HPL3/Scripting/HPL3 Scripting Guide|HPL3 Scripting Guide|HPL3/Scripting/Scripting_Guide/Sequences|Sequences}}

Revision as of 22:18, 13 August 2020


Timers are set up to wait for a selected amount of time before executing code. It can be very useful if you want to wait a specified amount of time for something to happen in the level, such as intense countdown or to spawn / despawn particles in a dynamic way.

Creating Timers

In order to add timer to a map, we need to use the function Map_AddTimer. Let's see an example:

////////////////////////////
// Run first time starting map
void OnStart()
{
	Map_AddTimer("JumpVeryHigh", 5.0f, "Timer_JumpVeryHigh");
}

//...somewhere else in the code

void Timer_JumpVeryHigh(const tString&in asTimer)
{
	MyHelper_MakeThePlayerJumpVeryHigh();
}

Breakdown

  • We called the function and gave it three arguments: The internal name of the timer, the time (in seconds) of the timer, and the function callback which will be called once the timer is done.
  • Our timer callback is called "Timer_JumpVeryHigh" and has one parameter called asTimer - this is the internal name of the timer. In our case, the internal name will be "JumpVeryHigh".

We can do more than just create a timer, we can remove timers as well, or check if a timer is already running. For example, if we enter this area, create a timer of 5 seconds. However, if a timer has already been created, we don’t need to create that timer again, right? So we can use Map_TimerExists for that.

Timers are very easy to use as you can see, and it will help us to understand the concept of Sequences in the next episode.

See Also