aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/handlers/handler_mgr.cpp
diff options
context:
space:
mode:
authorwhiterandrek2018-04-05 08:15:14 +0300
committerEugene Sandulenko2018-06-28 23:51:32 +0200
commitcad72b1532faa96c68848392766f25a4a58398ab (patch)
tree04d5e0cbda2aadb79fce35a1ddd45f0f0798f60f /engines/pink/objects/handlers/handler_mgr.cpp
parent4b7c75607a5d54d95c383fabf381d82d4ac77b94 (diff)
downloadscummvm-rg350-cad72b1532faa96c68848392766f25a4a58398ab.tar.gz
scummvm-rg350-cad72b1532faa96c68848392766f25a4a58398ab.tar.bz2
scummvm-rg350-cad72b1532faa96c68848392766f25a4a58398ab.zip
PINK: basic walk, left click and seqTimer implementation
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;
+}
+
}