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

View File

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

View File

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

View File

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