GRIFFON: Fix the menu logic. Finally!

This commit is contained in:
Eugene Sandulenko 2019-11-11 11:30:02 +01:00
parent 477e12c1e1
commit 93be6abf58
4 changed files with 22 additions and 13 deletions

View File

@ -1004,7 +1004,7 @@ void GriffonEngine::damageNPC(int npcnum, int damage, int spell) {
if (_npcInfo[npcnum].script == kScriptEndOfGame) {
endOfGame();
_gameMode = kGameModeEnd;
_gameMode = kGameModeIntro;
}
}
}

View File

@ -107,7 +107,7 @@ void GriffonEngine::mainLoop() {
_console->onFrame();
updateEngine();
} while (!_shouldQuit && _gameMode != kGameModeEnd && _gameMode != kGameModeNewGame);
} while (!_shouldQuit && _gameMode == kGameModePlay);
}
void GriffonEngine::updateEngine() {
@ -163,7 +163,7 @@ void GriffonEngine::updateEngine() {
checkHit();
if (_gameMode == kGameModeEnd)
if (_gameMode != kGameModePlay)
return;
}
@ -246,7 +246,7 @@ void GriffonEngine::updateEngine() {
if (_player.hp <= 0) {
theEnd();
_gameMode = kGameModeEnd;
_gameMode = kGameModeIntro;
return;
}

View File

@ -137,13 +137,20 @@ Common::Error GriffonEngine::run() {
if (_shouldQuit)
return Common::kNoError;
while (!_shouldQuit) {
if (_gameMode != kGameModeNewGame)
title(0);
_gameMode = kGameModeIntro;
if (_gameMode == kGameModeNewGame) {
while (!_shouldQuit) {
switch (_gameMode) {
case kGameModeIntro:
case kGameModePlay:
title(0);
break;
case kGameModeNewGame:
newGame();
} else if (_gameMode == kGameModeLoadGame) {
break;
case kGameModeLoadGame:
_player.walkSpeed = 1.1f;
_animSpeed = 0.5f;
_attacking = false;
@ -157,6 +164,10 @@ Common::Error GriffonEngine::run() {
_secsInGame = 0;
loadMap(_curMap);
mainLoop();
break;
default:
error("Bad game mode: %d", _gameMode);
}
}

View File

@ -322,11 +322,9 @@ struct ObjectInfoStruct {
enum {
kGameModeIntro,
kGameModeEnd,
kGameModeSaveLoad,
kGameModePlay,
kGameModeNewGame,
kGameModeLoadGame,
kGameModePlay
kGameModeLoadGame
};
class GriffonEngine : public Engine {