diff options
author | whiterandrek | 2018-06-01 22:31:35 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2018-06-28 23:51:32 +0200 |
commit | 9f23b4238c0643e6e9fa5af52be2747219f0bfe0 (patch) | |
tree | 594285f1df4471d236e02f96a3cdec245f58f644 /engines/pink/objects/actors | |
parent | 11d2c1aa5232148d530713b93d95efff4d322ceb (diff) | |
download | scummvm-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.h | 1 | ||||
-rw-r--r-- | engines/pink/objects/actors/lead_actor.cpp | 21 | ||||
-rw-r--r-- | engines/pink/objects/actors/lead_actor.h | 2 |
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(); |