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:
parent
cfdd094d29
commit
ca97d1b278
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user