Difference between revisions of "Script Classes for Adventure Games/Region Class"
(4 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/ | + | [[Script Classes for Adventure Games/Script Class|5]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/Timer Class|6]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/Feature Class|7]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/View Class|8]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/PicView Class|9]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/Cycling Classes|10]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/Motion Classes|11]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/Avoider Class|12]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/Event Class|13]] | |
− | [[Script Classes for Adventure Games/ | + | [[Script Classes for Adventure Games/User Class|14]]<br /> |
− | + | [[Script Classes for Adventure Games/Game Class|15]] | | |
− | + | [[Script Classes for Adventure Games/Locale Class|16]] | | |
− | + | [[Script Classes for Adventure Games/Region Class|17]] | | |
− | + | [[Script Classes for Adventure Games/Room Class|18]] | | |
− | + | [[Script Classes for Adventure Games/Timer2 Class|19]] | | |
− | + | [[Script Classes for Adventure Games/InvItem Class|20]] | | |
− | + | [[Script Classes for Adventure Games/Block Class|21]] | | |
− | + | [[Script Classes for Adventure Games/Cage Class|22]] | | |
− | + | [[Script Classes for Adventure Games/Sound Class|23]] | | |
− | + | [[Script Classes for Adventure Games/StatusLine Class|24]] | | |
− | + | [[Script Classes for Adventure Games/File Class|25]] | | |
− | + | [[Script Classes for Adventure Games/Code Class|26]] | | |
− | + | [[Script Classes for Adventure Games/Global Variables|27]] | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | [[Script Classes for Adventure Games/Game| | ||
− | [[Script Classes for Adventure Games/Locale| | ||
− | [[Script Classes for Adventure Games/Region| | ||
− | [[Script Classes for Adventure Games/Room| | ||
− | [[Script Classes for Adventure Games/Timer2| | ||
− | |||
− | [[Script Classes for Adventure Games/InvItem| | ||
− | [[Script Classes for Adventure Games/Block| | ||
− | [[Script Classes for Adventure Games/Cage| | ||
− | [[Script Classes for Adventure Games/Sound| | ||
− | [[Script Classes for Adventure Games/StatusLine| | ||
− | [[Script Classes for Adventure Games/File| | ||
− | [[Script Classes for Adventure Games/Code| | ||
− | [[Script Classes for Adventure Games/Global Variables| | ||
[[Script Classes for Adventure Games/Index|Index]] | [[Script Classes for Adventure Games/Index|Index]] | ||
</div><br /> | </div><br /> | ||
Line 62: | 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> | ||
| | ||
Line 75: | Line 100: | ||
| | ||
− | <span style="float: left">[[Script Classes for Adventure Games/Locale Class|< Previous: The Locale Class]]</span> | + | <!-- <span style="float: left">[[Script Classes for Adventure Games/Locale Class|< Previous: The Locale Class]]</span> --> |
− | <span style="float: right">[[Script Classes for Adventure Games/ | + | <span style="float: left">[[Script Classes for Adventure Games/Game Class|< Previous: The Game Class]]</span> |
+ | <span style="float: right">[[Script Classes for Adventure Games/Locale Class|Next: The Locale Class >]]</span> | ||
| |
Latest revision as of 01:27, 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 Locale Class >