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.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
// host.c -- coordinates spawning and killing of local servers
#include "quakedef.h"
+#include <time.h>
/*
double oldrealtime; // last frame run
int host_framecount;
-double sv_frametime;
-
-int minimum_memory;
+int forcedeveloper; // used for -developer commandline parameter, hacky hacky
client_t *host_client; // current client
}
inerror = true;
-// SCR_EndLoadingPlaque (); // reenable screen updates
+ SCR_EndLoadingPlaque (); // reenable screen updates
va_start (argptr,error);
vsprintf (hosterrorstring,error,argptr);
else
svs.maxclients = 8;
}
+
+ // BloodBath doesn't support single player games
+ if (gamemode == GAME_BLOODBATH && svs.maxclients < 4)
+ svs.maxclients = 4;
+
if (svs.maxclients < 1)
svs.maxclients = 8;
else if (svs.maxclients > MAX_SCOREBOARD)
Cvar_RegisterVariable (&noexit);
Cvar_RegisterVariable (&skill);
Cvar_RegisterVariable (&developer);
+ if (forcedeveloper) // make it real now that the cvar is registered
+ Cvar_SetValue("developer", 1);
Cvar_RegisterVariable (&deathmatch);
Cvar_RegisterVariable (&coop);
if (cls.state != ca_dedicated && svs.maxclients > 1 && ((realtime - lastservertime) < sys_ticrate.value))
return;
// run the world state
- sv.frametime = pr_global_struct->frametime = frametimetotal;
+ if (!sv.paused && (svs.maxclients > 1 || key_dest == key_game) )
+ sv.frametime = pr_global_struct->frametime = frametimetotal;
+ else
+ sv.frametime = 0;
frametimetotal = 0;
lastservertime = realtime;
// pr_global_struct->frametime = host_frametime;
// set the time and clear the general datagram
SV_ClearDatagram ();
-
+
// check for new clients
SV_CheckForNewClients ();
// read client messages
SV_RunClients ();
-
+
// move things around and think
// always pause in single player if in console or menus
if (!sv.paused && (svs.maxclients > 1 || key_dest == key_game) )
if (host_speeds.integer)
time1 = Sys_DoubleTime ();
- SCR_UpdateScreen ();
+ CL_UpdateScreen ();
if (host_speeds.integer)
time2 = Sys_DoubleTime ();
// update audio
if (cls.signon == SIGNONS)
{
- S_Update (r_origin, vpn, vright, vup);
- CL_DecayLights ();
+ // LordHavoc: this used to use renderer variables (eww)
+ vec3_t forward, right, up;
+ AngleVectors(cl.viewangles, forward, right, up);
+ S_Update (cl_entities[cl.viewentity].render.origin, forward, right, up);
}
else
S_Update (vec3_origin, vec3_origin, vec3_origin, vec3_origin);
*/
void Host_Init (void)
{
+ // LordHavoc: quake never seeded the random number generator before... heh
+ srand(time(NULL));
+
com_argc = host_parms.argc;
com_argv = host_parms.argv;
+ // FIXME: this is evil, but possibly temporary
+ if (COM_CheckParm("-developer"))
+ {
+ forcedeveloper = true;
+ developer.integer = 1;
+ developer.value = 1;
+ }
Memory_Init ();
Cmd_Init ();
isdown = true;
// keep Con_Printf from trying to update the screen
- scr_disabled_for_loading = true;
+// scr_disabled_for_loading = true;
Host_WriteConfiguration ();