aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/wage.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2015-12-25 01:09:12 +0100
committerEugene Sandulenko2015-12-27 15:41:01 +0100
commitd4afcf99f2b21319251fcb7e8a3de2854808e161 (patch)
treee24b53ecbb03a3b20d9d8092c1a609f99008866e /engines/wage/wage.cpp
parent35cce4123c61f8cfbc80ced25a9c7a3f9b46b6e7 (diff)
downloadscummvm-rg350-d4afcf99f2b21319251fcb7e8a3de2854808e161.tar.gz
scummvm-rg350-d4afcf99f2b21319251fcb7e8a3de2854808e161.tar.bz2
scummvm-rg350-d4afcf99f2b21319251fcb7e8a3de2854808e161.zip
WAGE: Initial code for world initialization
Diffstat (limited to 'engines/wage/wage.cpp')
-rw-r--r--engines/wage/wage.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index 1cf0dde8d9..173646b5bc 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -101,7 +101,7 @@ Common::Error WageEngine::run() {
_resManager = new Common::MacResManager();
_resManager->open(getGameFile());
- _world = new World();
+ _world = new World(this);
if (!_world->loadWorld(_resManager))
return Common::kNoGameDataFoundError;
@@ -110,6 +110,8 @@ Common::Error WageEngine::run() {
screen.create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
Common::Rect r(0, 0, screen.w, screen.h);
+ performInitialSetup();
+
Common::String input("look");
_world->_player->_currentScene = _world->_orderedScenes[1];
@@ -158,5 +160,57 @@ Obj *WageEngine::getOffer() {
return NULL;
}
+void WageEngine::performInitialSetup() {
+ for (int i = 0; i < _world->_orderedObjs.size(); i++)
+ _world->move(_world->_orderedObjs[i], &_world->_storageScene);
+ for (int i = 0; i < _world->_orderedChrs.size(); i++)
+ _world->move(_world->_orderedChrs[i], &_world->_storageScene);
+
+ warning("STUB: performInitialSetup");
+/*
+ for (int i = 0; i < _world->_orderedObjs.size(); i++)
+ Obj obj = _world->_orderedObjs[i];
+ if (!obj.getSceneOrOwner().equalsIgnoreCase(World.STORAGE)) {
+ String location = obj.getSceneOrOwner().toLowerCase();
+ Scene scene = getSceneByName(location);
+ if (scene != null) {
+ world.move(obj, scene);
+ } else {
+ Chr chr = world.getChrs().get(location);
+ if (chr == null) {
+ // Note: PLAYER@ is not a valid target here.
+ System.err.printf("Couldn't move %s to %s\n", obj.getName(), obj.getSceneOrOwner());
+ } else {
+ // TODO: Add check for max items.
+ world.move(obj, chr);
+ }
+ }
+ }
+ }
+*/
+ bool playerPlaced = false;
+ for (int i = 0; i < _world->_orderedChrs.size(); i++) {
+ Chr *chr = _world->_orderedChrs[i];
+ if (!chr->_initialScene.equalsIgnoreCase(STORAGESCENE)) {
+ String key = chr->_initialScene;
+ key.toLowercase();
+ if (_world->_scenes.contains(key)) {
+ _world->move(chr, _world->_scenes[key]);
+
+ if (chr->_playerCharacter)
+ warning("Initial scene: %s", key.c_str());
+ } else {
+ _world->move(chr, _world->getRandomScene());
+ }
+ if (chr->_playerCharacter) {
+ playerPlaced = true;
+ }
+ }
+ chr->wearObjs();
+ }
+ if (!playerPlaced) {
+ _world->move(_world->_player, _world->getRandomScene());
+ }
+}
} // End of namespace Wage