[Scummvm-git-logs] scummvm master -> 21fc7be218583cc0a1f2024d2956b02ef0db4a08

dreammaster noreply at scummvm.org
Sat Sep 13 09:49:45 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:
21fc7be218 BAGEL: DEMO: Hooking up Zoom map to load minigame via parent window


Commit: 21fc7be218583cc0a1f2024d2956b02ef0db4a08
    https://github.com/scummvm/scummvm/commit/21fc7be218583cc0a1f2024d2956b02ef0db4a08
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-09-13T02:49:34-07:00

Commit Message:
BAGEL: DEMO: Hooking up Zoom map to load minigame via parent window

Changed paths:
    engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
    engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h
    engines/bagel/hodjnpodj/metagame/zoom/zoommap.cpp


diff --git a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
index 88e9d58cf76..0dbdd47da89 100644
--- a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
+++ b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
@@ -52,6 +52,7 @@ ON_WM_LBUTTONDOWN()
 ON_WM_CLOSE()
 ON_WM_KEYDOWN()
 ON_WM_SYSCHAR()
+ON_WM_PARENTNOTIFY()
 END_MESSAGE_MAP()
 
 CHodjPodjWindow::CHodjPodjWindow() {
@@ -113,7 +114,6 @@ bool CHodjPodjWindow::OnCommand(WPARAM wParam, LPARAM lParam) {
 	case IDC_ZOOM:
 		blackScreen();
 		stopBackgroundMidi();
-		SendMessage(WM_CLOSE);
 
 		Metagame::Zoom::RunZoomMap(m_hWnd, true);
 		break;
@@ -241,6 +241,62 @@ void CHodjPodjWindow::OnClose() {
 	CFrameWnd::OnClose();
 }
 
+void CHodjPodjWindow::OnParentNotify(unsigned int msg, LPARAM lParam) {
+	LPARAM nGameReturn;
+
+	// Ignore messages during app shutdown
+	if (AfxGetApp()->isQuitting())
+		return;
+
+	switch (msg) {
+	case WM_DESTROY:
+		nGameReturn = lParam;
+
+		if (nGameReturn < 0) {
+			// Restart intro video
+			PostMessage(WM_COMMAND, IDC_PLAY_DEMO_MOVIE);
+
+		} else {
+			loadNewDLL(nGameReturn);
+		}
+		break;
+
+	default:
+		break;
+	}
+
+	CWnd::OnParentNotify(msg, lParam);
+}
+
+void CHodjPodjWindow::loadNewDLL(LPARAM lParam) {
+	uint nWhichDLL;
+	CWinApp *pMyApp;
+
+	pMyApp = AfxGetApp();
+	nWhichDLL = lParam - MG_GAME_BASE;
+	assert(nWhichDLL < MG_GAME_COUNT);
+
+	blackScreen();
+
+	stopBackgroundMidi();
+
+	assert(CMgStatic::cGameTable[nWhichDLL]._initFn != nullptr);
+
+	FPDLLFUNCT  lpfnGame;
+
+	GAMESTRUCT *lpGameStruct = new GAMESTRUCT;
+	lpGameStruct->lCrowns = 1000;
+	lpGameStruct->lScore = 0;
+	lpGameStruct->nSkillLevel = SKILLLEVEL_MEDIUM;
+	lpGameStruct->bSoundEffectsEnabled = true;
+	lpGameStruct->bMusicEnabled = true;
+	lpGameStruct->bPlayingMetagame = false;
+	lpGameStruct->bPlayingHodj = true;
+
+	lpfnGame = CMgStatic::cGameTable[nWhichDLL]._initFn;
+	(void)lpfnGame(m_hWnd, lpGameStruct);
+}
+
 } // namespace Demo
 } // namespace Metagame
 } // namespace HodjNPodj
diff --git a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h
index 439b5debaee..29199bede44 100644
--- a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h
+++ b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h
@@ -49,6 +49,7 @@ public:
 
 	void playMovie(const int, const char *, bool);
 	void skipSplash();
+	void loadNewDLL(LPARAM lParam);
 
 protected:
 	bool OnCommand(WPARAM wParam, LPARAM lParam) override;
@@ -57,6 +58,7 @@ protected:
 	void OnKeyDown(unsigned int nChar, unsigned int nRepCnt, unsigned int nFlags);
 	void OnSysChar(unsigned int nChar, unsigned int nRepCnt, unsigned int nFlags);
 	void OnClose();
+	void OnParentNotify(unsigned int msg, LPARAM lParam);
 
 	DECLARE_MESSAGE_MAP()
 };
diff --git a/engines/bagel/hodjnpodj/metagame/zoom/zoommap.cpp b/engines/bagel/hodjnpodj/metagame/zoom/zoommap.cpp
index 0e97db7dad5..40add6c1b56 100644
--- a/engines/bagel/hodjnpodj/metagame/zoom/zoommap.cpp
+++ b/engines/bagel/hodjnpodj/metagame/zoom/zoommap.cpp
@@ -31,7 +31,6 @@ namespace Zoom {
 
 #define SPLASHSPEC  ".\\ART\\ZOOMMAP.BMP"
 
-#define IDC_SLIDESHOW	998
 #define IDC_LEAVE		999
 
 extern HCURSOR          hGameCursor;
@@ -88,9 +87,11 @@ static const int16 MINIGAME_VALUES[21] = {
 };
 
 static const int16 DEMO_VALUES[30] = {
-	-1, 110, -1, -1, -1, MG_GAME_ARCHEROIDS, -1, -1, -1, -1, -1,
-	MG_GAME_ARTPARTS, MG_GAME_BARBERSHOP,
-	-1, -1, -1, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2
+	-9, MG_GAME_ARTPARTS, -9, -9, -9,
+	MG_GAME_CRYPTOGRAMS, -9, -9, -9, -9, -9,
+	MG_GAME_MAZEODOOM, -9, -9, MG_GAME_PEGGLEBOZ,
+	MG_GAME_RIDDLES, -9, -9, -9, -1,
+	-2, -2, -2, -2, -2, -2, -2, -2, -2, -2
 };
 
 static const char *MINIGAME_DESC[21] = {       // set the display names for when the cursor passes over a game rect
@@ -443,9 +444,18 @@ void CALLBACK lpfnOptionCallback(CWnd * pWnd) {
 
 bool CMainZoomWindow::OnCommand(WPARAM wParam, LPARAM lParam) {
 	if (HIWORD(lParam) == BN_CLICKED) {
-		if (wParam == IDC_LEAVE) {
+		switch (wParam) {
+		case IDC_LEAVE:
 			nReturnValue = -1;
 			PostMessage(WM_CLOSE);
+			break;
+
+		case IDC_QUIT:
+			AfxGetApp()->quit();
+			break;
+
+		default:
+			break;
 		}
 	}
 	(*this).SetFocus();                         // Reset focus back to the main window
@@ -460,7 +470,7 @@ void CMainZoomWindow::OnLButtonDown(unsigned int nFlags, CPoint point) {
 	if (x != -1) {
 		// Check to see if player clicked on a game
 		int game = (_isDemo ? DEMO_VALUES : MINIGAME_VALUES)[x];
-		if (game == -1 && m_bShowExit == false) {
+		if (game == -9 || (game == -1 && !m_bShowExit)) {
 			CWnd::OnLButtonDown(nFlags, point);
 		} else if (game == -2) {
 			// Demo Hype dialog
@@ -568,12 +578,12 @@ void CMainZoomWindow::OnTimer(uintptr nEventID) {
 	// Add Quit and Slide Show buttons
 	CRect ssRect((GAME_WIDTH / 2) - 120, 450, (GAME_WIDTH / 2) - 20, 470);
 	pSlideshowButton = new CColorButton();
-	pSlideshowButton->Create("Slide Show", BS_OWNERDRAW | WS_CHILD | WS_VISIBLE, ssRect, this, IDC_SLIDESHOW);
+	pSlideshowButton->Create("Slide Show", BS_OWNERDRAW | WS_CHILD | WS_VISIBLE, ssRect, this, IDC_LEAVE);
 	pSlideshowButton->SetPalette(pGamePalette);
 
 	CRect quitRect((GAME_WIDTH / 2) + 20, 450, (GAME_WIDTH / 2) + 120, 470);
 	pReturnButton = new CColorButton();
-	pReturnButton->Create("Quit", BS_OWNERDRAW | WS_CHILD | WS_VISIBLE, quitRect, this, IDC_LEAVE);
+	pReturnButton->Create("Quit", BS_OWNERDRAW | WS_CHILD | WS_VISIBLE, quitRect, this, IDC_QUIT);
 	pReturnButton->SetPalette(pGamePalette);
 
 	// Set the screen to redraw




More information about the Scummvm-git-logs mailing list