aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/actors
diff options
context:
space:
mode:
authorwhiterandrek2018-06-01 22:31:35 +0300
committerEugene Sandulenko2018-06-28 23:51:32 +0200
commit9f23b4238c0643e6e9fa5af52be2747219f0bfe0 (patch)
tree594285f1df4471d236e02f96a3cdec245f58f644 /engines/pink/objects/actors
parent11d2c1aa5232148d530713b93d95efff4d322ceb (diff)
downloadscummvm-rg350-9f23b4238c0643e6e9fa5af52be2747219f0bfe0.tar.gz
scummvm-rg350-9f23b4238c0643e6e9fa5af52be2747219f0bfe0.tar.bz2
scummvm-rg350-9f23b4238c0643e6e9fa5af52be2747219f0bfe0.zip
PINK: add Pokus World Book implementation
Diffstat (limited to 'engines/pink/objects/actors')
-rw-r--r--engines/pink/objects/actors/actor.h1
-rw-r--r--engines/pink/objects/actors/lead_actor.cpp21
-rw-r--r--engines/pink/objects/actors/lead_actor.h2
3 files changed, 21 insertions, 3 deletions
diff --git a/engines/pink/objects/actors/actor.h b/engines/pink/objects/actors/actor.h
index 037b8b5408..e39ce844e1 100644
--- a/engines/pink/objects/actors/actor.h
+++ b/engines/pink/objects/actors/actor.h
@@ -72,6 +72,7 @@ public:
virtual void onMouseOver(Common::Point point, CursorMgr *mgr);
virtual void onHover(Common::Point point, const Common::String &itemName, CursorMgr *cursorMgr);
+ virtual void onClick() {};
virtual bool isClickable() { return 0; }
diff --git a/engines/pink/objects/actors/lead_actor.cpp b/engines/pink/objects/actors/lead_actor.cpp
index 90de9a1d8f..17ec0ee49c 100644
--- a/engines/pink/objects/actors/lead_actor.cpp
+++ b/engines/pink/objects/actors/lead_actor.cpp
@@ -90,6 +90,7 @@ void LeadActor::update() {
getPage()->getModule()->getInventoryMgr()->update();
break;
case kPDA:
+ getPage()->getGame()->getPdaMgr().update();
break;
case kPlayingVideo:
_sequencer->update();
@@ -162,8 +163,7 @@ void LeadActor::start(bool isHandler) {
void LeadActor::onMouseMove(Common::Point point) {
if (_state != kPDA)
updateCursor(point);
- else
- error("pda is not supported");
+ else _page->getGame()->getPdaMgr().onMouseMove(point);
}
void LeadActor::updateCursor(Common::Point point) {
@@ -229,7 +229,7 @@ void LeadActor::onLeftButtonClick(Common::Point point) {
break;
}
case kPDA:
-
+ _page->getGame()->getPdaMgr().onLeftButtonClick(point);
break;
case kInventory:
invMgr->onClick(point);
@@ -351,6 +351,21 @@ void LeadActor::saveState(Archive &archive) {
_walkMgr->saveState(archive);
}
+void LeadActor::loadPDA(const Common::String &pageName) {
+ if (_state != kPDA) {
+ if (_state == kMoving) {
+ _recipient = nullptr;
+ _nextState = kReady;
+ }
+ _state = kPDA;
+ if (_state != kInventory)
+ _page->pause();
+ _page->getGame()->getDirector()->clear();
+ }
+ _page->getGame()->getPdaMgr().setLead(this);
+ _page->getGame()->getPdaMgr().goToPage(pageName);
+}
+
void ParlSqPink::toConsole() {
debug("ParlSqPink: _name = %s", _name.c_str());
for (uint i = 0; i < _actions.size(); ++i) {
diff --git a/engines/pink/objects/actors/lead_actor.h b/engines/pink/objects/actors/lead_actor.h
index d058ec65d4..0e480358b1 100644
--- a/engines/pink/objects/actors/lead_actor.h
+++ b/engines/pink/objects/actors/lead_actor.h
@@ -81,6 +81,8 @@ public:
virtual void saveState(Archive &archive);
+ void loadPDA(const Common::String &pageName);
+
protected:
virtual void updateCursor(Common::Point point);
void forceUpdateCursor();