mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
M_GetRecordMode
Simplifies a lot of copypasted "modeprefix" evaluations into one simple call. Only G_UpdateRecordReplays is seperate. Resolves two issues: - Guest replay ghosts have been broken for a while and nobody noticed (untracked) - Cannot watch back hivolt replays (#1656) In addition, makes it way easier to add new modeprefixes later.
This commit is contained in:
parent
19600c2589
commit
151b91f204
5 changed files with 29 additions and 74 deletions
|
|
@ -1008,7 +1008,7 @@ consvar_t cv_dummyprofilerumble = MenuDummy("dummyprofilerumble", "On").on_off()
|
||||||
consvar_t cv_dummyscramble = MenuDummy("dummyscramble", "Random").values({{0, "Random"}, {1, "Points"}});
|
consvar_t cv_dummyscramble = MenuDummy("dummyscramble", "Random").values({{0, "Random"}, {1, "Points"}});
|
||||||
|
|
||||||
void CV_SPBAttackChanged(void);
|
void CV_SPBAttackChanged(void);
|
||||||
consvar_t cv_dummyspbattack = MenuDummy("dummyspbattack", "Off").on_off().onchange(CV_SPBAttackChanged);
|
consvar_t cv_dummyspbattack = MenuDummy("dummyspbattack", "Off").on_off().onchange_noinit(CV_SPBAttackChanged);
|
||||||
|
|
||||||
consvar_t cv_dummyspectate = MenuDummy("dummyspectate", "Spectator").values({{0, "Spectator"}, {1, "Playing"}});
|
consvar_t cv_dummyspectate = MenuDummy("dummyspectate", "Spectator").values({{0, "Spectator"}, {1, "Playing"}});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,6 +220,7 @@ extern boolean imcontinuing; // Temporary flag while continuing
|
||||||
#define ATTACKING_LAP (1<<1)
|
#define ATTACKING_LAP (1<<1)
|
||||||
#define ATTACKING_SPB (1<<2)
|
#define ATTACKING_SPB (1<<2)
|
||||||
extern UINT8 modeattacking;
|
extern UINT8 modeattacking;
|
||||||
|
const char *M_GetRecordMode(void);
|
||||||
|
|
||||||
// menu demo things
|
// menu demo things
|
||||||
extern UINT8 numDemos;
|
extern UINT8 numDemos;
|
||||||
|
|
|
||||||
|
|
@ -588,6 +588,7 @@ static void G_UpdateRecordReplays(void)
|
||||||
char lastdemo[256], bestdemo[256];
|
char lastdemo[256], bestdemo[256];
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = "";
|
||||||
|
|
||||||
|
// See also M_GetRecordMode
|
||||||
if (encoremode)
|
if (encoremode)
|
||||||
{
|
{
|
||||||
modeprefix = "spb-";
|
modeprefix = "spb-";
|
||||||
|
|
|
||||||
|
|
@ -266,6 +266,23 @@ menu_t PLAY_TAGhostsDef = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// See also G_UpdateRecordReplays
|
||||||
|
const char *M_GetRecordMode(void)
|
||||||
|
{
|
||||||
|
if (cv_dummyspbattack.value)
|
||||||
|
{
|
||||||
|
return "spb-";
|
||||||
|
}
|
||||||
|
|
||||||
|
const INT32 skinid = R_SkinAvailableEx(cv_skin[0].string, false);
|
||||||
|
if (skinid >= 0 && (skins[skinid]->flags & SF_HIVOLT))
|
||||||
|
{
|
||||||
|
return "hivolt-";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
void CV_SPBAttackChanged(void);
|
void CV_SPBAttackChanged(void);
|
||||||
void CV_SPBAttackChanged(void)
|
void CV_SPBAttackChanged(void)
|
||||||
{
|
{
|
||||||
|
|
@ -275,14 +292,12 @@ void CV_SPBAttackChanged(void)
|
||||||
{
|
{
|
||||||
// see also p_setup.c's P_LoadRecordGhosts
|
// see also p_setup.c's P_LoadRecordGhosts
|
||||||
char *gpath = Z_StrDup(va("%s"PATHSEP"media"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(levellist.choosemap+1)));
|
char *gpath = Z_StrDup(va("%s"PATHSEP"media"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(levellist.choosemap+1)));
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = M_GetRecordMode();
|
||||||
UINT8 active;
|
UINT8 active;
|
||||||
|
|
||||||
if (!gpath)
|
if (!gpath)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (cv_dummyspbattack.value)
|
|
||||||
modeprefix = "spb-";
|
|
||||||
|
|
||||||
active = false;
|
active = false;
|
||||||
PLAY_TimeAttack[ta_guest].status = IT_DISABLED;
|
PLAY_TimeAttack[ta_guest].status = IT_DISABLED;
|
||||||
|
|
@ -458,20 +473,7 @@ void M_ReplayTimeAttack(INT32 choice)
|
||||||
{
|
{
|
||||||
menudemo_t menudemo = {0};
|
menudemo_t menudemo = {0};
|
||||||
const char *which = NULL;
|
const char *which = NULL;
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = M_GetRecordMode();
|
||||||
|
|
||||||
if (cv_dummyspbattack.value)
|
|
||||||
{
|
|
||||||
modeprefix = "spb-";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const INT32 skinid = R_SkinAvailableEx(cv_skin[0].string, false);
|
|
||||||
if (skinid >= 0 && (skins[skinid]->flags & SF_HIVOLT))
|
|
||||||
{
|
|
||||||
modeprefix = "hivolt-";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (choice)
|
switch (choice)
|
||||||
{
|
{
|
||||||
|
|
@ -528,20 +530,7 @@ static void M_WriteGuestReplay(INT32 ch)
|
||||||
|
|
||||||
gpath = Z_StrDup(va("%s"PATHSEP"media"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(levellist.choosemap+1)));
|
gpath = Z_StrDup(va("%s"PATHSEP"media"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(levellist.choosemap+1)));
|
||||||
|
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = M_GetRecordMode();
|
||||||
|
|
||||||
if (cv_dummyspbattack.value)
|
|
||||||
{
|
|
||||||
modeprefix = "spb-";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const INT32 skinid = R_SkinAvailableEx(cv_skin[0].string, false);
|
|
||||||
if (skinid >= 0 && (skins[skinid]->flags & SF_HIVOLT))
|
|
||||||
{
|
|
||||||
modeprefix = "hivolt-";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TA_GuestReplay_Str != NULL)
|
if (TA_GuestReplay_Str != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -597,20 +586,7 @@ void M_SetGuestReplay(INT32 choice)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = M_GetRecordMode();
|
||||||
|
|
||||||
if (cv_dummyspbattack.value)
|
|
||||||
{
|
|
||||||
modeprefix = "spb-";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const INT32 skinid = R_SkinAvailableEx(cv_skin[0].string, false);
|
|
||||||
if (skinid >= 0 && (skins[skinid]->flags & SF_HIVOLT))
|
|
||||||
{
|
|
||||||
modeprefix = "hivolt-";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FIL_FileExists(va("%s"PATHSEP"media"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%sguest.lmp", srb2home, timeattackfolder, G_BuildMapName(levellist.choosemap+1), modeprefix)))
|
if (FIL_FileExists(va("%s"PATHSEP"media"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%sguest.lmp", srb2home, timeattackfolder, G_BuildMapName(levellist.choosemap+1), modeprefix)))
|
||||||
{
|
{
|
||||||
|
|
@ -626,7 +602,7 @@ void M_StartTimeAttack(INT32 choice)
|
||||||
{
|
{
|
||||||
char *gpath;
|
char *gpath;
|
||||||
char nameofdemo[256];
|
char nameofdemo[256];
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = M_GetRecordMode();
|
||||||
|
|
||||||
(void)choice;
|
(void)choice;
|
||||||
|
|
||||||
|
|
@ -649,16 +625,6 @@ void M_StartTimeAttack(INT32 choice)
|
||||||
{
|
{
|
||||||
encoremode = true; // guarantees short wipe
|
encoremode = true; // guarantees short wipe
|
||||||
}
|
}
|
||||||
|
|
||||||
modeprefix = "spb-";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const INT32 skinid = R_SkinAvailableEx(cv_skin[0].string, false);
|
|
||||||
if (skinid >= 0 && (skins[skinid]->flags & SF_HIVOLT))
|
|
||||||
{
|
|
||||||
modeprefix = "hivolt-";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DON'T SOFTLOCK
|
// DON'T SOFTLOCK
|
||||||
|
|
|
||||||
|
|
@ -7841,24 +7841,11 @@ static void P_LoadRecordGhosts(void)
|
||||||
{
|
{
|
||||||
// see also /menus/play-local-race-time-attack.c's M_PrepareTimeAttack
|
// see also /menus/play-local-race-time-attack.c's M_PrepareTimeAttack
|
||||||
char *gpath;
|
char *gpath;
|
||||||
const char *modeprefix = "";
|
const char *modeprefix = M_GetRecordMode();
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
|
||||||
gpath = Z_StrDup(va("%s" PATHSEP "media" PATHSEP "replay" PATHSEP "%s" PATHSEP "%s", srb2home, timeattackfolder, G_BuildMapName(gamemap)));
|
gpath = Z_StrDup(va("%s" PATHSEP "media" PATHSEP "replay" PATHSEP "%s" PATHSEP "%s", srb2home, timeattackfolder, G_BuildMapName(gamemap)));
|
||||||
|
|
||||||
if (encoremode)
|
|
||||||
{
|
|
||||||
modeprefix = "-spb";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const INT32 skinid = R_SkinAvailableEx(cv_skin[0].string, false);
|
|
||||||
if (skinid >= 0 && (skins[skinid]->flags & SF_HIVOLT))
|
|
||||||
{
|
|
||||||
modeprefix = "-hivolt";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
kTime = 1 << 0,
|
kTime = 1 << 0,
|
||||||
|
|
@ -7883,7 +7870,7 @@ static void P_LoadRecordGhosts(void)
|
||||||
|
|
||||||
auto add_ghosts = [gpath](const srb2::String& base, UINT8 bits)
|
auto add_ghosts = [gpath](const srb2::String& base, UINT8 bits)
|
||||||
{
|
{
|
||||||
auto load = [base](const char* suffix) { P_TryAddExternalGhost(fmt::format("{}-{}.lmp", base, suffix).c_str()); };
|
auto load = [base](const char* suffix) { P_TryAddExternalGhost(fmt::format("{}{}.lmp", base, suffix).c_str()); };
|
||||||
|
|
||||||
if (bits & kTime)
|
if (bits & kTime)
|
||||||
load("time-best");
|
load("time-best");
|
||||||
|
|
@ -7901,7 +7888,7 @@ static void P_LoadRecordGhosts(void)
|
||||||
if (allGhosts)
|
if (allGhosts)
|
||||||
{
|
{
|
||||||
for (i = 0; i < numskins; ++i)
|
for (i = 0; i < numskins; ++i)
|
||||||
add_ghosts(fmt::format("{}-{}{}", gpath, skins[i]->name, modeprefix), allGhosts);
|
add_ghosts(fmt::format("{}-{}-{}", gpath, skins[i]->name, modeprefix), allGhosts);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sameGhosts)
|
if (sameGhosts)
|
||||||
|
|
@ -7909,7 +7896,7 @@ static void P_LoadRecordGhosts(void)
|
||||||
INT32 skin = R_SkinAvailableEx(cv_skin[0].string, false);
|
INT32 skin = R_SkinAvailableEx(cv_skin[0].string, false);
|
||||||
if (skin < 0 || !R_SkinUsable(-1, skin, false))
|
if (skin < 0 || !R_SkinUsable(-1, skin, false))
|
||||||
skin = 0; // use default skin
|
skin = 0; // use default skin
|
||||||
add_ghosts(fmt::format("{}-{}{}", gpath, skins[skin]->name, modeprefix), sameGhosts);
|
add_ghosts(fmt::format("{}-{}-{}", gpath, skins[skin]->name, modeprefix), sameGhosts);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Guest ghost
|
// Guest ghost
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue