aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/actors/lead_actor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/objects/actors/lead_actor.cpp')
-rw-r--r--engines/pink/objects/actors/lead_actor.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/engines/pink/objects/actors/lead_actor.cpp b/engines/pink/objects/actors/lead_actor.cpp
index 2891682fca..8f48df52e0 100644
--- a/engines/pink/objects/actors/lead_actor.cpp
+++ b/engines/pink/objects/actors/lead_actor.cpp
@@ -103,14 +103,11 @@ void LeadActor::start(bool isHandler) {
InventoryMgr *mgr = getInventoryMgr();
switch (_state) {
case kInventory:
- mgr->start(0);
- _page->pause(true);
+ startInventory(1);
break;
case kPDA:
- if (_stateBeforePDA == kInventory) {
- mgr->start(0);
- _page->pause(true);
- }
+ if (_stateBeforePDA == kInventory)
+ startInventory(1);
loadPDA(_page->getGame()->getPdaMgr().getSavedPageName());
break;
default:
@@ -275,11 +272,7 @@ void LeadActor::onClick() {
_recipient = nullptr;
_nextState = kReady;
}
- if (getInventoryMgr()->start(1)) {
- _stateCopy = _state;
- _state = kInventory;
- _page->pause(true);
- }
+ startInventory(0);
}
}
@@ -387,6 +380,17 @@ Actor *LeadActor::getActorByPoint(const Common::Point point) {
return _page->getGame()->getDirector()->getActorByPoint(point);
}
+void LeadActor::startInventory(bool fromSave) {
+ getInventoryMgr()->start(fromSave);
+ if (!fromSave) {
+ _isHaveItem = false;
+ _stateCopy = _state;
+ _state = kInventory;
+ forceUpdateCursor();
+ }
+ _page->pause(true);
+}
+
void ParlSqPink::toConsole() {
debug("ParlSqPink: _name = %s", _name.c_str());
for (uint i = 0; i < _actions.size(); ++i) {