[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