[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