mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-05 00:41:23 +00:00
Save cvar names in demos; refactor cvar loading
This commit is contained in:
parent
32773b71e0
commit
32134a01fe
3 changed files with 85 additions and 17 deletions
|
@ -1451,12 +1451,68 @@ badinput:
|
||||||
|
|
||||||
static boolean serverloading = false;
|
static boolean serverloading = false;
|
||||||
|
|
||||||
|
static consvar_t *
|
||||||
|
ReadNetVar (UINT8 **p, char **return_value, boolean *return_stealth)
|
||||||
|
{
|
||||||
|
UINT16 netid;
|
||||||
|
char *val;
|
||||||
|
boolean stealth;
|
||||||
|
|
||||||
|
consvar_t *cvar;
|
||||||
|
|
||||||
|
netid = READUINT16 (*p);
|
||||||
|
val = (char *)*p;
|
||||||
|
SKIPSTRING (*p);
|
||||||
|
stealth = READUINT8 (*p);
|
||||||
|
|
||||||
|
cvar = CV_FindNetVar(netid);
|
||||||
|
|
||||||
|
if (cvar)
|
||||||
|
{
|
||||||
|
(*return_value) = val;
|
||||||
|
(*return_stealth) = stealth;
|
||||||
|
|
||||||
|
DEBFILE(va("Netvar received: %s [netid=%d] value %s\n", cvar->name, netid, val));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CONS_Alert(CONS_WARNING, "Netvar not found with netid %hu\n", netid);
|
||||||
|
|
||||||
|
return cvar;
|
||||||
|
}
|
||||||
|
|
||||||
|
static consvar_t *
|
||||||
|
ReadDemoVar (UINT8 **p, char **return_value, boolean *return_stealth)
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
char *val;
|
||||||
|
boolean stealth;
|
||||||
|
|
||||||
|
consvar_t *cvar;
|
||||||
|
|
||||||
|
name = (char *)*p;
|
||||||
|
SKIPSTRING (*p);
|
||||||
|
val = (char *)*p;
|
||||||
|
SKIPSTRING (*p);
|
||||||
|
stealth = READUINT8 (*p);
|
||||||
|
|
||||||
|
cvar = CV_FindVar(name);
|
||||||
|
|
||||||
|
if (cvar)
|
||||||
|
{
|
||||||
|
(*return_value) = val;
|
||||||
|
(*return_stealth) = stealth;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CONS_Alert(CONS_WARNING, "Netvar not found with name %s\n", name);
|
||||||
|
|
||||||
|
return cvar;
|
||||||
|
}
|
||||||
|
|
||||||
static void Got_NetVar(UINT8 **p, INT32 playernum)
|
static void Got_NetVar(UINT8 **p, INT32 playernum)
|
||||||
{
|
{
|
||||||
consvar_t *cvar;
|
consvar_t *cvar;
|
||||||
UINT16 netid;
|
|
||||||
char *svalue;
|
char *svalue;
|
||||||
UINT8 stealth = false;
|
boolean stealth;
|
||||||
|
|
||||||
if (playernum != serverplayer && !IsPlayerAdmin(playernum) && !serverloading)
|
if (playernum != serverplayer && !IsPlayerAdmin(playernum) && !serverloading)
|
||||||
{
|
{
|
||||||
|
@ -1466,20 +1522,11 @@ static void Got_NetVar(UINT8 **p, INT32 playernum)
|
||||||
SendKick(playernum, KICK_MSG_CON_FAIL | KICK_MSG_KEEP_BODY);
|
SendKick(playernum, KICK_MSG_CON_FAIL | KICK_MSG_KEEP_BODY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
netid = READUINT16(*p);
|
|
||||||
cvar = CV_FindNetVar(netid);
|
|
||||||
svalue = (char *)*p;
|
|
||||||
SKIPSTRING(*p);
|
|
||||||
stealth = READUINT8(*p);
|
|
||||||
|
|
||||||
if (!cvar)
|
cvar = ReadNetVar(p, &svalue, &stealth);
|
||||||
{
|
|
||||||
CONS_Alert(CONS_WARNING, "Netvar not found with netid %hu\n", netid);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
DEBFILE(va("Netvar received: %s [netid=%d] value %s\n", cvar->name, netid, svalue));
|
|
||||||
|
|
||||||
Setvalue(cvar, svalue, stealth);
|
if (cvar)
|
||||||
|
Setvalue(cvar, svalue, stealth);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CV_SaveNetVars(UINT8 **p)
|
void CV_SaveNetVars(UINT8 **p)
|
||||||
|
@ -1502,11 +1549,15 @@ void CV_SaveNetVars(UINT8 **p)
|
||||||
WRITEUINT16(count_p, count);
|
WRITEUINT16(count_p, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CV_LoadNetVars(UINT8 **p)
|
static void CV_LoadVars(UINT8 **p,
|
||||||
|
consvar_t *(*got)(UINT8 **p, char **ret_value, boolean *ret_stealth))
|
||||||
{
|
{
|
||||||
consvar_t *cvar;
|
consvar_t *cvar;
|
||||||
UINT16 count;
|
UINT16 count;
|
||||||
|
|
||||||
|
char *val;
|
||||||
|
boolean stealth;
|
||||||
|
|
||||||
// prevent "invalid command received"
|
// prevent "invalid command received"
|
||||||
serverloading = true;
|
serverloading = true;
|
||||||
|
|
||||||
|
@ -1516,11 +1567,26 @@ void CV_LoadNetVars(UINT8 **p)
|
||||||
|
|
||||||
count = READUINT16(*p);
|
count = READUINT16(*p);
|
||||||
while (count--)
|
while (count--)
|
||||||
Got_NetVar(p, 0);
|
{
|
||||||
|
cvar = (*got)(p, &val, &stealth);
|
||||||
|
|
||||||
|
if (cvar)
|
||||||
|
Setvalue(cvar, val, stealth);
|
||||||
|
}
|
||||||
|
|
||||||
serverloading = false;
|
serverloading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CV_LoadNetVars(UINT8 **p)
|
||||||
|
{
|
||||||
|
CV_LoadVars(p, ReadNetVar);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CV_LoadDemoVars(UINT8 **p)
|
||||||
|
{
|
||||||
|
CV_LoadVars(p, ReadDemoVar);
|
||||||
|
}
|
||||||
|
|
||||||
static void CV_SetCVar(consvar_t *var, const char *value, boolean stealth);
|
static void CV_SetCVar(consvar_t *var, const char *value, boolean stealth);
|
||||||
|
|
||||||
void CV_ResetCheatNetVars(void)
|
void CV_ResetCheatNetVars(void)
|
||||||
|
|
|
@ -187,6 +187,8 @@ void CV_SaveVariables(FILE *f);
|
||||||
void CV_SaveNetVars(UINT8 **p);
|
void CV_SaveNetVars(UINT8 **p);
|
||||||
void CV_LoadNetVars(UINT8 **p);
|
void CV_LoadNetVars(UINT8 **p);
|
||||||
|
|
||||||
|
void CV_LoadDemoVars(UINT8 **p);
|
||||||
|
|
||||||
// reset cheat netvars after cheats is deactivated
|
// reset cheat netvars after cheats is deactivated
|
||||||
void CV_ResetCheatNetVars(void);
|
void CV_ResetCheatNetVars(void);
|
||||||
|
|
||||||
|
|
|
@ -1923,7 +1923,7 @@ void G_DoPlayDemo(char *defdemoname)
|
||||||
}
|
}
|
||||||
|
|
||||||
// net var data
|
// net var data
|
||||||
CV_LoadNetVars(&demo_p);
|
CV_LoadDemoVars(&demo_p);
|
||||||
|
|
||||||
// Sigh ... it's an empty demo.
|
// Sigh ... it's an empty demo.
|
||||||
if (*demo_p == DEMOMARKER)
|
if (*demo_p == DEMOMARKER)
|
||||||
|
|
Loading…
Reference in a new issue