diff options
author | Eugene Sandulenko | 2015-12-25 01:09:12 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2015-12-27 15:41:01 +0100 |
commit | d4afcf99f2b21319251fcb7e8a3de2854808e161 (patch) | |
tree | e24b53ecbb03a3b20d9d8092c1a609f99008866e /engines/wage/wage.cpp | |
parent | 35cce4123c61f8cfbc80ced25a9c7a3f9b46b6e7 (diff) | |
download | scummvm-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.cpp | 56 |
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 |