Script Classes for Adventure Games/Timer Class
Author: Jeff Stephenson
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.
clientThe object which the Timer will cue: at the end of its interval.
cycleCntThe 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.
secondsThe number of seconds remaining until the Timer cue:s its client. This is used by Timers which are timing real time.
lastTimePrivate. Used by a timer timing real time.
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 cyclesCreate a timer to cue: who after cycles animation cycles.
deletePrivate. Does the actual deletion of a Timer. You should use dispose:, which sets the Timer up for a delete: by the system later on.