Difference between revisions of "Script Classes for Adventure Games/Timer Class"

From SCI Wiki
Jump to navigationJump to search
(Created page with "Official SCI Documentation<br /> <div align="center"> Chapter: 1 | 2...")
 
 
(9 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
Chapter:  
 
Chapter:  
 
[[Script Classes for Adventure Games/Introduction|1]] |  
 
[[Script Classes for Adventure Games/Introduction|1]] |  
[[Script Classes for Adventure Games/RootObj|2]] |  
+
[[Script Classes for Adventure Games/RootObj Class|2]] |  
[[Script Classes for Adventure Games/Object|3]] |  
+
[[Script Classes for Adventure Games/Object Class|3]] |  
[[Script Classes for Adventure Games/Collection|4]] |  
+
[[Script Classes for Adventure Games/Collection Class|4]] |  
[[Script Classes for Adventure Games/List|5]] |  
+
[[Script Classes for Adventure Games/Script Class|5]] |  
[[Script Classes for Adventure Games/Set|6]] |  
+
[[Script Classes for Adventure Games/Timer Class|6]] |  
[[Script Classes for Adventure Games/EventHandler|7]] |  
+
[[Script Classes for Adventure Games/Feature Class|7]] |  
[[Script Classes for Adventure Games/Inventory|8]] |  
+
[[Script Classes for Adventure Games/View Class|8]] |  
[[Script Classes for Adventure Games/Script|9]] |  
+
[[Script Classes for Adventure Games/PicView Class|9]] |  
[[Script Classes for Adventure Games/Timer|10]] |  
+
[[Script Classes for Adventure Games/Cycling Classes|10]] |  
[[Script Classes for Adventure Games/Feature|11]] |  
+
[[Script Classes for Adventure Games/Motion Classes|11]] |  
[[Script Classes for Adventure Games/View|12]] |  
+
[[Script Classes for Adventure Games/Avoider Class|12]] |  
[[Script Classes for Adventure Games/Prop|13]] |  
+
[[Script Classes for Adventure Games/Event Class|13]] |  
[[Script Classes for Adventure Games/Actor|14]] |
+
[[Script Classes for Adventure Games/User Class|14]]<br />
[[Script Classes for Adventure Games/Ego|15]] |
+
[[Script Classes for Adventure Games/Game Class|15]] |  
[[Script Classes for Adventure Games/PicView|16]] |
+
[[Script Classes for Adventure Games/Locale Class|16]] |  
[[Script Classes for Adventure Games/Cycle|17]] |
+
[[Script Classes for Adventure Games/Region Class|17]] |  
[[Script Classes for Adventure Games/Forward|18]] |
+
[[Script Classes for Adventure Games/Room Class|18]] |  
[[Script Classes for Adventure Games/Walk|19]] |
+
[[Script Classes for Adventure Games/Timer2 Class|19]] |  
[[Script Classes for Adventure Games/Reverse|20]] |
+
[[Script Classes for Adventure Games/InvItem Class|20]] |  
[[Script Classes for Adventure Games/CycleTo|21]] |
+
[[Script Classes for Adventure Games/Block Class|21]] |  
[[Script Classes for Adventure Games/EndLoop|22]] |
+
[[Script Classes for Adventure Games/Cage Class|22]] |  
[[Script Classes for Adventure Games/BegLoop|23]] |
+
[[Script Classes for Adventure Games/Sound Class|23]] |  
[[Script Classes for Adventure Games/Motion|24]] |
+
[[Script Classes for Adventure Games/StatusLine Class|24]] |  
[[Script Classes for Adventure Games/MoveTo|25]] |
+
[[Script Classes for Adventure Games/File Class|25]] |  
[[Script Classes for Adventure Games/Wander|26]]<br />
+
[[Script Classes for Adventure Games/Code Class|26]] |  
[[Script Classes for Adventure Games/Follow|27]] |
+
[[Script Classes for Adventure Games/Global Variables|27]] |  
[[Script Classes for Adventure Games/Chase|28]] |
 
[[Script Classes for Adventure Games/Jump|29]] |
 
[[Script Classes for Adventure Games/JumpTo|30]] |
 
[[Script Classes for Adventure Games/Orbit|31]] |
 
[[Script Classes for Adventure Games/Path|32]] |
 
[[Script Classes for Adventure Games/RelPath|33]] |
 
[[Script Classes for Adventure Games/Avoider|34]] |
 
[[Script Classes for Adventure Games/Event|35]] |
 
[[Script Classes for Adventure Games/User|36]] |
 
[[Script Classes for Adventure Games/Game|37]] |  
 
[[Script Classes for Adventure Games/Locale|38]] |  
 
[[Script Classes for Adventure Games/Region|39]] |  
 
[[Script Classes for Adventure Games/Room|40]] |  
 
[[Script Classes for Adventure Games/Timer|41]] |
 
[[Script Classes for Adventure Games/TimeOut|42]] |  
 
[[Script Classes for Adventure Games/InvItem|43]] |  
 
[[Script Classes for Adventure Games/Block|44]] |  
 
[[Script Classes for Adventure Games/Cage|45]] |  
 
[[Script Classes for Adventure Games/Sound|46]] |  
 
[[Script Classes for Adventure Games/StatusLine|47]] |  
 
[[Script Classes for Adventure Games/File|48]] |  
 
[[Script Classes for Adventure Games/Code|49]] |  
 
[[Script Classes for Adventure Games/Global Variables|50]] |  
 
 
[[Script Classes for Adventure Games/Index|Index]]
 
[[Script Classes for Adventure Games/Index|Index]]
 
</div><br />
 
</div><br />
  
<div align="center"><span style="font-size: 22pt"></span><br />
+
<div align="center"><span style="font-size: 22pt">The Timer Class</span><br />
 
''Author: [[Jeff Stephenson]]''<br />
 
''Author: [[Jeff Stephenson]]''<br />
 
''Date: 5 April 1988''</div>
 
''Date: 5 April 1988''</div>
Line 62: Line 39:
 
&nbsp;
 
&nbsp;
  
xxxxxxx body xxxxxxxx
+
==<br /> The Timer Class ==
 +
 
 +
The Timer class implements the concept of an alarm clock, allowing you to create an object which will cue: another object after a certain interval. Timers dispose: of themselves after cue:ing their client, and always check to see if their client is still present before cue:ing it.
 +
 
 +
An important concept relating to Timers is that of game time versus real time. Real time is just what it sounds like — real time in real seconds. Game time is time adjusted to the performance of the user's computer — it is the same as real time on a computer which is able to keep up with the animation demands of the game, but slows down in proportion to the speed of the user's computer when it is not able to keep up.
 +
 
 +
An example may help clarify this. Say that you're writing a game in which ego has only five seconds to leave a room before a bomb blows up. If you set this time interval as real time, it may give you just enough time to get out on your nice fast 286 or 386 machine. But on a Tandy 1000, where it takes 1/5th of a second to complete an animation cycle instead of the standard 1/10th of a second, the user will only be able to go half as far and thus has no chance of leaving the room before the bomb blows. The time interval should really have been set in game time, which would have given the user the same number of animation cycles to get out.
 +
 
 +
As a rule of thumb, time intervals which are meant to be a constraint on how long the user has to do something should be set in game time, whereas time intervals which are just meant to be a delay between two events should be real time. A user with a slow machine has no desire to watch a banner screen twice as long as one with a fast machine.
 +
 
 +
{|
 +
|width= "125"|In file:||system.sc
 +
|-
 +
|Inherits from:||Object
 +
|-
 +
|Inherited by:||none
 +
|}
 +
 
 +
===<br /> Properties ===
 +
 
 +
<blockquote>
 +
====<br /> client ====
 +
<blockquote>The object which the Timer will cue: at the end of its interval.</blockquote>
 +
 
 +
====<br /> cycleCnt ====
 +
<blockquote>The number of animation cycles remaining until the Timer cue:s its client. This is used by Timers which are timing either animation cycles or game time.</blockquote>
 +
 
 +
====<br /> seconds ====
 +
<blockquote>The number of seconds remaining until the Timer cue:s its client. This is used by Timers which are timing real time.</blockquote>
 +
 
 +
====<br /> lastTime ====
 +
<blockquote>Private. Used by a timer timing real time.</blockquote>
 +
</blockquote>
 +
 
 +
===<br /> Methods ===
 +
 
 +
<blockquote>
 +
====<br /> set: who nSec [nMin [nHrs]] ====
 +
<blockquote>Create a timer to cue: who after a specified interval in game time. Set it to cue: in nSec seconds. nMin and nHrs are optional minutes and hours until the cue:.</blockquote>
 +
 
 +
====<br /> setReal: who nSec [nMin [nHrs]] ====
 +
<blockquote>Like set:, but the time interval is in real time.</blockquote>
 +
 
 +
====<br /> setCycle: who cycles ====
 +
<blockquote>Create a timer to cue: who after cycles animation cycles.</blockquote>
 +
 
 +
====<br /> delete ====
 +
<blockquote>Private. Does the actual deletion of a Timer. You should use dispose:, which sets the Timer up for a delete: by the system later on.</blockquote>
 +
</blockquote>
  
 
&nbsp;
 
&nbsp;
Line 75: Line 100:
 
&nbsp;
 
&nbsp;
  
<span style="float: left">[[Script Classes for Adventure Games/|&lt; Previous: ]]</span>
+
<span style="float: left">[[Script Classes for Adventure Games/Script Class|&lt; Previous: The Script Class]]</span>
<span style="float: right">[[Script Classes for Adventure Games/|Next: &gt;]]</span>
+
<span style="float: right">[[Script Classes for Adventure Games/Feature Class|Next: The Feature Class &gt;]]</span>
  
 
&nbsp;
 
&nbsp;

Latest revision as of 22:15, 11 December 2015

Official SCI Documentation

Chapter: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | Index


The Timer Class

Author: Jeff Stephenson

Date: 5 April 1988

 


The Timer Class

The Timer class implements the concept of an alarm clock, allowing you to create an object which will cue: another object after a certain interval. Timers dispose: of themselves after cue:ing their client, and always check to see if their client is still present before cue:ing it.

An important concept relating to Timers is that of game time versus real time. Real time is just what it sounds like — real time in real seconds. Game time is time adjusted to the performance of the user's computer — it is the same as real time on a computer which is able to keep up with the animation demands of the game, but slows down in proportion to the speed of the user's computer when it is not able to keep up.

An example may help clarify this. Say that you're writing a game in which ego has only five seconds to leave a room before a bomb blows up. If you set this time interval as real time, it may give you just enough time to get out on your nice fast 286 or 386 machine. But on a Tandy 1000, where it takes 1/5th of a second to complete an animation cycle instead of the standard 1/10th of a second, the user will only be able to go half as far and thus has no chance of leaving the room before the bomb blows. The time interval should really have been set in game time, which would have given the user the same number of animation cycles to get out.

As a rule of thumb, time intervals which are meant to be a constraint on how long the user has to do something should be set in game time, whereas time intervals which are just meant to be a delay between two events should be real time. A user with a slow machine has no desire to watch a banner screen twice as long as one with a fast machine.

In file: system.sc
Inherits from: Object
Inherited by: none


Properties


client

The object which the Timer will cue: at the end of its interval.


cycleCnt

The number of animation cycles remaining until the Timer cue:s its client. This is used by Timers which are timing either animation cycles or game time.


seconds

The number of seconds remaining until the Timer cue:s its client. This is used by Timers which are timing real time.


lastTime

Private. Used by a timer timing real time.


Methods


set: who nSec [nMin [nHrs]]

Create a timer to cue: who after a specified interval in game time. Set it to cue: in nSec seconds. nMin and nHrs are optional minutes and hours until the cue:.


setReal: who nSec [nMin [nHrs]]

Like set:, but the time interval is in real time.


setCycle: who cycles

Create a timer to cue: who after cycles animation cycles.


delete

Private. Does the actual deletion of a Timer. You should use dispose:, which sets the Timer up for a delete: by the system later on.

 

Notes


 

Table of Contents

 

< Previous: The Script Class Next: The Feature Class >