diff options
Diffstat (limited to 'engines/pink/objects/handlers/handler_mgr.cpp')
-rw-r--r-- | engines/pink/objects/handlers/handler_mgr.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/engines/pink/objects/handlers/handler_mgr.cpp b/engines/pink/objects/handlers/handler_mgr.cpp index 83236de6a1..76c2cf6834 100644 --- a/engines/pink/objects/handlers/handler_mgr.cpp +++ b/engines/pink/objects/handlers/handler_mgr.cpp @@ -36,4 +36,55 @@ bool HandlerMgr::isLeftClickHandler(Actor *actor) { return false; } +void HandlerMgr::onTimerMessage(Actor *actor) { + Handler *handler = findSuitableHandlerTimer(actor); + if (handler) + handler->handle(actor); +} + +bool HandlerMgr::onLeftClickMessage(Actor *actor) { + Handler *handler = findSuitableHandlerLeftClick(actor); + if (handler) { + handler->handle(actor); + return 1; + } + return 0; +} + +bool HandlerMgr::onUseClickMessage(Actor *actor) { + Handler *handler = findSuitableHandlerUseClick(actor); + if (handler) { + handler->handle(actor); + return 1; + } + return 0; +} + +Handler *HandlerMgr::findSuitableHandlerTimer(Actor *actor) { + for (int i = 0; i < _timerHandlers.size(); ++i) { + if (_timerHandlers[i]->isSuitable(actor)) + return _timerHandlers[i]; + } + + return nullptr; +} + +Handler *HandlerMgr::findSuitableHandlerLeftClick(Actor *actor) { + for (int i = 0; i < _leftClickHandlers.size(); ++i) { + if (_leftClickHandlers[i]->isSuitable(actor)) + return _leftClickHandlers[i]; + } + + return nullptr; +} + +Handler *HandlerMgr::findSuitableHandlerUseClick(Actor *actor) { + for (int i = 0; i < _useClickHandlers.size(); ++i) { + if (_useClickHandlers[i]->isSuitable(actor)) + return _useClickHandlers[i]; + } + + return nullptr; +} + } |