Merge branch 'uncap-numlaps' into 'master'

Remove restrictions on numlaps, merge with gptest

See merge request KartKrew/Kart!1116
This commit is contained in:
Sal 2023-04-01 20:12:47 +00:00
commit 3a109dbe78
7 changed files with 55 additions and 40 deletions

View file

@ -62,6 +62,7 @@
#include "deh_tables.h"
#include "m_perfstats.h"
#include "k_specialstage.h"
#include "k_race.h"
#ifdef SRB2_CONFIG_ENABLE_WEBM_MOVIES
#include "m_avrecorder.h"
@ -443,7 +444,6 @@ consvar_t cv_kartdebugnodes = CVAR_INIT ("debugnodes", "Off", CV_CHEAT, CV_OnOff
consvar_t cv_kartdebugcolorize = CVAR_INIT ("debugcolorize", "Off", CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_kartdebugdirector = CVAR_INIT ("debugdirector", "Off", CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_spbtest = CVAR_INIT ("spbtest", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL);
consvar_t cv_gptest = CVAR_INIT ("gptest", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL);
consvar_t cv_debugrank = CVAR_INIT ("debugrank", "Off", CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_battletest = CVAR_INIT ("battletest", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL);
@ -490,7 +490,7 @@ consvar_t cv_pointlimit = CVAR_INIT ("pointlimit", "Default", CV_NETVAR|CV_CALL|
static CV_PossibleValue_t timelimit_cons_t[] = {{1, "MIN"}, {30*60, "MAX"}, {0, "None"}, {-1, "Default"}, {0, NULL}};
consvar_t cv_timelimit = CVAR_INIT ("timelimit", "Default", CV_NETVAR|CV_CALL|CV_NOINIT, timelimit_cons_t, TimeLimit_OnChange);
static CV_PossibleValue_t numlaps_cons_t[] = {{1, "MIN"}, {MAX_LAPS, "MAX"}, {0, "Map default"}, {0, NULL}};
static CV_PossibleValue_t numlaps_cons_t[] = {{0, "MIN"}, {MAX_LAPS, "MAX"}, {-1, "Map default"}, {0, NULL}};
consvar_t cv_numlaps = CVAR_INIT ("numlaps", "Map default", CV_SAVE|CV_NETVAR|CV_CALL|CV_CHEAT, numlaps_cons_t, NumLaps_OnChange);
consvar_t cv_forceskin = CVAR_INIT ("forcecharacter", "None", CV_NETVAR|CV_CALL|CV_CHEAT, NULL, ForceSkin_OnChange);
@ -6559,15 +6559,18 @@ static void Command_ShowTime_f(void)
// SRB2Kart: On change messages
static void NumLaps_OnChange(void)
{
if (K_CanChangeRules(false) == false)
if (gamestate == GS_LEVEL)
{
return;
}
numlaps = K_RaceLapCount(gamemap - 1);
if (gamestate == GS_LEVEL && leveltime < starttime)
{
CONS_Printf(M_GetText("Number of laps have been set to %d.\n"), cv_numlaps.value);
numlaps = (UINT8)cv_numlaps.value;
if (cv_numlaps.value == -1)
{
CONS_Printf(M_GetText("Number of laps have been set to %d (map default).\n"), numlaps);
}
else
{
CONS_Printf(M_GetText("Number of laps have been set to %d.\n"), numlaps);
}
}
else
{

View file

@ -93,7 +93,7 @@ extern consvar_t cv_votetime;
extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugdistribution, cv_kartdebughuddrop;
extern consvar_t cv_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector;
extern consvar_t cv_spbtest, cv_gptest, cv_reducevfx;
extern consvar_t cv_spbtest, cv_reducevfx;
extern consvar_t cv_kartdebugwaypoints, cv_kartdebugbotpredict;
extern consvar_t cv_debugrank;
extern consvar_t cv_battletest;

View file

@ -349,7 +349,6 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartdebugdirector);
CV_RegisterVar(&cv_debugrank);
CV_RegisterVar(&cv_spbtest);
CV_RegisterVar(&cv_gptest);
CV_RegisterVar(&cv_capsuletest);
CV_RegisterVar(&cv_battletest);
CV_RegisterVar(&cv_debugencorevote);

View file

@ -421,3 +421,26 @@ void K_RunFinishLineBeam(void)
K_DrawFinishLineBeamForLine(offsetb, aimingb, finishBeamLine, true);
}
}
/*--------------------------------------------------
UINT8 K_RaceLapCount(void);
See header file for description.
--------------------------------------------------*/
UINT8 K_RaceLapCount(INT16 mapNum)
{
if (!(gametyperules & GTR_CIRCUIT))
{
// Not in Race mode
return 0;
}
if (cv_numlaps.value == -1)
{
// Use map default
return mapheaderinfo[mapNum]->numlaps;
}
return cv_numlaps.value;
}

View file

@ -70,6 +70,22 @@ boolean K_GenerateFinishBeamLine(void);
void K_RunFinishLineBeam(void);
/*--------------------------------------------------
UINT8 K_RaceLapCount(INT16 mapNum);
Returns the effective final lap count of the race.
Input Arguments:-
mapNum - The level to count laps for, 0-indexed.
Return:-
The lap count to finish.
--------------------------------------------------*/
UINT8 K_RaceLapCount(INT16 mapNum);
#ifdef __cplusplus
} // extern "C"
#endif

View file

@ -22,6 +22,7 @@
#include "r_things.h"
#include "fastcmp.h"
#include "byteptr.h"
#include "k_race.h"
// I was ALMOST tempted to start tearing apart all
// of the map loading code and turning it into C++
@ -304,12 +305,7 @@ void K_InitGrandPrixRank(gpRank_t *rankData)
const INT32 cupLevelNum = grandprixinfo.cup->cachedlevels[i];
if (cupLevelNum < nummapheaders && mapheaderinfo[cupLevelNum] != NULL)
{
if (!cv_gptest.value)
{
laps += mapheaderinfo[cupLevelNum]->numlaps;
continue;
}
laps++;
laps += K_RaceLapCount(cupLevelNum);
}
}

View file

@ -7443,29 +7443,7 @@ static void P_InitGametype(void)
if (modeattacking && !demo.playback)
P_LoadRecordGhosts();
if (gametyperules & GTR_CIRCUIT)
{
if (K_CanChangeRules(true) && cv_numlaps.value
&& (!(mapheaderinfo[gamemap - 1]->levelflags & LF_SECTIONRACE)
|| (mapheaderinfo[gamemap - 1]->numlaps > cv_numlaps.value)))
{
numlaps = cv_numlaps.value;
}
else if ((grandprixinfo.gp == true)
&& (grandprixinfo.eventmode == GPEVENT_NONE)
&& cv_gptest.value)
{
numlaps = 1;
}
else
{
numlaps = mapheaderinfo[gamemap - 1]->numlaps;
}
}
else
{
numlaps = 0;
}
numlaps = K_RaceLapCount(gamemap - 1);
wantedcalcdelay = wantedfrequency*2;