[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