mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-17 23:21:22 +00:00
Merge branch 'demos-refactor' into 'next'
Demos refactor See merge request STJr/SRB2!853
This commit is contained in:
commit
4722fbbc2a
8 changed files with 2620 additions and 2543 deletions
|
@ -16,6 +16,7 @@ set(SRB2_CORE_SOURCES
|
||||||
f_finale.c
|
f_finale.c
|
||||||
f_wipe.c
|
f_wipe.c
|
||||||
filesrch.c
|
filesrch.c
|
||||||
|
g_demo.c
|
||||||
g_game.c
|
g_game.c
|
||||||
g_input.c
|
g_input.c
|
||||||
hu_stuff.c
|
hu_stuff.c
|
||||||
|
@ -71,6 +72,7 @@ set(SRB2_CORE_HEADERS
|
||||||
f_finale.h
|
f_finale.h
|
||||||
fastcmp.h
|
fastcmp.h
|
||||||
filesrch.h
|
filesrch.h
|
||||||
|
g_demo.h
|
||||||
g_game.h
|
g_game.h
|
||||||
g_input.h
|
g_input.h
|
||||||
g_state.h
|
g_state.h
|
||||||
|
|
|
@ -422,6 +422,7 @@ OBJS:=$(i_main_o) \
|
||||||
$(OBJDIR)/z_zone.o \
|
$(OBJDIR)/z_zone.o \
|
||||||
$(OBJDIR)/f_finale.o \
|
$(OBJDIR)/f_finale.o \
|
||||||
$(OBJDIR)/f_wipe.o \
|
$(OBJDIR)/f_wipe.o \
|
||||||
|
$(OBJDIR)/g_demo.o \
|
||||||
$(OBJDIR)/g_game.o \
|
$(OBJDIR)/g_game.o \
|
||||||
$(OBJDIR)/g_input.o \
|
$(OBJDIR)/g_input.o \
|
||||||
$(OBJDIR)/am_map.o \
|
$(OBJDIR)/am_map.o \
|
||||||
|
|
2501
src/g_demo.c
Normal file
2501
src/g_demo.c
Normal file
File diff suppressed because it is too large
Load diff
86
src/g_demo.h
Normal file
86
src/g_demo.h
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
// SONIC ROBO BLAST 2
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 1993-1996 by id Software, Inc.
|
||||||
|
// Copyright (C) 1998-2000 by DooM Legacy Team.
|
||||||
|
// Copyright (C) 1999-2020 by Sonic Team Junior.
|
||||||
|
//
|
||||||
|
// This program is free software distributed under the
|
||||||
|
// terms of the GNU General Public License, version 2.
|
||||||
|
// See the 'LICENSE' file for more details.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
/// \file g_demo.h
|
||||||
|
/// \brief Demo recording and playback
|
||||||
|
|
||||||
|
#ifndef __G_DEMO__
|
||||||
|
#define __G_DEMO__
|
||||||
|
|
||||||
|
#include "doomdef.h"
|
||||||
|
#include "doomstat.h"
|
||||||
|
#include "d_event.h"
|
||||||
|
|
||||||
|
// ======================================
|
||||||
|
// DEMO playback/recording related stuff.
|
||||||
|
// ======================================
|
||||||
|
|
||||||
|
// demoplaying back and demo recording
|
||||||
|
extern boolean demoplayback, titledemo, demorecording, timingdemo;
|
||||||
|
extern tic_t demostarttime;
|
||||||
|
|
||||||
|
// Quit after playing a demo from cmdline.
|
||||||
|
extern boolean singledemo;
|
||||||
|
extern boolean demo_start;
|
||||||
|
extern boolean demosynced;
|
||||||
|
|
||||||
|
extern mobj_t *metalplayback;
|
||||||
|
|
||||||
|
// Only called by startup code.
|
||||||
|
void G_RecordDemo(const char *name);
|
||||||
|
void G_RecordMetal(void);
|
||||||
|
void G_BeginRecording(void);
|
||||||
|
void G_BeginMetal(void);
|
||||||
|
|
||||||
|
// Only called by shutdown code.
|
||||||
|
void G_SetDemoTime(UINT32 ptime, UINT32 pscore, UINT16 prings);
|
||||||
|
UINT8 G_CmpDemoTime(char *oldname, char *newname);
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
GHC_NORMAL = 0,
|
||||||
|
GHC_SUPER,
|
||||||
|
GHC_FIREFLOWER,
|
||||||
|
GHC_INVINCIBLE,
|
||||||
|
GHC_NIGHTSSKIN, // not actually a colour
|
||||||
|
GHC_RETURNSKIN // ditto
|
||||||
|
} ghostcolor_t;
|
||||||
|
|
||||||
|
// Record/playback tics
|
||||||
|
void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum);
|
||||||
|
void G_WriteDemoTiccmd(ticcmd_t *cmd, INT32 playernum);
|
||||||
|
void G_GhostAddThok(void);
|
||||||
|
void G_GhostAddSpin(void);
|
||||||
|
void G_GhostAddRev(void);
|
||||||
|
void G_GhostAddColor(ghostcolor_t color);
|
||||||
|
void G_GhostAddFlip(void);
|
||||||
|
void G_GhostAddScale(fixed_t scale);
|
||||||
|
void G_GhostAddHit(mobj_t *victim);
|
||||||
|
void G_WriteGhostTic(mobj_t *ghost);
|
||||||
|
void G_ConsGhostTic(void);
|
||||||
|
void G_GhostTicker(void);
|
||||||
|
void G_ReadMetalTic(mobj_t *metal);
|
||||||
|
void G_WriteMetalTic(mobj_t *metal);
|
||||||
|
void G_SaveMetal(UINT8 **buffer);
|
||||||
|
void G_LoadMetal(UINT8 **buffer);
|
||||||
|
|
||||||
|
void G_DeferedPlayDemo(const char *demo);
|
||||||
|
void G_DoPlayDemo(char *defdemoname);
|
||||||
|
void G_TimeDemo(const char *name);
|
||||||
|
void G_AddGhost(char *defdemoname);
|
||||||
|
void G_FreeGhosts(void);
|
||||||
|
void G_DoPlayMetal(void);
|
||||||
|
void G_DoneLevelLoad(void);
|
||||||
|
void G_StopMetalDemo(void);
|
||||||
|
ATTRNORETURN void FUNCNORETURN G_StopMetalRecording(boolean kill);
|
||||||
|
void G_StopDemo(void);
|
||||||
|
boolean G_CheckDemoStatus(void);
|
||||||
|
|
||||||
|
#endif // __G_DEMO__
|
2500
src/g_game.c
2500
src/g_game.c
File diff suppressed because it is too large
Load diff
65
src/g_game.h
65
src/g_game.h
|
@ -17,6 +17,7 @@
|
||||||
#include "doomdef.h"
|
#include "doomdef.h"
|
||||||
#include "doomstat.h"
|
#include "doomstat.h"
|
||||||
#include "d_event.h"
|
#include "d_event.h"
|
||||||
|
#include "g_demo.h"
|
||||||
|
|
||||||
extern char gamedatafilename[64];
|
extern char gamedatafilename[64];
|
||||||
extern char timeattackfolder[64];
|
extern char timeattackfolder[64];
|
||||||
|
@ -31,21 +32,6 @@ extern char player_names[MAXPLAYERS][MAXPLAYERNAME+1];
|
||||||
extern player_t players[MAXPLAYERS];
|
extern player_t players[MAXPLAYERS];
|
||||||
extern boolean playeringame[MAXPLAYERS];
|
extern boolean playeringame[MAXPLAYERS];
|
||||||
|
|
||||||
// ======================================
|
|
||||||
// DEMO playback/recording related stuff.
|
|
||||||
// ======================================
|
|
||||||
|
|
||||||
// demoplaying back and demo recording
|
|
||||||
extern boolean demoplayback, titledemo, demorecording, timingdemo;
|
|
||||||
extern tic_t demostarttime;
|
|
||||||
|
|
||||||
// Quit after playing a demo from cmdline.
|
|
||||||
extern boolean singledemo;
|
|
||||||
extern boolean demo_start;
|
|
||||||
extern boolean demosynced;
|
|
||||||
|
|
||||||
extern mobj_t *metalplayback;
|
|
||||||
|
|
||||||
// gametic at level start
|
// gametic at level start
|
||||||
extern tic_t levelstarttic;
|
extern tic_t levelstarttic;
|
||||||
|
|
||||||
|
@ -173,7 +159,6 @@ void G_DoLoadLevel(boolean resetplayer);
|
||||||
void G_StartTitleCard(void);
|
void G_StartTitleCard(void);
|
||||||
void G_PreLevelTitleCard(void);
|
void G_PreLevelTitleCard(void);
|
||||||
boolean G_IsTitleCardAvailable(void);
|
boolean G_IsTitleCardAvailable(void);
|
||||||
void G_DeferedPlayDemo(const char *demo);
|
|
||||||
|
|
||||||
// Can be called by the startup code or M_Responder, calls P_SetupLevel.
|
// Can be called by the startup code or M_Responder, calls P_SetupLevel.
|
||||||
void G_LoadGame(UINT32 slot, INT16 mapoverride);
|
void G_LoadGame(UINT32 slot, INT16 mapoverride);
|
||||||
|
@ -184,54 +169,6 @@ void G_SaveGame(UINT32 slot);
|
||||||
|
|
||||||
void G_SaveGameOver(UINT32 slot, boolean modifylives);
|
void G_SaveGameOver(UINT32 slot, boolean modifylives);
|
||||||
|
|
||||||
// Only called by startup code.
|
|
||||||
void G_RecordDemo(const char *name);
|
|
||||||
void G_RecordMetal(void);
|
|
||||||
void G_BeginRecording(void);
|
|
||||||
void G_BeginMetal(void);
|
|
||||||
|
|
||||||
// Only called by shutdown code.
|
|
||||||
void G_SetDemoTime(UINT32 ptime, UINT32 pscore, UINT16 prings);
|
|
||||||
UINT8 G_CmpDemoTime(char *oldname, char *newname);
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GHC_NORMAL = 0,
|
|
||||||
GHC_SUPER,
|
|
||||||
GHC_FIREFLOWER,
|
|
||||||
GHC_INVINCIBLE,
|
|
||||||
GHC_NIGHTSSKIN, // not actually a colour
|
|
||||||
GHC_RETURNSKIN // ditto
|
|
||||||
} ghostcolor_t;
|
|
||||||
|
|
||||||
// Record/playback tics
|
|
||||||
void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum);
|
|
||||||
void G_WriteDemoTiccmd(ticcmd_t *cmd, INT32 playernum);
|
|
||||||
void G_GhostAddThok(void);
|
|
||||||
void G_GhostAddSpin(void);
|
|
||||||
void G_GhostAddRev(void);
|
|
||||||
void G_GhostAddColor(ghostcolor_t color);
|
|
||||||
void G_GhostAddFlip(void);
|
|
||||||
void G_GhostAddScale(fixed_t scale);
|
|
||||||
void G_GhostAddHit(mobj_t *victim);
|
|
||||||
void G_WriteGhostTic(mobj_t *ghost);
|
|
||||||
void G_ConsGhostTic(void);
|
|
||||||
void G_GhostTicker(void);
|
|
||||||
void G_ReadMetalTic(mobj_t *metal);
|
|
||||||
void G_WriteMetalTic(mobj_t *metal);
|
|
||||||
void G_SaveMetal(UINT8 **buffer);
|
|
||||||
void G_LoadMetal(UINT8 **buffer);
|
|
||||||
|
|
||||||
void G_DoPlayDemo(char *defdemoname);
|
|
||||||
void G_TimeDemo(const char *name);
|
|
||||||
void G_AddGhost(char *defdemoname);
|
|
||||||
void G_DoPlayMetal(void);
|
|
||||||
void G_DoneLevelLoad(void);
|
|
||||||
void G_StopMetalDemo(void);
|
|
||||||
ATTRNORETURN void FUNCNORETURN G_StopMetalRecording(boolean kill);
|
|
||||||
void G_StopDemo(void);
|
|
||||||
boolean G_CheckDemoStatus(void);
|
|
||||||
|
|
||||||
extern UINT32 gametypedefaultrules[NUMGAMETYPES];
|
extern UINT32 gametypedefaultrules[NUMGAMETYPES];
|
||||||
extern UINT32 gametypetol[NUMGAMETYPES];
|
extern UINT32 gametypetol[NUMGAMETYPES];
|
||||||
extern INT16 gametyperankings[NUMGAMETYPES];
|
extern INT16 gametyperankings[NUMGAMETYPES];
|
||||||
|
|
|
@ -213,6 +213,7 @@
|
||||||
<ClInclude Include="..\fastcmp.h" />
|
<ClInclude Include="..\fastcmp.h" />
|
||||||
<ClInclude Include="..\filesrch.h" />
|
<ClInclude Include="..\filesrch.h" />
|
||||||
<ClInclude Include="..\f_finale.h" />
|
<ClInclude Include="..\f_finale.h" />
|
||||||
|
<ClInclude Include="..\g_demo.h" />
|
||||||
<ClInclude Include="..\g_game.h" />
|
<ClInclude Include="..\g_game.h" />
|
||||||
<ClInclude Include="..\g_input.h" />
|
<ClInclude Include="..\g_input.h" />
|
||||||
<ClInclude Include="..\g_state.h" />
|
<ClInclude Include="..\g_state.h" />
|
||||||
|
@ -364,6 +365,7 @@
|
||||||
<ClCompile Include="..\filesrch.c" />
|
<ClCompile Include="..\filesrch.c" />
|
||||||
<ClCompile Include="..\f_finale.c" />
|
<ClCompile Include="..\f_finale.c" />
|
||||||
<ClCompile Include="..\f_wipe.c" />
|
<ClCompile Include="..\f_wipe.c" />
|
||||||
|
<ClCompile Include="..\g_demo.c" />
|
||||||
<ClCompile Include="..\g_game.c" />
|
<ClCompile Include="..\g_game.c" />
|
||||||
<ClCompile Include="..\g_input.c" />
|
<ClCompile Include="..\g_input.c" />
|
||||||
<ClCompile Include="..\hardware\hw3sound.c" />
|
<ClCompile Include="..\hardware\hw3sound.c" />
|
||||||
|
|
|
@ -180,6 +180,9 @@
|
||||||
<ClInclude Include="..\f_finale.h">
|
<ClInclude Include="..\f_finale.h">
|
||||||
<Filter>F_Frame</Filter>
|
<Filter>F_Frame</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\g_demo.h">
|
||||||
|
<Filter>G_Game</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\g_game.h">
|
<ClInclude Include="..\g_game.h">
|
||||||
<Filter>G_Game</Filter>
|
<Filter>G_Game</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -600,6 +603,9 @@
|
||||||
<ClCompile Include="..\f_wipe.c">
|
<ClCompile Include="..\f_wipe.c">
|
||||||
<Filter>F_Frame</Filter>
|
<Filter>F_Frame</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\g_demo.c">
|
||||||
|
<Filter>G_Game</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\g_game.c">
|
<ClCompile Include="..\g_game.c">
|
||||||
<Filter>G_Game</Filter>
|
<Filter>G_Game</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
Loading…
Reference in a new issue