Feature (of Object)

class Feature

Defined in Feature.sc.

Feature forms the base class for interactable items in the game. Actor, Prop and View all extend from this class. It can also be used on its own, generally for attaching interactions to static portions of the background.

Feature has support for displaying messages when the player performs actions (verbs) by clicking on it. It will also optionally direct the ego to approach the feature.

Example usage:

; Define a red plant that displays messages associated with the noun N_PLANT
; when the use clicks on the white control color on the pic background.
; The (x, y) coordinates are used to identify the "center of interest" of the feature,
; which determines the direction in which the ego should face when interacting with it.
(instance redPlant of Feature
        (properties
                x 217
                y 121
                noun N_PLANT
                onMeCheck ctlWHITE
        )
)

There are two main ways to identify the bounds of a feature: control colors, and polygons. Even if onMeCheck has been set in the Feature declaration, this needs to be done with the setOnMeCheck() method.

You can also indicate for which verbs the ego should approach the feature (as opposed to just facing it). This is done with the approachVerbs() method.

Example initialization:

(redPlanet
        approachVerbs: V_DO V_LOOK
        setOnMeCheck: omcCOLORS ctlWHITE
        init:
)

Subclasses: View.

class diagram

Properties

Inherited from Object:

Property Description
name  

Defined in Feature:

Property Description
x “center of interest” for the Feature.
y  
z  
heading  
noun Message noun associated with the Feature.
case Message case associated with the Feature.
modNum  
nsTop  
nsLeft  
nsBottom  
nsRight  
sightAngle  
actions  
onMeCheck omcDISABLE, omcCOLORS or omcPOLYGON. See setOnMeCheck().
state  
approachX The approach spot x.
approachY The approach spot y.
approachDist The approach distance.
_approachVerbs Bitmask for verbs that cause the ego to approach the Feature.

Methods

init([initCode])

Initializes the Feature. This must be done prior to it being active in the scene.

Parameters:initCode (heapPtr) – Optional initialization Code for the feature. Generally, this is left unspecified.
dispose()
initialize(param1)
handleEvent(pEvent)
doVerb(theVerb)

This method can be overridden by Feature instances to provide custom logic when the player interacts with the feature. By default, it displays any message resource associated with the given verb for this Feature’s noun.

notFacing()
facingMe([theObj])
Parameters:theObj (heapPtr) – Optional object that the Feature might be facing. If not specified, the player’s ego is used.

Returns TRUE if this Feature is facing the specified object (or ego).

isNotHidden()
onMe(theObj)
onMe(x y)
Parameters:
  • theObj (heapPtr) – The object that might be on the Feature.
  • x (number) – The x coordinate.
  • y (number) – The y coordinate.
Returns:

TRUE if the (x, y) or object is on the Feature.

approachVerbs([verbs ...])

Indicates which verbs should cause the ego to approach the feature.

Parameters:verbs (number) – An optional series of verbs.

Example usage:

(theToy approachVerbs: V_DO V_EAT)
setName(theName)
setOnMeCheck(omcDISABLE)
setOnMeCheck(omcPOLYGON polygon)
setOnMeCheck(omcCOLORS [colors ...])

Controls how the Feature is identified (colors or polygon), or disables the onMe check.

Parameters:
  • polygon (heapPtr) – A polygon defining the boundaries of the Feature
  • colors (number) – Control color(s) defining the Feature.

Example usage:

(theTable setOnMeCheck: omcCOLORS ctlWHITE ctlGREY)

(theRock setOnMeCheck: omcPOLYGON (CreateNewPolygon @P_TheRock))