53 lines
894 B
Go
53 lines
894 B
Go
package pncdsl
|
|
|
|
type CursorKind int
|
|
|
|
const (
|
|
CursorDefault CursorKind = iota
|
|
CursorLook
|
|
CursorUse
|
|
CursorTalk
|
|
CursorTake
|
|
CursorExit
|
|
)
|
|
|
|
type Hotspot struct {
|
|
Name string
|
|
Area Shape
|
|
Label string
|
|
Cursor CursorKind
|
|
|
|
OnLook Action
|
|
OnUse Action
|
|
OnTalk Action
|
|
OnTake Action
|
|
OnGive Action
|
|
|
|
// OnUseWith: when the player has an item selected and clicks this hotspot,
|
|
// the engine looks up the item's Name here first.
|
|
OnUseWith map[string]Action
|
|
|
|
// OnVerb: custom verbs registered via g.VerbManager.
|
|
OnVerb map[string]Action
|
|
}
|
|
|
|
// handler returns the action bound to verb v for this hotspot, or nil.
|
|
func (h Hotspot) handler(v string) Action {
|
|
switch v {
|
|
case "look":
|
|
return h.OnLook
|
|
case "use":
|
|
return h.OnUse
|
|
case "talk":
|
|
return h.OnTalk
|
|
case "take":
|
|
return h.OnTake
|
|
case "give":
|
|
return h.OnGive
|
|
}
|
|
if h.OnVerb != nil {
|
|
return h.OnVerb[v]
|
|
}
|
|
return nil
|
|
}
|