diff options
author | Max Horn | 2008-09-01 17:50:00 +0000 |
---|---|---|
committer | Max Horn | 2008-09-01 17:50:00 +0000 |
commit | 7953312bc666a32ba274e4e2e1fc513a5e36762c (patch) | |
tree | faf4727ddea916531d5a3e26903dfefa354c78f9 | |
parent | a41c681d9d722a4be3d5bdfc1db5d836b1fcbf00 (diff) | |
parent | 852bc9dbb750b9995d31e70f4158c97d3758c46f (diff) | |
download | scummvm-rg350-7953312bc666a32ba274e4e2e1fc513a5e36762c.tar.gz scummvm-rg350-7953312bc666a32ba274e4e2e1fc513a5e36762c.tar.bz2 scummvm-rg350-7953312bc666a32ba274e4e2e1fc513a5e36762c.zip |
Merging more of the GSoC 2008 RTL branch: GOB
svn-id: r34245
-rw-r--r-- | engines/gob/detection.cpp | 6 | ||||
-rw-r--r-- | engines/gob/game_v1.cpp | 4 | ||||
-rw-r--r-- | engines/gob/game_v2.cpp | 10 | ||||
-rw-r--r-- | engines/gob/gob.cpp | 8 | ||||
-rw-r--r-- | engines/gob/gob.h | 3 | ||||
-rw-r--r-- | engines/gob/inter.cpp | 4 | ||||
-rw-r--r-- | engines/gob/inter_bargon.cpp | 6 | ||||
-rw-r--r-- | engines/gob/inter_v1.cpp | 4 | ||||
-rw-r--r-- | engines/gob/inter_v2.cpp | 3 | ||||
-rw-r--r-- | engines/gob/mult.cpp | 2 | ||||
-rw-r--r-- | engines/gob/palanim.cpp | 3 | ||||
-rw-r--r-- | engines/gob/sound/sound.cpp | 2 | ||||
-rw-r--r-- | engines/gob/util.cpp | 6 | ||||
-rw-r--r-- | engines/gob/videoplayer.cpp | 3 |
14 files changed, 30 insertions, 34 deletions
diff --git a/engines/gob/detection.cpp b/engines/gob/detection.cpp index 85ac455c6c..2de645ad76 100644 --- a/engines/gob/detection.cpp +++ b/engines/gob/detection.cpp @@ -1986,9 +1986,15 @@ public: return "Goblins Games (C) Coktel Vision"; } + virtual bool hasFeature(MetaEngineFeature f) const; virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const; }; +bool GobMetaEngine::hasFeature(MetaEngineFeature f) const { + return + (f == kSupportsRTL); +} + bool GobMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const { const Gob::GOBGameDescription *gd = (const Gob::GOBGameDescription *)desc; if (gd) { diff --git a/engines/gob/game_v1.cpp b/engines/gob/game_v1.cpp index 66deea8ec4..0ecbc81358 100644 --- a/engines/gob/game_v1.cpp +++ b/engines/gob/game_v1.cpp @@ -63,7 +63,7 @@ void Game_v1::playTot(int16 skipPlay) { strcpy(savedTotName, _curTotFile); if (skipPlay <= 0) { - while (!_vm->_quitRequested) { + while (!_vm->quit()) { for (int i = 0; i < 4; i++) { _vm->_draw->_fontToSprite[i].sprite = -1; _vm->_draw->_fontToSprite[i].base = -1; @@ -997,7 +997,7 @@ void Game_v1::collisionsBlock(void) { WRITE_VAR(16, 0); _activeCollResId = 0; } - while ((_activeCollResId == 0) && !_vm->_inter->_terminate && !_vm->_quitRequested); + while ((_activeCollResId == 0) && !_vm->_inter->_terminate && !_vm->quit()); if (((uint16) _activeCollResId & ~0x8000) == collResId) { collStackPos = 0; diff --git a/engines/gob/game_v2.cpp b/engines/gob/game_v2.cpp index adf75176ab..7d9419b592 100644 --- a/engines/gob/game_v2.cpp +++ b/engines/gob/game_v2.cpp @@ -70,7 +70,7 @@ void Game_v2::playTot(int16 skipPlay) { strcpy(savedTotName, _curTotFile); if (skipPlay <= 0) { - while (!_vm->_quitRequested) { + while (!_vm->quit()) { if (_vm->_inter->_variables) _vm->_draw->animateCursor(4); @@ -438,7 +438,7 @@ int16 Game_v2::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId, timeKey = _vm->_util->getTimeKey(); while (1) { - if (_vm->_inter->_terminate || _vm->_quitRequested) { + if (_vm->_inter->_terminate || _vm->quit()) { if (handleMouse) _vm->_draw->blitCursor(); return 0; @@ -1043,7 +1043,7 @@ void Game_v2::collisionsBlock(void) { WRITE_VAR(16, 0); _activeCollResId = 0; } - while ((_activeCollResId == 0) && !_vm->_inter->_terminate && !_vm->_quitRequested); + while ((_activeCollResId == 0) && !_vm->_inter->_terminate && !_vm->quit()); if ((_activeCollResId & 0xFFF) == collResId) { collStackPos = 0; @@ -1465,7 +1465,7 @@ int16 Game_v2::inputArea(int16 xPos, int16 yPos, int16 width, int16 height, key = checkCollisions(handleMouse, -300, collResId, collIndex); if ((key != 0) || (*collResId != 0) || - _vm->_inter->_terminate || _vm->_quitRequested) + _vm->_inter->_terminate || _vm->quit()) break; if (*pTotTime > 0) { @@ -1479,7 +1479,7 @@ int16 Game_v2::inputArea(int16 xPos, int16 yPos, int16 width, int16 height, } if ((key == 0) || (*collResId != 0) || - _vm->_inter->_terminate || _vm->_quitRequested) + _vm->_inter->_terminate || _vm->quit()) return 0; switch (key) { diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp index 3bae48c679..8057402985 100644 --- a/engines/gob/gob.cpp +++ b/engines/gob/gob.cpp @@ -24,7 +24,6 @@ */ #include "common/endian.h" -#include "common/events.h" #include "base/plugins.h" #include "common/config-manager.h" @@ -84,7 +83,6 @@ GobEngine::GobEngine(OSystem *syst) : Engine(syst) { _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume")); _copyProtection = ConfMan.getBool("copy_protection"); - _quitRequested = false; Common::addSpecialDebugLevel(kDebugFuncOp, "FuncOpcodes", "Script FuncOpcodes debug level"); Common::addSpecialDebugLevel(kDebugDrawOp, "DrawOpcodes", "Script DrawOpcodes debug level"); @@ -114,11 +112,7 @@ GobEngine::~GobEngine() { int GobEngine::go() { _init->initGame(0); - return 0; -} - -void GobEngine::shutdown() { - _quitRequested = true; + return _eventMan->shouldRTL(); } const char *GobEngine::getLangDesc(int16 language) const { diff --git a/engines/gob/gob.h b/engines/gob/gob.h index b308fd4df0..a48a99ec42 100644 --- a/engines/gob/gob.h +++ b/engines/gob/gob.h @@ -210,7 +210,6 @@ public: char *_startTot0; bool _copyProtection; bool _noMusic; - bool _quitRequested; Global *_global; Util *_util; @@ -230,8 +229,6 @@ public: SaveLoad *_saveLoad; VideoPlayer *_vidPlayer; - void shutdown(); - const char *getLangDesc(int16 language) const; void validateLanguage(); void validateVideoMode(int16 videoMode); diff --git a/engines/gob/inter.cpp b/engines/gob/inter.cpp index 02e7f99cbd..4973bd756d 100644 --- a/engines/gob/inter.cpp +++ b/engines/gob/inter.cpp @@ -259,7 +259,7 @@ void Inter::funcBlock(int16 retFlag) { if (executeFuncOpcode(cmd2, cmd, params)) return; - if (_vm->_quitRequested) + if (_vm->quit()) break; if (_break) { @@ -279,7 +279,7 @@ void Inter::funcBlock(int16 retFlag) { void Inter::callSub(int16 retFlag) { byte block; - while (!_vm->_quitRequested && _vm->_global->_inter_execPtr && + while (!_vm->quit() && _vm->_global->_inter_execPtr && (_vm->_global->_inter_execPtr != _vm->_game->_totFileData)) { block = *_vm->_global->_inter_execPtr; diff --git a/engines/gob/inter_bargon.cpp b/engines/gob/inter_bargon.cpp index d493fb00d3..d23841efd6 100644 --- a/engines/gob/inter_bargon.cpp +++ b/engines/gob/inter_bargon.cpp @@ -750,7 +750,7 @@ void Inter_Bargon::oBargon_intro2(OpGobParams ¶ms) { for (i = 320; i >= 0; i--) { _vm->_util->setScrollOffset(i, 0); if ((_vm->_game->checkKeys(&mouseX, &mouseY, &buttons, 0) == 0x11B) || - _vm->_quitRequested) { + _vm->quit()) { _vm->_palAnim->fade(0, -2, 0); _vm->_video->clearSurf(_vm->_draw->_frontSurface); memset((char *) _vm->_draw->_vgaPalette, 0, 768); @@ -760,7 +760,7 @@ void Inter_Bargon::oBargon_intro2(OpGobParams ¶ms) { break; } } - if (!_vm->_quitRequested) + if (!_vm->quit()) _vm->_util->setScrollOffset(0, 0); surface = 0; if (VAR(57) == ((uint32) -1)) @@ -799,7 +799,7 @@ void Inter_Bargon::oBargon_intro3(OpGobParams ¶ms) { _vm->_util->longDelay(_vm->_util->getRandom(200)); } if ((_vm->_game->checkKeys(&mouseX, &mouseY, &buttons, 0) == 0x11B) || - _vm->_quitRequested) { + _vm->quit()) { _vm->_sound->blasterStop(10); _vm->_palAnim->fade(0, -2, 0); _vm->_video->clearSurf(_vm->_draw->_frontSurface); diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp index 18c29ec978..1e01cd9048 100644 --- a/engines/gob/inter_v1.cpp +++ b/engines/gob/inter_v1.cpp @@ -1234,7 +1234,7 @@ bool Inter_v1::o1_repeatUntil(OpFuncParams ¶ms) { funcBlock(1); _vm->_global->_inter_execPtr = blockPtr + size + 1; flag = evalBoolResult(); - } while (!flag && !_break && !_terminate && !_vm->_quitRequested); + } while (!flag && !_break && !_terminate && !_vm->quit()); _nestLevel[0]--; @@ -1269,7 +1269,7 @@ bool Inter_v1::o1_whileDo(OpFuncParams ¶ms) { } else _vm->_global->_inter_execPtr += size; - if (_break || _terminate || _vm->_quitRequested) { + if (_break || _terminate || _vm->quit()) { _vm->_global->_inter_execPtr = blockPtr; _vm->_global->_inter_execPtr += size; break; diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp index 2f1d2ec0be..b245001653 100644 --- a/engines/gob/inter_v2.cpp +++ b/engines/gob/inter_v2.cpp @@ -24,6 +24,7 @@ */ #include "common/endian.h" + #include "sound/mixer.h" #include "sound/mods/infogrames.h" @@ -1489,7 +1490,7 @@ void Inter_v2::o2_scroll() { curX = startX; curY = startY; - while (!_vm->_quitRequested && ((curX != endX) || (curY != endY))) { + while (!_vm->quit() && ((curX != endX) || (curY != endY))) { curX = stepX > 0 ? MIN(curX + stepX, (int) endX) : MAX(curX + stepX, (int) endX); curY = stepY > 0 ? MIN(curY + stepY, (int) endY) : diff --git a/engines/gob/mult.cpp b/engines/gob/mult.cpp index b9373d48b3..a502e92188 100644 --- a/engines/gob/mult.cpp +++ b/engines/gob/mult.cpp @@ -209,7 +209,7 @@ void Mult::playMult(int16 startFrame, int16 endFrame, char checkEscape, _frame++; _vm->_util->waitEndFrame(); - } while (!stop && !stopNoClear && !_vm->_quitRequested); + } while (!stop && !stopNoClear && !_vm->quit()); if (!stopNoClear) { if (_animDataAllocated) { diff --git a/engines/gob/palanim.cpp b/engines/gob/palanim.cpp index 71e73adf53..4f2e921dcb 100644 --- a/engines/gob/palanim.cpp +++ b/engines/gob/palanim.cpp @@ -23,6 +23,7 @@ * */ + #include "gob/gob.h" #include "gob/palanim.h" #include "gob/global.h" @@ -131,7 +132,7 @@ void PalAnim::fade(Video::PalDesc *palDesc, int16 fadeV, int16 allColors) { bool stop; int16 i; - if (_vm->_quitRequested) + if (_vm->quit()) return; _fadeValue = (fadeV < 0) ? -fadeV : 2; diff --git a/engines/gob/sound/sound.cpp b/engines/gob/sound/sound.cpp index 2d2bf8e043..7b93003791 100644 --- a/engines/gob/sound/sound.cpp +++ b/engines/gob/sound/sound.cpp @@ -369,7 +369,7 @@ void Sound::blasterWaitEndPlay(bool interruptible, bool stopComp) { if (stopComp) _blaster->endComposition(); - while (_blaster->isPlaying() && !_vm->_quitRequested) { + while (_blaster->isPlaying() && !_vm->quit()) { if (interruptible && (_vm->_util->checkKey() == 0x11B)) { WRITE_VAR(57, (uint32) -1); return; diff --git a/engines/gob/util.cpp b/engines/gob/util.cpp index 4987426fe0..0a7b889031 100644 --- a/engines/gob/util.cpp +++ b/engines/gob/util.cpp @@ -23,7 +23,6 @@ * */ -#include "common/events.h" #include "gob/gob.h" #include "gob/util.h" @@ -72,7 +71,7 @@ void Util::longDelay(uint16 msecs) { _vm->_video->waitRetrace(); processInput(); delay(15); - } while (!_vm->_quitRequested && + } while (!_vm->quit() && ((g_system->getMillis() * _vm->_global->_speedFactor) < time)); } @@ -118,9 +117,6 @@ void Util::processInput(bool scroll) { break; case Common::EVENT_KEYUP: break; - case Common::EVENT_QUIT: - _vm->_quitRequested = true; - break; default: break; } diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp index aa47e6cf84..daf7bdd801 100644 --- a/engines/gob/videoplayer.cpp +++ b/engines/gob/videoplayer.cpp @@ -23,6 +23,7 @@ * */ + #include "gob/videoplayer.h" #include "gob/global.h" #include "gob/util.h" @@ -568,7 +569,7 @@ bool VideoPlayer::doPlay(int16 frame, int16 breakKey, _vm->_util->processInput(); - if (_vm->_quitRequested) { + if (_vm->quit()) { _primaryVideo->getVideo()->disableSound(); return true; } |