diff options
author | D G Turner | 2011-12-28 23:37:16 +0000 |
---|---|---|
committer | D G Turner | 2011-12-28 23:37:16 +0000 |
commit | 311e1c495c323f4250bd890c769331ee2a707347 (patch) | |
tree | 869316993b989ef4e6300d27a706349d21ac8ecc /engines | |
parent | 7e45a88b064b022e8ea7a98564c67c93615b5ccb (diff) | |
download | scummvm-rg350-311e1c495c323f4250bd890c769331ee2a707347.tar.gz scummvm-rg350-311e1c495c323f4250bd890c769331ee2a707347.tar.bz2 scummvm-rg350-311e1c495c323f4250bd890c769331ee2a707347.zip |
DREAMWEB: Minor clean up and removal of goto usage in dreamweb().
Diffstat (limited to 'engines')
-rw-r--r-- | engines/dreamweb/dreamweb.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 108 |
2 files changed, 62 insertions, 47 deletions
diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index 7e6ca1ddd7..c0f518d823 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -940,6 +940,7 @@ public: void searchForFiles(const char *filesString); void triggerMessage(uint16 index); void processTrigger(); + void dreamwebFinalize(); void dreamweb(); void screenUpdate(); void startup1(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 3602558b8b..9aa61354fe 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -456,6 +456,44 @@ static const Atmosphere g_atmosphereList[] = { }; +void DreamWebEngine::dreamwebFinalize() { + // The engine will need some cleaner finalization (destructor?), let's put it here for now + + // FIXME: This triggers "Deallocating non existent segment" errors when + // quitting from a menu. + getRidOfAll(); + + _icons1.clear(); + _icons2.clear(); + _charset1.clear(); + _tempGraphics.clear(); + _tempGraphics2.clear(); + _tempGraphics3.clear(); + _tempCharset.clear(); + _mainSprites.clear(); + + _exFrames.clear(); + _exText.clear(); + + _setFrames.clear(); + _freeFrames.clear(); + _reel1.clear(); + _reel2.clear(); + _reel3.clear(); + _setDesc.clear(); + _blockDesc.clear(); + _roomDesc.clear(); + _freeDesc.clear(); + _personText.clear(); + + _textFile1.clear(); + _textFile2.clear(); + _textFile3.clear(); + _travelText.clear(); + _puzzleText.clear(); + _commandText.clear(); +} + void DreamWebEngine::dreamweb() { switch(getLanguage()) { case Common::EN_ANY: @@ -491,13 +529,11 @@ void DreamWebEngine::dreamweb() { int savegameId = Common::ConfigManager::instance().getInt("save_slot"); while (true) { - uint count = scanForNames(); bool startNewGame = true; if (firstLoop && savegameId >= 0) { - // loading a savegame requested from launcher/command line cls(); @@ -527,12 +563,13 @@ void DreamWebEngine::dreamweb() { cls(); setMode(); decide(); - if (_quitRequested) - goto done; + if (_quitRequested) { + dreamwebFinalize(); + return; + } if (_getBack == 4) startNewGame = false; // savegame has been loaded - } firstLoop = false; @@ -547,15 +584,19 @@ void DreamWebEngine::dreamweb() { if (!_quitRequested) // "titlesearly" intro(); - if (_quitRequested) - goto done; + if (_quitRequested) { + dreamwebFinalize(); + return; + } // "credits" clearPalette(); realCredits(); - if (_quitRequested) - goto done; + if (_quitRequested) { + dreamwebFinalize(); + return; + } clearChanges(); setMode(); @@ -581,13 +622,17 @@ void DreamWebEngine::dreamweb() { // main loop while (true) { - if (_quitRequested) - goto done; + if (_quitRequested) { + dreamwebFinalize(); + return; + } screenUpdate(); - if (_quitRequested) - goto done; + if (_quitRequested) { + dreamwebFinalize(); + return; + } if (_wonGame) { // "endofgame" @@ -596,7 +641,8 @@ void DreamWebEngine::dreamweb() { hangOn(200); endGame(); quickQuit2(); - goto done; + dreamwebFinalize(); + return; } if (_vars._manDead == 1 || _vars._manDead == 2) @@ -636,40 +682,8 @@ void DreamWebEngine::dreamweb() { hangOn(100); } -done: // The engine will need some cleaner finalization, let's put it here for now - // FIXME: This triggers "Deallocating non existent segment" errors when - // quitting from a menu. - getRidOfAll(); - - _icons1.clear(); - _icons2.clear(); - _charset1.clear(); - _tempGraphics.clear(); - _tempGraphics2.clear(); - _tempGraphics3.clear(); - _tempCharset.clear(); - _mainSprites.clear(); - _exFrames.clear(); - _exText.clear(); - - _setFrames.clear(); - _freeFrames.clear(); - _reel1.clear(); - _reel2.clear(); - _reel3.clear(); - _setDesc.clear(); - _blockDesc.clear(); - _roomDesc.clear(); - _freeDesc.clear(); - _personText.clear(); - - _textFile1.clear(); - _textFile2.clear(); - _textFile3.clear(); - _travelText.clear(); - _puzzleText.clear(); - _commandText.clear(); + dreamwebFinalize(); } void DreamWebEngine::loadTextFile(TextFile &file, const char *fileName) |