(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "Cycle")
(use "User")
(use "Obj")
(script 979)



(instance COn of Code
    (properties)

    (method (doit param1 param2)
        proc255_5(param1 rest)
    )

)
(instance MTM of Motion
    (properties)

    (method (doit param1)
        (super:doit(rest param1))
        (if ((send client:isStopped()))
            (self:moveDone())
        )
    )

)
(class MDH of EventHandler
    (properties
        elements 0
        size 0
        x 0
        y 0
        modifiers 0
        targetObj 0
        shiftParser 0
    )

    (method (handleEvent pEvent)
        (var UserAlterEgo, temp1, temp2)
        = temp1 (send ((= UserAlterEgo (User:alterEgo))):mover)
        = x (send pEvent:x)
        = y (send pEvent:y)
        = modifiers (send pEvent:modifiers)
        (if (& modifiers $000c)
            (super:handleEvent(pEvent))
        )(else
            = temp2 FirstNode(elements)
            (while (temp2 and (= targetObj NodeValue(temp2)))
                (if (= targetObj 
                    (if ((send targetObj:isKindOf(Collect)))
                        (send targetObj:firstTrue(99 COn pEvent))
                    )(else
                        (if (proc255_5(targetObj pEvent))
                            targetObj
                        )
                    )
)
                    (if (& modifiers $0003)
                        break
                    )
                    (if (((User:controls) and IsObject(UserAlterEgo)) and (send global5:contains(UserAlterEgo)))
                        break
                    )
                    break
                )
                = temp2 NextNode(temp2)
            )
            (if (== targetObj 0)
                (super:handleEvent(pEvent))
            )
        )
    )


    (method (cue)
        (var newEvent)
        (send (= newEvent (Event:new())):
            type(1)
            x(x)
            y(y)
            modifiers(modifiers)
        )
        (send targetObj:handleEvent(newEvent))
        = targetObj 0
        (send newEvent:dispose())
    )

)
