clockManagerobject
The clockManager object is used to keep track of subjective time. In this version we store dates and times internally as Date objects, although we recognize date/times in the form [d, h, m] defined on ClockEvents. [DEFINED IN SUBTIME EXTENSION]
clockManager
:
PreinitObject
Superclass Tree (in declaration order)
clockManager
PreinitObject
ModuleExecObject
` object`
Summary of Properties
baseDate
baseScaleFactor
curTime
eventList
lastEvent
nextEvent
nextTime
scaleFactor
turnLastCommitted
Inherited from PreinitObject
:
execBeforeMe
reverseGlobalSymbols
Inherited from ModuleExecObject
:
execAfterMe
hasInitialized_
isDoingExec_
isExecuted_
Summary of Methods
checkTime
checkTimeFmt
eventDate
eventReached
execute
formatTime
getClockTime
lastEventDate
reachCheck
slowDownTime
syncTime
Inherited from ModuleExecObject
:
_execute
classExec
Properties
baseDate
The base date (year, month, day) our game is meant to start on, expressed as a Date object. Often this doesn’t matter if we’re only interested in the time of day. By default we make it Jan 1, 2000. If gameMain.gameStartDate is defines it will instead be taken from there. [SUBTIME EXTENSION]
baseScaleFactor
The base scaling factor: this is the number of minutes per hundred turns when we have unlimited time until the next event. This number is pretty arbitrary, since we’re depending so much on the player’s uncertainty about just how long things take, and also because we’ll adjust it anyway when we’re running out of time before the next event. Even so, you might want to adjust this value up or down according to your sense of the pacing of your game.
In Mike Roberts’s implementation, the baseScaleFactor was defined as a constant value of 60. This is still the default value, but if there is a next event we take the scale factor from that event’s scaleFactor so that we can vary the pace of time according to the spacing of events if we wish. [SUBTIME EXTENSION]
curTime
the current game clock time [SUBTIME EXTENSION]
eventList
our list of clock events (we build this automatically during pre-initialization) [SUBTIME EXTENSION]
lastEvent
the most recent event that we reached [SUBTIME EXTENSION]
nextEvent
the next event we’re due to reach [SUBTIME EXTENSION]
nextTime
the next event’s game clock time [SUBTIME EXTENSION]
scaleFactor
The scaling factor to use once we have passed the last ClockEvent; this is the number of minutes per hundred turns once there are no more ClockEvents. [SUBTIME EXTENSION]
turnLastCommitted
The turn counter (Schedulable.gameClockTime) on the last turn where committed to a specific time. Each time we check the time, we look here to see how many turns have elapsed since the last time check, and we use this to choose a plausible scale for the wall-clock time change. [SUBTIME EXTENSION]
Methods
checkTime ( )
Get the current game-clock time. This returns date/time as a Date object.
Remember that our time-keeping scheme is a sort of “Schrodinger’s clock” [see footnote 1]. Between time checks, the game time clock is in a vague, fuzzy state, drifting along at an indeterminate pace from the most recent check. When this method is called, though, the clock manager is forced to commit to a particular time, because we have to give a specific answer to the question we’re being asked (“what time is it?”). As in quantum mechanics, then, the act of observation affects the quantity being observed. Therefore, you should avoid calling this routine unnecessarily; call it only when you actually have to tell the player what time it is - and don’t tell the player what time it is unless they ask, or there’s some other good reason.
If you want a string-formatted version of the time (as in ‘9:05pm’), you can call checkTimeFmt().
checkTimeFmt (fmt)
Get the current game-clock time, formatted into a string with the given format mask - see formatTime() for details on how to write a mask string.
Note that the same cautions for checkTime() apply here - calling this routine commits us to a particular time, so you should call this routine only when you’re actually ready to display a time to the player. [SUBTIME EXTENSION]
eventDate (t)
Return the date of t as a Date object. [SUBTIME EXTENSION]
eventReached (evt)
Receive notification from a clock event that an event has just occurred. (This isn’t normally called directly from game code; instead, game code should usually call the ClockEvent object’s eventReached() method.) [SUBTIME EXTENSION]
execute ( )
OVERRIDDEN
pre-initialize the clockManager [SUBTIME EXTENSION]
formatTime (t, fmt)
Get a formatted version of the given wall-clock time. The time (t) parameter can be expressed as a list, in the same format as ClockEvent.eventTime: [day,hour,minute], where ‘day’ is 1 for the first day of the game, 2 for the second, and so on. Alternatively it can be supplied as a Date object.
The format string (fmt) is specified in the same way as for the formatDate() method of the Date class (for which see the TADS 3 System Manual). [SUBTIME EXTENSION]
getClockTime (dat)
Get the time in our [d, h, m, s] format from a Date object. [SUBTIME EXTENSION]
lastEventDate ( )
Retutn the date and time of the last event as a Date object. [SUBTIME EXTENSION]
reachCheck ( )
Check each turn whether another ClockEvent has been reached. Note that this requires the events.t module to be present to work. [SUBTIME EXTENSION]
slowDownTime ( )
Compute the time remaining until the next event at which we start to slow down the clock. By default we make this half the time from the previous event to the next. Game code can override if some other value is preferred. [SUBTIME EXTENSION]
syncTime (t)
Synchronize the timeManager’s time with our time, if it exists. [SUBTIME EXTENSION]
Adv3Lite Library Reference Manual
Generated on 15/03/2023 from adv3Lite version 1.6.1