1
0
mirror of https://github.com/blupi-games/planetblupi synced 2024-12-30 10:15:36 +01:00

Add a --play-record arg for playing a specific demo file

This commit is contained in:
Mathieu Schroeter 2017-08-26 22:40:59 +02:00
parent cfdd094d29
commit ca97d1b278
4 changed files with 31 additions and 12 deletions

View File

@ -58,12 +58,13 @@ CMovie * g_pMovie = nullptr; // movie principal
CDecor * g_pDecor = nullptr; CDecor * g_pDecor = nullptr;
std::thread * g_updateThread = nullptr; std::thread * g_updateThread = nullptr;
bool g_bFullScreen = false; // false si mode de test bool g_bFullScreen = false; // false si mode de test
Sint32 g_speedRate = 1; Sint32 g_speedRate = 1;
Sint32 g_timerInterval = 50; // inverval = 50ms Sint32 g_timerInterval = 50; // inverval = 50ms
int g_rendererType = 0; int g_rendererType = 0;
bool g_enableRecorder = false; bool g_enableRecorder = false;
bool g_restoreBugs = false; // restore original < v1.9 bugs std::string g_playRecord;
bool g_restoreBugs = false; // restore original < v1.9 bugs
enum Settings { enum Settings {
SETTING_FULLSCREEN = 1 << 0, SETTING_FULLSCREEN = 1 << 0,
@ -527,6 +528,10 @@ parseArgs (int argc, char * argv[], bool & exit)
{"-c", "--enable-recorder"}, {"-c", "--enable-recorder"},
"enable the recorder feature (F3/F4)", "enable the recorder feature (F3/F4)",
0}, 0},
{"playrecord",
{"-p", "--play-record"},
"play a record generated by F3 (--enable-recorder)",
1},
{"restorebugs", {"restorebugs",
{"-b", "--restore-bugs"}, {"-b", "--restore-bugs"},
"restore funny original bugs of older versions < v1.9", "restore funny original bugs of older versions < v1.9",
@ -590,6 +595,9 @@ parseArgs (int argc, char * argv[], bool & exit)
if (args["enablerecorder"]) if (args["enablerecorder"])
g_enableRecorder = true; g_enableRecorder = true;
if (args["playrecord"])
g_playRecord = args["playrecord"].as<std::string> ();
if (args["restorebugs"]) if (args["restorebugs"])
g_restoreBugs = true; g_restoreBugs = true;

View File

@ -22,6 +22,7 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#include <libintl.h> #include <libintl.h>
#include <string>
#include "config.h" #include "config.h"
@ -30,6 +31,7 @@ extern SDL_Renderer * g_renderer;
extern bool g_bFullScreen; extern bool g_bFullScreen;
extern bool g_restoreBugs; extern bool g_restoreBugs;
extern bool g_enableRecorder; extern bool g_enableRecorder;
extern std::string g_playRecord;
struct Point { struct Point {
Sint32 x; Sint32 x;

View File

@ -4612,7 +4612,7 @@ CEvent::DemoRecStop ()
// Lit le fichier sur disque. // Lit le fichier sur disque.
bool bool
CEvent::DemoPlayStart () CEvent::DemoPlayStart (const std::string * demoFile)
{ {
std::string filename; std::string filename;
FILE * file = nullptr; FILE * file = nullptr;
@ -4620,8 +4620,11 @@ CEvent::DemoPlayStart ()
Sint32 world, time, total; Sint32 world, time, total;
size_t nb; size_t nb;
filename = string_format (GetBaseDir () + "data/demo%.3d.blp", m_demoNumber); filename =
file = fopen (filename.c_str (), "rb"); demoFile
? *demoFile
: string_format (GetBaseDir () + "data/demo%.3d.blp", m_demoNumber);
file = fopen (filename.c_str (), "rb");
if (file == nullptr) if (file == nullptr)
{ {
DemoPlayStop (); DemoPlayStop ();
@ -4819,7 +4822,13 @@ CEvent::DemoStep ()
if (m_phase == EV_PHASE_INIT) if (m_phase == EV_PHASE_INIT)
{ {
if (m_demoTime > DEF_TIME_DEMO) // ~30 secondes écoulées ? if (!g_playRecord.empty ())
{
m_demoNumber = -1;
DemoPlayStart (&g_playRecord);
g_playRecord = "";
}
else if (m_demoTime > DEF_TIME_DEMO) // ~30 secondes écoulées ?
{ {
m_demoNumber = 0; m_demoNumber = 0;
DemoPlayStart (); // démarre une démo automatique DemoPlayStart (); // démarre une démo automatique
@ -4885,7 +4894,7 @@ CEvent::DemoStep ()
TreatEventBase (event); TreatEventBase (event);
if (m_demoIndex >= m_demoEnd) if (m_demoIndex >= m_demoEnd && m_demoNumber >= 0)
{ {
m_demoNumber++; // démo suivante m_demoNumber++; // démo suivante
if (!DemoPlayStart ()) // démarre la démo suivante if (!DemoPlayStart ()) // démarre la démo suivante

View File

@ -175,7 +175,7 @@ protected:
void DemoRecStart (); void DemoRecStart ();
void DemoRecStop (); void DemoRecStop ();
bool DemoPlayStart (); bool DemoPlayStart (const std::string * demoFile = nullptr);
void DemoPlayStop (); void DemoPlayStop ();
static void static void
WinToSDLEvent (Uint32 msg, WPARAM wParam, LPARAM lParam, SDL_Event & event); WinToSDLEvent (Uint32 msg, WPARAM wParam, LPARAM lParam, SDL_Event & event);