aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/module.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/objects/module.cpp')
-rw-r--r--engines/pink/objects/module.cpp114
1 files changed, 114 insertions, 0 deletions
diff --git a/engines/pink/objects/module.cpp b/engines/pink/objects/module.cpp
new file mode 100644
index 0000000000..97f78d4637
--- /dev/null
+++ b/engines/pink/objects/module.cpp
@@ -0,0 +1,114 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "module.h"
+#include "engines/pink/objects/pages/game_page.h"
+
+namespace Pink {
+
+ModuleProxy::ModuleProxy(const Common::String &name)
+ : NamedObject(name)
+{}
+
+ModuleProxy::ModuleProxy() {}
+
+Module::Module(PinkEngine *game, const Common::String &name)
+ : NamedObject(name), _game(game), _page(nullptr)
+{}
+
+void Module::load(Archive &archive){
+ archive.mapObject(this);
+ NamedObject::deserialize(archive);
+
+ archive.readString(); // skip directory
+
+ _invMgr.deserialize(archive);
+ archive >> _pages;
+}
+
+void Module::init(bool isLoadingSave, const Common::String *pageName) {
+ // debugging original
+ // 0 0 - new game
+ // 0 1 - module changed
+ // 1 0 - from save
+
+ // 1 1 - haven't seen those values
+
+ //this func will be rewrited after testing
+
+ if (_page) {
+ debug("loading from save");
+ }
+ if (pageName){
+ debug("module changed");
+ }
+ assert(_pages.size() != 0);
+
+ if (pageName) {
+ uint i;
+ for (i = 0; i < _pages.size(); ++i) {
+ if(*pageName == _pages[i]->getName()) {
+ _page = _pages[i];
+ }
+ }
+ assert(i < _pages.size());
+ }
+
+ if (_page) {
+ _page->init(isLoadingSave); // module changed or from save
+ return;
+ }
+
+ if (_page != _pages[0]) {
+ if (_page) {
+ assert(0); // in original code there is call to page func but I've never seen it
+ return;
+ }
+ _page = _pages[0];
+ _page->init(isLoadingSave); // new game
+ return;
+ }
+
+ assert(0);
+}
+
+PinkEngine *Module::getGame() const {
+ return _game;
+}
+
+bool Module::checkValueOfVariable(Common::String &variable, Common::String &value) {
+ assert(_variables.contains(variable));
+ return _variables[variable] == value;
+}
+
+void Module::setVariable(Common::String &variable, Common::String &value) {
+ _variables[variable] = value;
+}
+
+InventoryMgr *Module::getInventoryMgr() {
+ return &_invMgr;
+}
+
+} // End of namespace Pink
+
+
+