[Scummvm-git-logs] scummvm master -> 6524cf307392cf809774b13afa4cc2c7ab3e6024

dreammaster noreply at scummvm.org
Mon Sep 8 10:31:16 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:
6524cf3073 BAGEL: DEMO: Show splash screens before intro video


Commit: 6524cf307392cf809774b13afa4cc2c7ab3e6024
    https://github.com/scummvm/scummvm/commit/6524cf307392cf809774b13afa4cc2c7ab3e6024
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-09-08T03:31:10-07:00

Commit Message:
BAGEL: DEMO: Show splash screens before intro video

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


diff --git a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
index c0e6c466f08..5cea5473378 100644
--- a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
+++ b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.cpp
@@ -21,6 +21,7 @@
 
 #include "bagel/hodjnpodj/metagame/demo/hodjpodj.h"
 #include "bagel/hodjnpodj/metagame/zoom/init.h"
+#include "bagel/hodjnpodj/hnplibs/bitmaps.h"
 #include "bagel/hodjnpodj/hodjnpodj.h"
 #include "bagel/boflib/sound.h"
 
@@ -29,12 +30,26 @@ namespace HodjNPodj {
 namespace Metagame {
 namespace Demo {
 
-#define IDC_PLAY_DEMO_MOVIE		9999
+#define IDC_SPLASH1				1001
+#define IDC_SPLASH2				1002
+#define IDC_PLAY_DEMO_MOVIE		1003
 #define IDC_ZOOM				888
+
+#define TIMER_SPLASH1			1
+#define TIMER_SPLASH2			2
+#define SPLASH_DURATION			5000
+
 #define MOVIE_ID_INTRO			1
 #define MOVIE_INTRO				"art/demovid.avi"
+#define BITMAP_VIRGIN			"art/virgin.bmp"
+#define BITMAP_BOFFO			"art/boffo.bmp"
+
+#define LOGO_MIDI				"sound/maintitl.mid"
 
 BEGIN_MESSAGE_MAP(CHodjPodjWindow, CFrameWnd)
+ON_WM_TIMER()
+ON_WM_LBUTTONDOWN()
+ON_WM_CLOSE()
 END_MESSAGE_MAP()
 
 CHodjPodjWindow::CHodjPodjWindow() {
@@ -55,7 +70,7 @@ CHodjPodjWindow::CHodjPodjWindow() {
 
 	BeginWaitCursor();
 	ShowWindow(SW_SHOWNORMAL);
-	BlackScreen();
+	blackScreen();
 	EndWaitCursor();
 
 	pDC = GetDC();                                  // get a device context for our window
@@ -64,25 +79,39 @@ CHodjPodjWindow::CHodjPodjWindow() {
 	delete pBitmap;
 	ReleaseDC(pDC);
 
-	// Play the demo intro movie
-	PostMessage(WM_COMMAND, IDC_PLAY_DEMO_MOVIE);
+	// Show the Virgin splash screen
+	PostMessage(WM_COMMAND, IDC_SPLASH1);
 }
 
 bool CHodjPodjWindow::OnCommand(WPARAM wParam, LPARAM lParam) {
+	_currentCommand = wParam;
+
 	switch (wParam) {
+	case IDC_SPLASH1:
+		drawBitmap(BITMAP_VIRGIN);
+		startBackgroundMidi();
+		CWnd::SetTimer(TIMER_SPLASH1, SPLASH_DURATION, nullptr);
+		break;
+
+	case IDC_SPLASH2:
+		drawBitmap(BITMAP_BOFFO);
+		CWnd::SetTimer(TIMER_SPLASH2, SPLASH_DURATION, nullptr);
+		break;
+
 	case IDC_PLAY_DEMO_MOVIE:
-		PlayMovie(MOVIE_ID_INTRO, MOVIE_INTRO, false);
+		playMovie(MOVIE_ID_INTRO, MOVIE_INTRO, false);
 		break;
 
 	case MOVIE_OVER:
 		// Switch to Zoom map
 		ShowCursor(true);
-		BlackScreen();
+		blackScreen();
 		PostMessage(WM_COMMAND, IDC_ZOOM);
 		break;
 
 	case IDC_ZOOM:
-		BlackScreen();
+		blackScreen();
+		stopBackgroundMidi();
 
 		Metagame::Zoom::RunZoomMap(m_hWnd, true);
 		break;
@@ -94,7 +123,7 @@ bool CHodjPodjWindow::OnCommand(WPARAM wParam, LPARAM lParam) {
 	return true;
 }
 
-void CHodjPodjWindow::BlackScreen() {
+void CHodjPodjWindow::blackScreen() {
 	CDC *pDC;
 	CBrush Brush(RGB(0, 0, 0));
 	CPalette *pPalOld = nullptr;
@@ -121,11 +150,20 @@ void CHodjPodjWindow::BlackScreen() {
 	ReleaseDC(pDC);
 }
 
+void CHodjPodjWindow::drawBitmap(const char *filename) {
+	CDC *dc = GetDC();
+	CBitmap *bitmap = FetchBitmap(dc, &pGamePalette, filename);
+
+	PaintBitmap(dc, nullptr, bitmap, 0, 0);
 
-void CHodjPodjWindow::PlayMovie(const int nMovieId, const char *pszMovie, bool bScroll) {
+	delete bitmap;
+	ReleaseDC(dc);
+}
+
+void CHodjPodjWindow::playMovie(const int nMovieId, const char *pszMovie, bool bScroll) {
 	POINT   ptMovie;
 
-	BlackScreen();
+	blackScreen();
 
 	pMovie.nMovieId = nMovieId;
 
@@ -135,6 +173,57 @@ void CHodjPodjWindow::PlayMovie(const int nMovieId, const char *pszMovie, bool b
 	pMovie.BlowWindow((CWnd *)this, bScroll, pszMovie, ptMovie.x, ptMovie.y);
 }
 
+
+void CHodjPodjWindow::startBackgroundMidi() {
+	if (pBackgroundMidi == nullptr) {
+		pBackgroundMidi = new CSound(this, LOGO_MIDI, SOUND_MIDI | SOUND_LOOP /* | SOUND_DONT_LOOP_TO_END */);
+		(*pBackgroundMidi).play();
+	}
+}
+
+void CHodjPodjWindow::stopBackgroundMidi() {
+	if (pBackgroundMidi != nullptr) {
+		(*pBackgroundMidi).stop();
+		delete pBackgroundMidi;
+		pBackgroundMidi = nullptr;
+	}
+}
+
+void CHodjPodjWindow::OnTimer(uintptr nEventID) {
+	switch (nEventID) {
+	case TIMER_SPLASH1:
+		KillTimer(TIMER_SPLASH1);
+		PostMessage(WM_COMMAND, IDC_SPLASH2);
+		break;
+	case TIMER_SPLASH2:
+		KillTimer(TIMER_SPLASH2);
+		PostMessage(WM_COMMAND, IDC_PLAY_DEMO_MOVIE);
+		break;
+	default:
+		break;
+	}
+}
+
+void CHodjPodjWindow::OnLButtonDown(uint nFlags, CPoint point) {
+	switch (_currentCommand) {
+	case IDC_SPLASH1:
+		OnTimer(TIMER_SPLASH1);
+		break;
+	case IDC_SPLASH2:
+		OnTimer(TIMER_SPLASH2);
+		break;
+	default:
+		break;
+	}
+}
+
+void CHodjPodjWindow::OnClose() {
+	stopBackgroundMidi();
+
+	KillTimer(TIMER_SPLASH1);
+	KillTimer(TIMER_SPLASH2);
+}
+
 } // 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 24a41076f7a..e7f2ab73963 100644
--- a/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h
+++ b/engines/bagel/hodjnpodj/metagame/demo/hodjpodj.h
@@ -23,16 +23,8 @@
 #define BAGEL_METAGAME_DEMO_HODJPODJ_H
 
 #include "bagel/hodjnpodj/globals.h"
-#include "bagel/boflib/error.h"
-#include "bagel/hodjnpodj/hnplibs/bitmaps.h"
-#include "bagel/hodjnpodj/hnplibs/dibdoc.h"
-#include "bagel/hodjnpodj/hnplibs/dibapi.h"
-#include "bagel/hodjnpodj/hnplibs/gamedll.h"
-#include "bagel/hodjnpodj/hnplibs/stdinc.h"
-#include "bagel/hodjnpodj/hnplibs/text.h"
-#include "bagel/hodjnpodj/metagame/frame/resource.h"
 #include "bagel/hodjnpodj/metagame/frame/movytmpl.h"
-#include "bagel/hodjnpodj/metagame/bgen/bfc.h"
+#include "bagel/boflib/sound.h"
 
 namespace Bagel {
 namespace HodjNPodj {
@@ -43,17 +35,25 @@ class CHodjPodjWindow : public CFrameWnd {
 private:
 	Frame::CMovieWindow pMovie;
 	CPalette *pGamePalette = nullptr;
+	CSound *pBackgroundMidi = nullptr;
+	int _currentCommand = -1;
+
+	void drawBitmap(const char *filename);
+	void startBackgroundMidi();
+	void stopBackgroundMidi();
 
 public:
 	CHodjPodjWindow();
 
-	void BlackScreen();
+	void blackScreen();
 
-	void PlayMovie(const int, const char *, bool);
+	void playMovie(const int, const char *, bool);
 
 protected:
 	bool OnCommand(WPARAM wParam, LPARAM lParam) override;
-	void OnPaint();
+	void OnTimer(uintptr nEventID);
+	void OnLButtonDown(uint nFlags, CPoint point);
+	void OnClose();
 
 	DECLARE_MESSAGE_MAP()
 };




More information about the Scummvm-git-logs mailing list