[Scummvm-git-logs] scummvm master -> 8b67e52ae164790a2a16422b449922ab5dd77e76
dreammaster
noreply at scummvm.org
Wed Oct 22 10:14:49 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
8b67e52ae1 BAGEL: METAGAME: Support GMM savegame loading
Commit: 8b67e52ae164790a2a16422b449922ab5dd77e76
https://github.com/scummvm/scummvm/commit/8b67e52ae164790a2a16422b449922ab5dd77e76
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-10-22T03:14:44-07:00
Commit Message:
BAGEL: METAGAME: Support GMM savegame loading
Changed paths:
engines/bagel/hodjnpodj/metagame/frame/hodjpodj.cpp
engines/bagel/hodjnpodj/metagame/frame/hodjpodj.h
engines/bagel/hodjnpodj/metagame/saves/savegame.cpp
engines/bagel/hodjnpodj/metagame/saves/savegame.h
diff --git a/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.cpp b/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.cpp
index ad43cb8457b..4ae814fd6d0 100644
--- a/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.cpp
+++ b/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.cpp
@@ -304,9 +304,11 @@ CHodjPodjWindow::CHodjPodjWindow() {
lpMetaGame = &g_engine->_bfcMgr;
- // Check for skipping intro
- if (ConfMan.getBool("skip_intro")) {
- // Don't play the into movie
+ if (ConfMan.hasKey("save_slot")) {
+ // Loading savegame from GMM
+ PostMessage(WM_COMMAND, IDC_GMM_LOADING);
+ } else if (ConfMan.getBool("skip_intro")) {
+ // Skipping intro, so don't play the into movie
PostMessage(WM_COMMAND, IDC_MAINDLG);
} else {
// Play the intro movie
@@ -667,6 +669,13 @@ bool CHodjPodjWindow::OnCommand(WPARAM wParam, LPARAM lParam) {
PostMessage(WM_COMMAND, IDC_MAINDLG);
break;
+ case IDC_GMM_LOADING:
+ if (Restore(ConfMan.getInt("save_slot")))
+ PostMessage(WM_COMMAND, IDC_META);
+ else
+ PostMessage(WM_COMMAND, IDC_MAINDLG);
+ break;
+
case IDC_GRANDTOUR:
BlackScreen();
@@ -2044,7 +2053,7 @@ void CHodjPodjWindow::HandleError(ERROR_CODE errCode) {
* ERROR_CODE = Error return code
*
****************************************************************/
-bool CHodjPodjWindow::Restore() {
+bool CHodjPodjWindow::Restore(int iStartupGameNum) {
bool bSuccess;
ERROR_CODE errCode;
@@ -2060,7 +2069,7 @@ bool CHodjPodjWindow::Restore() {
PositionAtHomePath();
- bSuccess = Saves::RestoreGame((CWnd *)this, pGamePalette, &errCode);
+ bSuccess = Saves::RestoreGame((CWnd *)this, pGamePalette, &errCode, iStartupGameNum);
lpMetaGame->m_bScrolling = bScrollingEnabled;
lpMetaGame->m_bSlowCPU = bSlowCPU;
diff --git a/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.h b/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.h
index bbc683edca4..7aa1fc9aa2e 100644
--- a/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.h
+++ b/engines/bagel/hodjnpodj/metagame/frame/hodjpodj.h
@@ -40,6 +40,7 @@ namespace Metagame {
namespace Frame {
// Button Identifier codes (BIDs)
+#define IDC_GMM_LOADING 889
#define IDC_ZOOM 888
#define IDC_META 887
#define IDC_QUIT 886
@@ -100,7 +101,7 @@ public:
bool CheckLowMemory();
- bool Restore();
+ bool Restore(int iStartupGameNum = -1);
void ShowCredits();
static void ReleaseResources();
diff --git a/engines/bagel/hodjnpodj/metagame/saves/savegame.cpp b/engines/bagel/hodjnpodj/metagame/saves/savegame.cpp
index dbeb5b59030..27c3830f51c 100644
--- a/engines/bagel/hodjnpodj/metagame/saves/savegame.cpp
+++ b/engines/bagel/hodjnpodj/metagame/saves/savegame.cpp
@@ -128,8 +128,7 @@ bool SaveGame(CWnd *pWnd, CPalette *pPalette, ERROR_CODE *pErrCode) {
return bSaved;
}
-bool RestoreGame(CWnd *pWnd, CPalette *pPalette, ERROR_CODE *pErrCode) {
- int iGameNum;
+bool RestoreGame(CWnd *pWnd, CPalette *pPalette, ERROR_CODE *pErrCode, int iGameNum) {
bool bRestored;
// Validate input
@@ -146,11 +145,16 @@ bool RestoreGame(CWnd *pWnd, CPalette *pPalette, ERROR_CODE *pErrCode) {
*pErrCode = GetSaveGameDescriptions();
if (*pErrCode == ERR_NONE) {
- // Open the Restore Game dialog box
- CRestoreDlg dlgRestore(pszDesc, pWnd, pPalette);
+ if (iGameNum == -1) {
+ // Open the Restore Game dialog box
+ CRestoreDlg dlgRestore(pszDesc, pWnd, pPalette);
+ iGameNum = dlgRestore.DoModal();
+ if (iGameNum != -1)
+ ++iGameNum;
+ }
- if ((iGameNum = dlgRestore.DoModal()) != -1) {
- if (g_engine->loadGameState(iGameNum + 1).getCode() != Common::kNoError)
+ if (iGameNum != -1) {
+ if (g_engine->loadGameState(iGameNum).getCode() != Common::kNoError)
*pErrCode = ERR_FOPEN;
} else {
bRestored = false;
diff --git a/engines/bagel/hodjnpodj/metagame/saves/savegame.h b/engines/bagel/hodjnpodj/metagame/saves/savegame.h
index 75816675691..4d3bcb69dd9 100644
--- a/engines/bagel/hodjnpodj/metagame/saves/savegame.h
+++ b/engines/bagel/hodjnpodj/metagame/saves/savegame.h
@@ -55,7 +55,7 @@ extern bool SaveGame(CWnd *, CPalette *, ERROR_CODE *);
* Shows a Restore-Game dialog box
* User can select which game they want to restore.
**/
-extern bool RestoreGame(CWnd *pWnd, CPalette *pPalette, ERROR_CODE *pErrCode);
+extern bool RestoreGame(CWnd *pWnd, CPalette *pPalette, ERROR_CODE *pErrCode, int iGameNum = -1);
} // namespace Saves
} // namespace Metagame
More information about the Scummvm-git-logs
mailing list