diff options
| author | Borja Lorente | 2016-08-10 17:05:05 +0200 | 
|---|---|---|
| committer | Borja Lorente | 2016-08-19 16:29:16 +0200 | 
| commit | 0cd9e876297872269d83f38e93e6525dd4efd8e5 (patch) | |
| tree | 5b07fe6365209153b2d2be907fc6538a515507a9 | |
| parent | 1d5b7a6e19377c0b279c337ef4ca60749b31f6c9 (diff) | |
| download | scummvm-rg350-0cd9e876297872269d83f38e93e6525dd4efd8e5.tar.gz scummvm-rg350-0cd9e876297872269d83f38e93e6525dd4efd8e5.tar.bz2 scummvm-rg350-0cd9e876297872269d83f38e93e6525dd4efd8e5.zip | |
MACVENTURE: Add 'new game' functionality
| -rw-r--r-- | engines/macventure/macventure.cpp | 51 | ||||
| -rw-r--r-- | engines/macventure/macventure.h | 10 | ||||
| -rw-r--r-- | engines/macventure/world.cpp | 5 | 
3 files changed, 41 insertions, 25 deletions
| diff --git a/engines/macventure/macventure.cpp b/engines/macventure/macventure.cpp index 37e1472338..0a27babb26 100644 --- a/engines/macventure/macventure.cpp +++ b/engines/macventure/macventure.cpp @@ -153,15 +153,7 @@ Common::Error MacVentureEngine::run() {  	_soundManager = new SoundManager(this, _mixer); -	_paused = false; -	_halted = false; -	_cmdReady = false; -	_haltedAtEnd = false; -	_haltedInSelection = false; -	_clickToContinue = true; -	_gameState = kGameStateInit; -	_destObject = 0; -	_prepared = true; +	setInitialFlags();  	int directSaveSlotLoading = ConfMan.getInt("save_slot");  	if (directSaveSlotLoading >= 0) { @@ -169,10 +161,7 @@ Common::Error MacVentureEngine::run() {  			error("Could not load game from slot '%d'", directSaveSlotLoading);  		}  	} else { -		_cmdReady = true; -		ObjID playerParent = _world->getObjAttr(1, kAttrParentObject); -		_currentSelection.push_back(playerParent);// Push the parent of the player -		_world->setObjAttr(playerParent, kAttrContainerOpen, 1); +		setNewGameState();  	}  	_selectedControl = kStartOrResume; @@ -208,17 +197,42 @@ Common::Error MacVentureEngine::run() {  				}  			}  		} -		_gui->draw(); - -		g_system->updateScreen(); -		g_system->delayMillis(50); +		refreshScreen();  	}  	return Common::kNoError;  } +void MacVentureEngine::refreshScreen() { +	_gui->draw(); +	g_system->updateScreen(); +	g_system->delayMillis(50); +} +  void MacVentureEngine::newGame() { -	warning("New Game not implemented!"); +	_world->startNewGame(); +	reset(); +	setInitialFlags(); +	setNewGameState(); +} + +void MacVentureEngine::setInitialFlags() { +	_paused = false; +	_halted = false; +	_cmdReady = false; +	_haltedAtEnd = false; +	_haltedInSelection = false; +	_clickToContinue = true; +	_gameState = kGameStateInit; +	_destObject = 0; +	_prepared = true; +} + +void MacVentureEngine::setNewGameState() { +	_cmdReady = true; +	ObjID playerParent = _world->getObjAttr(1, kAttrParentObject); +	_currentSelection.push_back(playerParent);// Push the parent of the player +	_world->setObjAttr(playerParent, kAttrContainerOpen, 1);  }  void MacVentureEngine::reset() { @@ -241,6 +255,7 @@ void MacVentureEngine::resetGui() {  	_gui->updateWindowInfo(kInventoryStart, 1, _world->getChildren(1, true));  	updateControls();  	updateExits(); +	refreshScreen();  }  void MacVentureEngine::requestQuit() { diff --git a/engines/macventure/macventure.h b/engines/macventure/macventure.h index 576fd9b323..3f0ce0cc7b 100644 --- a/engines/macventure/macventure.h +++ b/engines/macventure/macventure.h @@ -185,17 +185,19 @@ public:  	virtual Common::Error loadGameState(int slot);  	virtual Common::Error saveGameState(int slot, const Common::String &desc);  	void newGame(); +	void setInitialFlags(); +	void setNewGameState();  	void initDebugChannels(); +	void reset(); +	void resetInternals(); +	void resetGui(); +	void refreshScreen();  	// datafiles.cpp  	void loadDataBundle();  	Common::SeekableReadStream *getBorderFile(MVWindowType windowType, bool isActive); -	void reset(); -	void resetInternals(); -	void resetGui(); -  	void requestQuit();  	void requestUnpause();  	void selectControl(ControlAction action); diff --git a/engines/macventure/world.cpp b/engines/macventure/world.cpp index 2c9b55c6ab..82a8952f02 100644 --- a/engines/macventure/world.cpp +++ b/engines/macventure/world.cpp @@ -10,11 +10,8 @@ World::World(MacVentureEngine *engine, Common::MacResManager *resMan)  {  	_engine = engine;  	_saveGame = NULL; -  	startNewGame(); -	//_-------------------- -  	_objectConstants = new Container(_engine->getFilePath(kObjectPathID));  	calculateObjectRelations(); @@ -47,6 +44,8 @@ void World::startNewGame() {  	_saveGame = new SaveGame(_engine, saveGameRes); +	calculateObjectRelations(); +	  	delete saveGameRes;  	saveGameFile.close();  } | 
