mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-12-11 21:31:30 +00:00
tidy up SV_Serverinfo_f, move Cvar_Info from sv_cver.c to sv_ccmds.c and
make the client no_pogo_stick cvar properly reflect the serverinfo
This commit is contained in:
parent
d6a2b54252
commit
6fa4205675
5 changed files with 44 additions and 87 deletions
|
@ -76,10 +76,10 @@ else
|
|||
syssv_SRC= sv_sys_unix.c
|
||||
endif
|
||||
|
||||
libserver_a_SOURCES= crudefile.c sv_ccmds.c sv_cvar.c sv_ents.c \
|
||||
sv_init.c sv_main.c sv_move.c \
|
||||
sv_nchan.c sv_phys.c sv_pr_cmds.c sv_progs.c sv_send.c \
|
||||
sv_user.c world.c $(syssv_SRC)
|
||||
libserver_a_SOURCES= \
|
||||
crudefile.c sv_ccmds.c sv_ents.c sv_init.c sv_main.c sv_move.c \
|
||||
sv_nchan.c sv_phys.c sv_pr_cmds.c sv_progs.c sv_send.c sv_user.c \
|
||||
world.c $(syssv_SRC)
|
||||
|
||||
qf_server_LIBS= \
|
||||
$(SERVER_PLUGIN_STATIC_LIBS) \
|
||||
|
|
|
@ -1547,9 +1547,6 @@ Host_Frame (float time)
|
|||
// fetch results from server
|
||||
CL_ReadPackets ();
|
||||
|
||||
if (cl.no_pogo_stick && !no_pogo_stick->int_val)
|
||||
Cvar_Set (no_pogo_stick, "1");
|
||||
|
||||
// send intentions now
|
||||
// resend a connection request if necessary
|
||||
if (cls.state == ca_disconnected) {
|
||||
|
|
|
@ -1044,7 +1044,8 @@ CL_ServerInfo (void)
|
|||
} else if (strequal (key, "cshifts")) {
|
||||
cl.sv_cshifts = atoi (value);
|
||||
} else if (strequal (key, "no_pogo_stick")) {
|
||||
cl.no_pogo_stick = atoi (value);
|
||||
Cvar_Set (no_pogo_stick, value);
|
||||
cl.no_pogo_stick = no_pogo_stick->int_val;
|
||||
} else if (strequal (key, "teamplay")) {
|
||||
cl.teamplay = atoi (value);
|
||||
Sbar_DMO_Init_f (cl_showscoresuid); // HUD setup, cl.teamplay changed
|
||||
|
|
|
@ -813,6 +813,39 @@ SV_SendServerInfoChange (const char *key, const char *value)
|
|||
MSG_WriteString (&sv.reliable_datagram, value);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Cvar_Info
|
||||
|
||||
Sets a given cvar (key,value) into svs.info (serverinfo)
|
||||
high char filtering is performed according to sv_highchars.value
|
||||
|
||||
*/
|
||||
void
|
||||
Cvar_Info (cvar_t *var)
|
||||
{
|
||||
if (var->flags & CVAR_SERVERINFO) {
|
||||
unsigned char info[1024], *p;
|
||||
const unsigned char *c;
|
||||
|
||||
if (!sv_highchars || !sv_highchars->int_val) {
|
||||
for (p = info, c = var->string;
|
||||
*c && (p - info < sizeof (info) - 1);) {
|
||||
if ((*c & 0x7f) >= 32)
|
||||
*p++ = *c & 0x7f;
|
||||
c++;
|
||||
}
|
||||
*p = 0;
|
||||
Info_SetValueForKey (svs.info, var->name, info,
|
||||
(sv_highchars && !sv_highchars->int_val));
|
||||
} else
|
||||
Info_SetValueForKey (svs.info, var->name, var->string,
|
||||
(sv_highchars && !sv_highchars->int_val));
|
||||
|
||||
SV_SendServerInfoChange (var->name, var->string);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
SV_Serverinfo_f
|
||||
|
||||
|
@ -838,18 +871,17 @@ SV_Serverinfo_f (void)
|
|||
SV_Printf ("Star variables cannot be changed.\n");
|
||||
return;
|
||||
}
|
||||
Info_SetValueForKey (svs.info, Cmd_Argv (1), Cmd_Argv (2),
|
||||
!sv_highchars->int_val);
|
||||
|
||||
// if this is a cvar, change it too
|
||||
var = Cvar_FindVar (Cmd_Argv (1));
|
||||
if (var)
|
||||
if (var && (var->flags & CVAR_SERVERINFO)) {
|
||||
Cvar_Set (var, Cmd_Argv (2));
|
||||
|
||||
if (!var || !(var->flags & CVAR_SERVERINFO))
|
||||
// Cvar_Set will send the change if CVAR_SERVERINFO is set
|
||||
} else {
|
||||
Info_SetValueForKey (svs.info, Cmd_Argv (1), Cmd_Argv (2),
|
||||
!sv_highchars->int_val);
|
||||
SV_SendServerInfoChange (Cmd_Argv (1), Cmd_Argv (2));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
SV_Serverinfo_f
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
sv_cvar.c
|
||||
|
||||
(description)
|
||||
|
||||
Copyright (C) 1996-1997 Id Software, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to:
|
||||
|
||||
Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330
|
||||
Boston, MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include "QF/cvar.h"
|
||||
|
||||
#include "server.h"
|
||||
|
||||
void SV_SendServerInfoChange (const char *key, const char *value);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Cvar_Info
|
||||
|
||||
Sets a given cvar (key,value) into svs.info (serverinfo)
|
||||
high char filtering is performed according to sv_highchars.value
|
||||
|
||||
*/
|
||||
void
|
||||
Cvar_Info (cvar_t *var)
|
||||
{
|
||||
if (var->flags & CVAR_SERVERINFO) {
|
||||
unsigned char info[1024], *p;
|
||||
const unsigned char *c;
|
||||
|
||||
if (!sv_highchars || !sv_highchars->int_val) {
|
||||
for (p = info, c = var->string;
|
||||
*c && (p - info < sizeof (info) - 1);) {
|
||||
if ((*c & 0x7f) >= 32)
|
||||
*p++ = *c & 0x7f;
|
||||
c++;
|
||||
}
|
||||
*p = 0;
|
||||
Info_SetValueForKey (svs.info, var->name, info,
|
||||
(sv_highchars && !sv_highchars->int_val));
|
||||
} else
|
||||
Info_SetValueForKey (svs.info, var->name, var->string,
|
||||
(sv_highchars && !sv_highchars->int_val));
|
||||
|
||||
SV_SendServerInfoChange (var->name, var->string);
|
||||
// SV_BroadcastCommand ("fullserverinfo \"%s\"\n", svs.info);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue