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

From SCI Wiki
Jump to navigationJump to search
Line 39: Line 39:
 
 
 
 
  
xxxxxxx body xxxxxxxx
+
==<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>
  
 
&nbsp;
 
&nbsp;

Revision as of 01: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 Locale Class

Author: Jeff Stephenson

Date: 5 April 1988

 


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


 

Table of Contents

 

< Previous: The Game Class Next: The Region Class >