summaryrefslogtreecommitdiff
path: root/source/sv_main.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2008-08-16 10:19:42 +0000
committerAndrey Nazarov <skuller@skuller.net>2008-08-16 10:19:42 +0000
commit1526e22e4ff29153e9c127081e8ea8d9e2f33b8c (patch)
treeb361766433d4a7b4a111865afd52803e2bbf7754 /source/sv_main.c
parente826e5f176f21cd18b3bbc22887a266835ada57c (diff)
Split some monolithic include files into smaller ones.
Use single BSP models cache for refresh and collision subsystems. Refresh libraries may not longer be dynamically loaded. Made gi.TagMalloc use separate tag namespace to avoid conflicts with engine reserverd tags. Fixed listing order of MVD channels in chooser menu. A lot of misc changes... MSVC build is definitely broken now.
Diffstat (limited to 'source/sv_main.c')
-rw-r--r--source/sv_main.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/source/sv_main.c b/source/sv_main.c
index 4ece3da..75bd455 100644
--- a/source/sv_main.c
+++ b/source/sv_main.c
@@ -55,6 +55,7 @@ cvar_t *allow_download_other;
cvar_t *sv_airaccelerate;
cvar_t *sv_qwmod; // atu QW Physics modificator
cvar_t *sv_noreload; // don't reload level state when reentering
+cvar_t *sv_novis;
cvar_t *sv_http_enable;
cvar_t *sv_http_maxclients;
@@ -1148,7 +1149,7 @@ static void SV_GiveMsec( void ) {
SV_PacketEvent
=================
*/
-void SV_PacketEvent( neterr_t ret ) {
+static void SV_PacketEvent( neterr_t ret ) {
client_t *client;
netchan_t *netchan;
int qport;
@@ -1226,6 +1227,32 @@ void SV_PacketEvent( neterr_t ret ) {
}
}
+void SV_ProcessEvents( void ) {
+ neterr_t ret;
+
+#if USE_CLIENT
+ memset( &net_from, 0, sizeof( net_from ) );
+ net_from.type = NA_LOOPBACK;
+
+ // process loopback packets
+ while( NET_GetLoopPacket( NS_SERVER ) ) {
+ if( sv_running->integer ) {
+ SV_PacketEvent( NET_OK );
+ }
+ }
+#endif
+
+ // process network packets
+ do {
+ ret = NET_GetPacket( NS_SERVER );
+ if( ret == NET_AGAIN ) {
+ break;
+ }
+ SV_PacketEvent( ret );
+ } while( ret == NET_OK );
+}
+
+
/*
==================
SV_SendAsyncPackets
@@ -1371,7 +1398,7 @@ SV_RunGameFrame
=================
*/
static void SV_RunGameFrame( void ) {
-#ifndef DEDICATED_ONLY
+#if USE_CLIENT
if( host_speeds->integer )
time_before_game = Sys_Milliseconds();
#endif
@@ -1407,7 +1434,7 @@ static void SV_RunGameFrame( void ) {
svs.realtime = svs.time;
}
-#ifndef DEDICATED_ONLY
+#if USE_CLIENT
if( host_speeds->integer )
time_after_game = Sys_Milliseconds();
#endif
@@ -1488,7 +1515,7 @@ SV_Frame
void SV_Frame( int msec ) {
int mvdconns;
-#ifndef DEDICATED_ONLY
+#if USE_CLIENT
time_before_game = time_after_game = 0;
#endif
@@ -1504,7 +1531,7 @@ void SV_Frame( int msec ) {
return;
}
-#ifndef DEDICATED_ONLY
+#if USE_CLIENT
// pause if there is only local client on the server
if( !dedicated->integer && cl_paused->integer &&
List_Count( &svs.udp_client_list ) == 1 && mvdconns == 0 &&
@@ -1770,6 +1797,7 @@ void SV_Init( void ) {
sv_password = Cvar_Get( "sv_password", "", CVAR_PRIVATE );
sv_reserved_password = Cvar_Get( "sv_reserved_password", "", CVAR_PRIVATE );
sv_locked = Cvar_Get( "sv_locked", "0", 0 );
+ sv_novis = Cvar_Get ("sv_novis", "0", 0);
sv_debug_send = Cvar_Get( "sv_debug_send", "0", 0 );
sv_pad_packets = Cvar_Get( "sv_pad_packets", "0", 0 );