X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=host.c;h=c19f6f43badc8e438159a4086266279f371b7f37;hb=f17546e879108a9fdf28db0f8db30710977a2c91;hp=f27b90975c5271acd2cab9a8ca3e8cbafb586557;hpb=39af2dd6a51d5631bb1c95ce2dfc306c7689187f;p=xonotic%2Fdarkplaces.git diff --git a/host.c b/host.c index f27b9097..c19f6f43 100644 --- a/host.c +++ b/host.c @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include "quakedef.h" +#include "libcurl.h" #include "cdaudio.h" #include "cl_video.h" #include "progsvm.h" @@ -85,7 +86,7 @@ cvar_t pausable = {0, "pausable","1", "allow players to pause or not"}; cvar_t temp1 = {0, "temp1","0", "general cvar for mods to use, in stock id1 this selects which death animation to use on players (0 = random death, other values select specific death scenes)"}; cvar_t timestamps = {CVAR_SAVE, "timestamps", "0", "prints timestamps on console messages"}; -cvar_t timeformat = {CVAR_SAVE, "timeformat", "[%b %e %X] ", "time format to use on timestamped console messages"}; +cvar_t timeformat = {CVAR_SAVE, "timeformat", "[%Y-%m-%d %H:%M:%S] ", "time format to use on timestamped console messages"}; /* ================ @@ -131,7 +132,7 @@ void Host_Error (const char *error, ...) Sys_Error ("Host_Error: recursively entered (original error was: %s new error is: %s)", hosterrorstring2, hosterrorstring1); hosterror = true; - strcpy(hosterrorstring2, hosterrorstring1); + strlcpy(hosterrorstring2, hosterrorstring1, sizeof(hosterrorstring2)); CL_Parse_DumpPacket(); @@ -547,7 +548,8 @@ void Host_Main(void) static double time1 = 0; static double time2 = 0; static double time3 = 0; - double frameoldtime, framenewtime, frametime, cl_timer, sv_timer; + // these are static because of setjmp/longjmp warnings in mingw32 gcc 2.95.3 + static double frameoldtime, framenewtime, frametime, cl_timer, sv_timer; Host_Init(); @@ -618,12 +620,17 @@ void Host_Main(void) NetConn_UpdateSockets(); + Curl_Run(); + //------------------- // // server operations // //------------------- + // check for commands typed to the host + Host_GetConsoleCommands(); + if (sv_timer > 0) { if (!sv.active) @@ -645,15 +652,19 @@ void Host_Main(void) // the middle of Host_Frame NetConn_ServerFrame(); - // check for commands typed to the host - Host_GetConsoleCommands(); - // run the world state // don't allow simulation to run too fast or too slow or logic glitches can occur // stop running server frames if the wall time reaches this value - if (sys_ticrate.value <= 0 || (cl.islocalgame && !sv_fixedframeratesingleplayer.integer)) + if (sys_ticrate.value <= 0) advancetime = sv_timer; + else if (cl.islocalgame && !sv_fixedframeratesingleplayer.integer) + { + // synchronize to the client frametime, but no less than 10ms and no more than sys_ticrate + advancetime = bound(0.01, cl_timer, sys_ticrate.value); + framelimit = 10; + aborttime = Sys_DoubleTime() + 0.1; + } else { advancetime = sys_ticrate.value; @@ -727,10 +738,15 @@ void Host_Main(void) // decide the simulation time if (!cls.timedemo) { - if (cls.capturevideo_active && !cls.capturevideo_soundfile) + if (cls.capturevideo.active) { - frametime = 1.0 / cls.capturevideo_framerate; - cl.realframetime = max(cl.realframetime, frametime); + if (cls.capturevideo.realtime) + frametime = cl.realframetime = max(cl.realframetime, 1.0 / cls.capturevideo.framerate); + else + { + frametime = 1.0 / cls.capturevideo.framerate; + cl.realframetime = max(cl.realframetime, frametime); + } } else if (vid_activewindow) frametime = cl.realframetime = max(cl.realframetime, 1.0 / cl_maxfps.value); @@ -785,7 +801,7 @@ void Host_Main(void) csqc_usecsqclistener = false; } else - S_Update(&r_refdef.viewentitymatrix); + S_Update(&r_view.matrix); CDAudio_Update(); } @@ -830,7 +846,6 @@ extern void FS_Shutdown(void); extern void PR_Cmd_Init(void); extern void COM_Init_Commands(void); extern void FS_Init_Commands(void); -extern void COM_CheckRegistered(void); extern qboolean host_stuffcmdsrun; /* @@ -843,6 +858,9 @@ static void Host_Init (void) int i; const char* os; + // LordHavoc: quake never seeded the random number generator before... heh + srand(time(NULL)); + // FIXME: this is evil, but possibly temporary // COMMANDLINEOPTION: Console: -developer enables warnings and other notices (RECOMMENDED for mod developers) if (COM_CheckParm("-developer")) @@ -861,20 +879,28 @@ static void Host_Init (void) developer_memorydebug.string = "100"; } - // LordHavoc: quake never seeded the random number generator before... heh - srand(time(NULL)); +// COMMANDLINEOPTION: Console: -nostdout disables text output to the terminal the game was launched from + if (COM_CheckParm("-nostdout")) + sys_nostdout = 1; // used by everything Memory_Init(); - // initialize console and logging - Con_Init(); - // initialize console command/cvar/alias/command execution systems Cmd_Init(); - // parse commandline - COM_InitArgv(); + // initialize memory subsystem cvars/commands + Memory_Init_Commands(); + + // initialize console and logging and its cvars/commands + Con_Init(); + + // initialize various cvars that could not be initialized earlier + Curl_Init_Commands(); + Cmd_Init_Commands(); + Sys_Init_Commands(); + COM_Init_Commands(); + FS_Init_Commands(); // initialize console window (only used by sys_win.c) Sys_InitConsole(); @@ -901,29 +927,16 @@ static void Host_Init (void) os = "Unknown"; #endif dpsnprintf (engineversion, sizeof (engineversion), "%s %s %s", gamename, os, buildstring); + Con_Printf("%s\n", engineversion); -// COMMANDLINEOPTION: Console: -nostdout disables text output to the terminal the game was launched from - if (COM_CheckParm("-nostdout")) - sys_nostdout = 1; - else - Con_Printf("%s\n", engineversion); + // initialize ixtable + Mathlib_Init(); // initialize filesystem (including fs_basedir, fs_gamedir, -path, -game, scr_screenshot_name) FS_Init(); - // initialize various cvars that could not be initialized earlier - Memory_Init_Commands(); - Con_Init_Commands(); - Cmd_Init_Commands(); - Sys_Init_Commands(); - COM_Init_Commands(); - FS_Init_Commands(); - COM_CheckRegistered(); - - // initialize ixtable - Mathlib_Init(); - NetConn_Init(); + Curl_Init(); //PR_Init(); //PR_Cmd_Init(); PRVM_Init(); @@ -1078,6 +1091,7 @@ void Host_Shutdown(void) CDAudio_Shutdown (); S_Terminate (); + Curl_Shutdown (); NetConn_Shutdown (); //PR_Shutdown ();