Event

by Kaiochao
Events and event handlers
ID:2112083
 
Example usage:
obj/door
proc/Open(obj/button/Button)
world << "The door is opened by [Button]!"

obj/button
var tmp/event/OnPressed = new // (obj/button)

// when a mob steps on this button, fire the OnPressed event
Crossed(atom/movable/M)
if(OnPressed && ismob(M))
OnPressed.Fire(src)

// hook-up procedure:

var obj/door/door = // ...
var obj/button/button = // ...

// whenever button.OnPressed is fired, door.Open(button) is called!
EVENT_ADD(button.OnPressed, door, /obj/door/proc/Open)