aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/handlers/handler_mgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/objects/handlers/handler_mgr.cpp')
-rw-r--r--engines/pink/objects/handlers/handler_mgr.cpp51
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;
+}
+
}