aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorD G Turner2011-12-28 23:37:16 +0000
committerD G Turner2011-12-28 23:37:16 +0000
commit311e1c495c323f4250bd890c769331ee2a707347 (patch)
tree869316993b989ef4e6300d27a706349d21ac8ecc /engines
parent7e45a88b064b022e8ea7a98564c67c93615b5ccb (diff)
downloadscummvm-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.h1
-rw-r--r--engines/dreamweb/stubs.cpp108
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)