From 99188a101a797e2179efb068fe9bc7e4918ad663 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Thu, 1 Aug 2024 19:39:16 +0200 Subject: [PATCH] Call System Functions: Move EasyRPG Extensions to a higher ID to prevent conflicts Minor enhancements --- src/game_interpreter.cpp | 2 +- src/game_interpreter_map.cpp | 45 ++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/game_interpreter.cpp b/src/game_interpreter.cpp index 1779e5c7d6..5166370616 100644 --- a/src/game_interpreter.cpp +++ b/src/game_interpreter.cpp @@ -785,7 +785,7 @@ bool Game_Interpreter::ExecuteCommand(lcf::rpg::EventCommand const& com) { return CommandManiacControlStrings(com); case Cmd::Maniac_CallCommand: return CommandManiacCallCommand(com); - case Cmd::EasyRpg_SetInterpreterFlag: //Cmd::EasyRpg_SetInterpreterFlag + case Cmd::EasyRpg_SetInterpreterFlag: return CommandEasyRpgSetInterpreterFlag(com); default: return true; diff --git a/src/game_interpreter_map.cpp b/src/game_interpreter_map.cpp index bb889e7f92..37269f0b66 100644 --- a/src/game_interpreter_map.cpp +++ b/src/game_interpreter_map.cpp @@ -736,48 +736,43 @@ bool Game_Interpreter_Map::CommandOpenSaveMenu(lcf::rpg::EventCommand const& com return false; } - // Parse common parameters - const int fullscreen_mode = com.parameters[1]; // Broken in Maniac. - const int pause_while_debugging = com.parameters[1]; // unused in our ingame debug screen. - - const int actor_index = ValueOrVariable(com.parameters[1], com.parameters[2]); - const bool is_db_actor = ValueOrVariable(com.parameters[3], com.parameters[4]); - + // Command "Call System Functions" switch (current_system_function) { case 1: // Load menu return CommandOpenLoadMenu(com); case 2: // Game menu - Scene::instance->SetRequestedScene(std::make_shared()); - break; + return CommandOpenMainMenu(com); case 3: // Toggle fullscreen - // TODO? Implement fullscreen mode once maniacs supports it + // TODO Implement fullscreen mode once maniacs supports it + // const int fullscreen_mode = com.parameters[1]; // Broken in Maniac. return CommandToggleFullscreen(com); case 4: // Settings menu return CommandOpenVideoOptions(com); case 5: // Debug menu + // const int pause_while_debugging = com.parameters[1]; // unused in our ingame debug screen. Scene::instance->SetRequestedScene(std::make_shared()); - break; + ++index; + return false; case 6: // License information menu - // TODO? Implement license information menu + // TODO Implement license information menu return true; case 7: // Reset game return CommandReturnToTitleScreen(com); - case 8: // EASYRPG Inventory menu - return RequestMainMenuScene(1); - case 9: // EASYRPG Skills menu - return RequestMainMenuScene(2, actor_index, is_db_actor); - case 10: // EASYRPG Equip menu - return RequestMainMenuScene(3, actor_index, is_db_actor); - case 11: // EASYRPG Status menu - return RequestMainMenuScene(4, actor_index, is_db_actor); - case 12: // EASYRPG Reorder Party menu - return RequestMainMenuScene(5); default: - return true; + if (Player::HasEasyRpgExtensions() && current_system_function >= 200 && current_system_function < 210) { + const int actor_index = ValueOrVariable(com.parameters[1], com.parameters[2]); + const bool is_db_actor = ValueOrVariable(com.parameters[3], com.parameters[4]); + + if (RequestMainMenuScene(current_system_function - 200, actor_index, is_db_actor)) { + ++index; + return false; + } + } else { + Output::Warning("CommandOpenSaveMenu: Unsupported scene {}", current_system_function); + } } - ++index; - return false; + return true; } bool Game_Interpreter_Map::CommandOpenMainMenu(lcf::rpg::EventCommand const&) { // code 11950