diff options
author | Eric Fry | 2018-06-25 22:21:51 +1000 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | d77dd6c14ab6c41513ed282597a6da82289061e8 (patch) | |
tree | dbe1fbbc37a2d155c68130aafc9024e9d7731462 /engines/illusions/duckman | |
parent | 92e74327e6cd92b9764c851f99f02a9fa238051f (diff) | |
download | scummvm-rg350-d77dd6c14ab6c41513ed282597a6da82289061e8.tar.gz scummvm-rg350-d77dd6c14ab6c41513ed282597a6da82289061e8.tar.bz2 scummvm-rg350-d77dd6c14ab6c41513ed282597a6da82289061e8.zip |
ILLUSIONS: Pause voice when entering in-game menu
Wire up load fail dialog when trying to restart from unsaved new game.
Diffstat (limited to 'engines/illusions/duckman')
-rw-r--r-- | engines/illusions/duckman/illusions_duckman.cpp | 4 | ||||
-rw-r--r-- | engines/illusions/duckman/menusystem_duckman.cpp | 19 | ||||
-rw-r--r-- | engines/illusions/duckman/menusystem_duckman.h | 2 | ||||
-rw-r--r-- | engines/illusions/duckman/scriptopcodes_duckman.cpp | 1 |
4 files changed, 22 insertions, 4 deletions
diff --git a/engines/illusions/duckman/illusions_duckman.cpp b/engines/illusions/duckman/illusions_duckman.cpp index 6ce29de8c6..38d3bab43c 100644 --- a/engines/illusions/duckman/illusions_duckman.cpp +++ b/engines/illusions/duckman/illusions_duckman.cpp @@ -1238,6 +1238,10 @@ void IllusionsEngine_Duckman::playTriggerCauseSound(uint32 verbId, uint32 object } bool IllusionsEngine_Duckman::loadSavegameFromScript(int16 slotNum, uint32 callingThreadId) { + if (_savegameSlotNum < 0) { + return false; // TODO need to handle reset from new game (without exising savegame). + } + const char *fileName = getSavegameFilename(_savegameSlotNum); bool success = loadgame(fileName); if (success) diff --git a/engines/illusions/duckman/menusystem_duckman.cpp b/engines/illusions/duckman/menusystem_duckman.cpp index 50ce9326c0..c773afc554 100644 --- a/engines/illusions/duckman/menusystem_duckman.cpp +++ b/engines/illusions/duckman/menusystem_duckman.cpp @@ -87,8 +87,10 @@ BaseMenu *DuckmanMenuSystem::createMenuById(int menuId) { return createOptionsMenu(); case kDuckmanDebugPauseMenu: return createDebugPauseMenu(); - case kDuckmanAddRemoveInventoryMenu: - return createAddRemoveInventoryMenu(); + case kDuckmanAddRemoveInventoryMenu: + return createAddRemoveInventoryMenu(); + case kDuckmanLoadGameFailedMenu: + return createLoadGameFailedMenu(); default: error("DuckmanMenuSystem::createMenuById() Invalid menu id %d", menuId); } @@ -107,6 +109,15 @@ BaseMenu *DuckmanMenuSystem::createLoadGameMenu() { return 0; // TODO } +BaseMenu *DuckmanMenuSystem::createLoadGameFailedMenu() { + BaseMenu *menu = new BaseMenu(this, 0x00120003, 12, 17, 11, 27, 0); + menu->addText("Load Game Failed"); + menu->addText("-------------------"); + menu->addMenuItem(new MenuItem("Continue", new MenuActionReturnChoice(this, 1))); + return menu; +} + + MenuItem *DuckmanMenuSystem::createOptionsSliderMenuItem(MenuActionUpdateSlider **action, const Common::String &text, SliderActionType type, BaseMenu *baseMenu) { int sliderValue = 0; Common::String sliderText = "{~~~~~~~~~~~~~~~~}"; @@ -261,8 +272,10 @@ int DuckmanMenuSystem::convertRootMenuId(uint32 menuId) { return kDuckmanSaveCompleteMenu; /* case 0x180006: // save game failed menu - case 0x180007: // load game failed menu */ + case 0x180007: // load game failed menu + return kDuckmanLoadGameFailedMenu; + /* TODO CHECKME Another pause menu? case 0x180008: menuData = &g_menuDataPause; diff --git a/engines/illusions/duckman/menusystem_duckman.h b/engines/illusions/duckman/menusystem_duckman.h index 5b3cd55758..edf8620020 100644 --- a/engines/illusions/duckman/menusystem_duckman.h +++ b/engines/illusions/duckman/menusystem_duckman.h @@ -37,6 +37,7 @@ namespace Illusions { enum { kDuckmanMainMenu, kDuckmanLoadGameMenu, + kDuckmanLoadGameFailedMenu, kDuckmanOptionsMenu, kDuckmanPauseMenu, kDuckmanDebugMenu, @@ -66,6 +67,7 @@ public://protected: BaseMenu *createMenuById(int menuId); BaseMenu *createMainMenu(); BaseMenu *createLoadGameMenu(); + BaseMenu *createLoadGameFailedMenu(); BaseMenu *createOptionsMenu(); BaseMenu *createPauseMenu(); BaseMenu *createQueryRestartMenu(); diff --git a/engines/illusions/duckman/scriptopcodes_duckman.cpp b/engines/illusions/duckman/scriptopcodes_duckman.cpp index 81c0c41e6c..1876b13593 100644 --- a/engines/illusions/duckman/scriptopcodes_duckman.cpp +++ b/engines/illusions/duckman/scriptopcodes_duckman.cpp @@ -672,7 +672,6 @@ void ScriptOpcodes_Duckman::opDisplayMenu(ScriptThread *scriptThread, OpCall &op } void ScriptOpcodes_Duckman::opSwitchMenuChoice(ScriptThread *scriptThread, OpCall &opCall) { - //_vm->_menuChoiceOfs = 156; // DEBUG Chose "Start game" opCall._deltaOfs += _vm->_menuChoiceOfs; } |