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.cpp59
1 files changed, 22 insertions, 37 deletions
diff --git a/engines/pink/objects/module.cpp b/engines/pink/objects/module.cpp
index 97f78d4637..d1e16f37ee 100644
--- a/engines/pink/objects/module.cpp
+++ b/engines/pink/objects/module.cpp
@@ -22,6 +22,7 @@
#include "module.h"
#include "engines/pink/objects/pages/game_page.h"
+#include "pink/pink.h"
namespace Pink {
@@ -45,52 +46,36 @@ void Module::load(Archive &archive){
archive >> _pages;
}
-void Module::init(bool isLoadingSave, const Common::String *pageName) {
- // debugging original
+void Module::init(bool isLoadingSave, const Common::String &pageName) {
// 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 (!pageName.empty()) {
+ _page = findPage(pageName);
}
- if (_page != _pages[0]) {
- if (_page) {
- assert(0); // in original code there is call to page func but I've never seen it
- return;
- }
+ if (!_page)
_page = _pages[0];
- _page->init(isLoadingSave); // new game
- return;
- }
- assert(0);
+ _page->init(isLoadingSave);
+}
+
+void Module::changePage(const Common::String &pageName) {
+ GamePage *page = nullptr;
+ page = findPage(pageName);
+ assert(_page != page);
+ //_page->clear
+ page->init(kLoadingNewGame);
}
+GamePage *Module::findPage(const Common::String &pageName) const {
+ return *Common::find_if(_pages.begin(), _pages.end(), [&pageName]
+ (GamePage* page) {
+ return pageName == page->getName();
+ });
+}
+
+
PinkEngine *Module::getGame() const {
return _game;
}