aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/pages
diff options
context:
space:
mode:
authorwhiterandrek2018-04-07 11:36:09 +0300
committerEugene Sandulenko2018-06-28 23:51:32 +0200
commitdac8d2a72b427cdecedfe4a951aa6166ce7b3720 (patch)
tree04bcc501b922dffa5d76ac1ae6a3559eddcda950 /engines/pink/objects/pages
parent78c4ed85ab7a84b18c8c7fd2e93c6bf2798acab6 (diff)
downloadscummvm-rg350-dac8d2a72b427cdecedfe4a951aa6166ce7b3720.tar.gz
scummvm-rg350-dac8d2a72b427cdecedfe4a951aa6166ce7b3720.tar.bz2
scummvm-rg350-dac8d2a72b427cdecedfe4a951aa6166ce7b3720.zip
PINK: bugfixes and added basic inventory implementation
Diffstat (limited to 'engines/pink/objects/pages')
-rw-r--r--engines/pink/objects/pages/game_page.cpp19
-rw-r--r--engines/pink/objects/pages/game_page.h2
-rw-r--r--engines/pink/objects/pages/page.cpp13
-rw-r--r--engines/pink/objects/pages/page.h4
4 files changed, 26 insertions, 12 deletions
diff --git a/engines/pink/objects/pages/game_page.cpp b/engines/pink/objects/pages/game_page.cpp
index d12c034d2a..e38bed8da8 100644
--- a/engines/pink/objects/pages/game_page.cpp
+++ b/engines/pink/objects/pages/game_page.cpp
@@ -32,7 +32,7 @@ namespace Pink {
GamePage::GamePage()
: _cursorMgr(nullptr), _walkMgr(nullptr), _sequencer(nullptr),
- _perhapsIsLoaded(false), _memFile(nullptr)
+ _isLoaded(false), _memFile(nullptr)
{}
GamePage::~GamePage() {
@@ -64,17 +64,14 @@ void GamePage::load(Archive &archive) {
_leadActor = static_cast<LeadActor*>(archive.readObject());
_walkMgr->deserialize(archive);
-
_sequencer->deserialize(archive);
archive >> _handlers;
}
void GamePage::init(bool isLoadingSave) {
- if (!_perhapsIsLoaded)
+ if (!_isLoaded)
loadManagers();
- getGame()->getDirector()->clear();
-
toConsole();
for (int j = 0; j < _actors.size(); ++j) {
@@ -108,7 +105,7 @@ bool GamePage::initHandler() {
}
void GamePage::loadManagers() {
- _perhapsIsLoaded = true;
+ _isLoaded = true;
_cursorMgr = new CursorMgr(_module->getGame(), this);
_walkMgr = new WalkMgr;
_sequencer = new Sequencer(this);
@@ -150,6 +147,7 @@ WalkMgr *GamePage::getWalkMgr() {
void GamePage::loadState() {
Archive archive(static_cast<Common::SeekableReadStream*>(_memFile));
+ _variables.clear(0);
archive >> _variables;
uint16 actorCount;
@@ -165,6 +163,7 @@ void GamePage::loadState() {
void GamePage::saveState() {
_memFile = new Common::MemoryReadWriteStream(DisposeAfterUse::YES);
Archive archive(static_cast<Common::WriteStream*>(_memFile));
+
archive << _variables;
archive.writeWORD(_actors.size());
@@ -172,12 +171,14 @@ void GamePage::saveState() {
archive.writeString(_actors[i]->getName());
_actors[i]->saveState(archive);
}
+
}
void GamePage::unload() {
_leadActor->setAction(_leadActor->findAction("Idle"));
saveState();
clear();
+ _isLoaded = false;
}
void GamePage::clear() {
@@ -187,9 +188,9 @@ void GamePage::clear() {
delete _handlers[i];
}
_handlers.clear();
- delete _cursorMgr;
- delete _sequencer;
- delete _walkMgr;
+ delete _cursorMgr; _cursorMgr = nullptr;
+ delete _sequencer; _sequencer = nullptr;
+ delete _walkMgr; _walkMgr = nullptr;
}
diff --git a/engines/pink/objects/pages/game_page.h b/engines/pink/objects/pages/game_page.h
index 79a4bee4db..c4f6dfba82 100644
--- a/engines/pink/objects/pages/game_page.h
+++ b/engines/pink/objects/pages/game_page.h
@@ -60,7 +60,7 @@ private:
void loadState();
void saveState();
- bool _perhapsIsLoaded;
+ bool _isLoaded;
Common::MemoryReadWriteStream *_memFile;
Module *_module;
CursorMgr *_cursorMgr;
diff --git a/engines/pink/objects/pages/page.cpp b/engines/pink/objects/pages/page.cpp
index e068367d07..1c0c67e85a 100644
--- a/engines/pink/objects/pages/page.cpp
+++ b/engines/pink/objects/pages/page.cpp
@@ -38,7 +38,7 @@ void Page::load(Archive &archive) {
archive >> _actors;
}
-Actor *Page::findActor(Common::String &name) {
+Actor *Page::findActor(const Common::String &name) {
return *Common::find_if(_actors.begin(), _actors.end(), [&name]
(Actor *actor) {
return name == actor->getName();
@@ -82,6 +82,17 @@ void Page::clear() {
_resMgr.clear();
}
+void Page::pause() {
+ for (int i = 0; i < _actors.size(); ++i) {
+ _actors[i]->pause();
+ }
+}
+
+void Page::unpause() {
+ for (int i = 0; i < _actors.size(); ++i) {
+ _actors[i]->unpause();
+ }
+}
} // End of namespace Pink
diff --git a/engines/pink/objects/pages/page.h b/engines/pink/objects/pages/page.h
index b9820fea75..23b060c143 100644
--- a/engines/pink/objects/pages/page.h
+++ b/engines/pink/objects/pages/page.h
@@ -40,13 +40,15 @@ public:
virtual void toConsole();
void load(Archive &archive);
- Actor *findActor(Common::String &name);
+ Actor *findActor(const Common::String &name);
LeadActor *getLeadActor();
Sound *loadSound(Common::String &fileName);
CelDecoder *loadCel(Common::String &fileName);
virtual void clear();
+ void pause();
+ void unpause();
protected:
void init();