Difference between revisions of "Script Classes for Adventure Games/Locale Class"
Line 39: | Line 39: | ||
| | ||
− | + | ==<br /> The Region Class == | |
+ | |||
+ | A Region is an area of a game which is larger than a Room (see below) — for example a forest, island, or a planet. It is used to provide standard behavior (i.e. responses to user input) in an area of the game without having to code the behavior into each room in the region. For example in Space Quest, we might define the town of Ulence Flats and the planet of Kerona as regions. The Ulence Flats region would be used to handle the response to 'look city' while in the town, whereas the Kerona region would handle the response to 'look sky'. Regions take the place of the 'dynamic logics' of the AGI interpreter. A Region differs from a Locale (see below) in that a Region has a doit method that will be invoked every animation cycle by the game. This is where t. put any checks or code that encompasses more than one room and needs to be done each animation cycle. | ||
+ | |||
+ | {| | ||
+ | |width= "125"|In file:||game.sc | ||
+ | |- | ||
+ | |Inherits from:||Object | ||
+ | |- | ||
+ | |Inherited by:||Room | ||
+ | |} | ||
+ | |||
+ | ===<br /> Properties === | ||
+ | |||
+ | <blockquote> | ||
+ | ==== script ==== | ||
+ | <blockquote>The ID of a Script for the current room.</blockquote> | ||
+ | |||
+ | ==== number ==== | ||
+ | <blockquote>The region number. Set by the setRegions: method discussed in class Room below, it is used when we dispose the region.</blockquote> | ||
+ | |||
+ | ==== timer ==== | ||
+ | <blockquote>The ID of a Timer set to cue: this Region.</blockquote> | ||
+ | |||
+ | ==== keep ==== | ||
+ | <blockquote>Set this to TRUE if you want the Region to remain in the heap through a newRoom:, to FALSE if you want the Region unloaded.</blockquote> | ||
+ | |||
+ | ==== initialized ==== | ||
+ | <blockquote>This property is set to TRUE when the Region is sent the init: message after a setRegion: involving it has been done. The init: method is not invoked once initialized is TRUE, so a Region will only be initialized once for the Rooms which require it.</blockquote> | ||
+ | </blockquote> | ||
+ | |||
+ | ===<br /> Methods === | ||
+ | |||
+ | <blockquote> | ||
+ | ==== init: ==== | ||
+ | <blockquote>When a Region is added to the region list regions by the setRegions: method discussed in the class Room below, it is sent the init: message in case any setup is needed. The default init: method does nothing.</blockquote> | ||
+ | |||
+ | ==== doit: ==== | ||
+ | <blockquote>Each active Region is sent the doit: message in each animation cycle. The default method passes the doit: message along to the script, if there is one, but does nothing else.</blockquote> | ||
+ | |||
+ | ==== handleEvent: event ==== | ||
+ | <blockquote>The default method for this sends handleEvent: event to the Region's script, if there is one. You may handle events either in the Region itself or its script. Remember that in general you will not want to handle an event which is claimed, and that you should set the claimed property of the event to TRUE if you respond to it.</blockquote> | ||
+ | |||
+ | ==== setScript: script ==== | ||
+ | <blockquote>Set the script of the Region to script and init: it.</blockquote> | ||
+ | |||
+ | ==== cue: newState ==== | ||
+ | <blockquote>Cue this Region's script. If the optional newState is present, invoke (script changeState:newState) instead.</blockquote> | ||
+ | </blockquote> | ||
| |
Revision as of 01:15, 11 December 2015
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 Region Class
A Region is an area of a game which is larger than a Room (see below) — for example a forest, island, or a planet. It is used to provide standard behavior (i.e. responses to user input) in an area of the game without having to code the behavior into each room in the region. For example in Space Quest, we might define the town of Ulence Flats and the planet of Kerona as regions. The Ulence Flats region would be used to handle the response to 'look city' while in the town, whereas the Kerona region would handle the response to 'look sky'. Regions take the place of the 'dynamic logics' of the AGI interpreter. A Region differs from a Locale (see below) in that a Region has a doit method that will be invoked every animation cycle by the game. This is where t. put any checks or code that encompasses more than one room and needs to be done each animation cycle.
In file: | game.sc |
Inherits from: | Object |
Inherited by: | Room |
Properties
script
The ID of a Script for the current room.
number
The region number. Set by the setRegions: method discussed in class Room below, it is used when we dispose the region.
timer
The ID of a Timer set to cue: this Region.
keep
Set this to TRUE if you want the Region to remain in the heap through a newRoom:, to FALSE if you want the Region unloaded.
initialized
This property is set to TRUE when the Region is sent the init: message after a setRegion: involving it has been done. The init: method is not invoked once initialized is TRUE, so a Region will only be initialized once for the Rooms which require it.
Methods
init:
When a Region is added to the region list regions by the setRegions: method discussed in the class Room below, it is sent the init: message in case any setup is needed. The default init: method does nothing.
doit:
Each active Region is sent the doit: message in each animation cycle. The default method passes the doit: message along to the script, if there is one, but does nothing else.
handleEvent: event
The default method for this sends handleEvent: event to the Region's script, if there is one. You may handle events either in the Region itself or its script. Remember that in general you will not want to handle an event which is claimed, and that you should set the claimed property of the event to TRUE if you respond to it.
setScript: script
Set the script of the Region to script and init: it.
cue: newState
Cue this Region's script. If the optional newState is present, invoke (script changeState:newState) instead.
- Notes
< Previous: The Game Class Next: The Region Class >