summaryrefslogtreecommitdiff
path: root/source/sv_init.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2007-09-12 21:58:46 +0000
committerAndrey Nazarov <skuller@skuller.net>2007-09-12 21:58:46 +0000
commit0ef58160f7b4bacc57c8e7397996f0e368417272 (patch)
tree148e7ab1929383ec7e4ef259284293ecb1cd08db /source/sv_init.c
parent10267d9ca8d73eac8e01f7a1ec1d0e27bfca4b5b (diff)
Improved server side handling of entity relative sounds.
Reduced memory usage of MVD delta codec (currently MVDs are broken :)). Fixed zero viewangles being sent so server is some cases (RJ scripts now work). Added screenshotpng command, renamed screenshotJPEG to screenshotjpg. Added gl_screenshot_compression cvar. Fixed too large startup messages being written to client demos. Other misc changes.
Diffstat (limited to 'source/sv_init.c')
-rw-r--r--source/sv_init.c32
1 files changed, 10 insertions, 22 deletions
diff --git a/source/sv_init.c b/source/sv_init.c
index 01fff0e..ffb013f 100644
--- a/source/sv_init.c
+++ b/source/sv_init.c
@@ -24,6 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
server_static_t svs; // persistant server info
server_t sv; // local server
+byte sv_multicast_buffer[MAX_MSGLEN];
+
void SV_ClientReset( client_t *client ) {
if( client->state < cs_connected ) {
@@ -61,10 +63,6 @@ void SV_SpawnServer( const char *server, const char *spawnpoint ) {
CM_FreeMap( &sv.cm );
- if( sv.demofile ) {
- FS_FCloseFile( sv.demofile );
- }
-
// wipe the entire per-level structure
memset( &sv, 0, sizeof( sv ) );
sv.spawncount = ( rand() | ( rand() << 16 ) ) ^ Sys_Realtime();
@@ -73,12 +71,11 @@ void SV_SpawnServer( const char *server, const char *spawnpoint ) {
// reset counters
svs.realtime = 0;
svs.nextEntityStates = 0;
- svs.nextPlayerStates = 0;
+
+ memset( svs.players, 0, sizeof( player_state_t ) * sv_maxclients->integer );
// setup a buffer for accumulating multicast datagrams
- if( svs.multicast_buffer ) {
- SZ_Init( &sv.multicast, svs.multicast_buffer, MAX_MSGLEN );
- }
+ SZ_Init( &sv.mvd.multicast, sv_multicast_buffer, MAX_MSGLEN );
// init rate limits
SV_RateInit( &svs.ratelimit_status, sv_status_limit->integer, 1000 );
@@ -242,20 +239,15 @@ void SV_InitGame( qboolean ismvd ){
}
svs.numEntityStates = sv_maxclients->integer * UPDATE_BACKUP * MAX_PACKET_ENTITIES;
- svs.numPlayerStates = sv_maxclients->integer * UPDATE_BACKUP;
- if( sv_mvd_enable->integer && !ismvd ) {
- svs.numEntityStates += MAX_EDICTS * 2;
- svs.numPlayerStates += sv_maxclients->integer * 2;
- svs.multicast_buffer = SV_Malloc( MAX_MSGLEN );
- }
svs.clientpool = SV_Mallocz( sizeof( client_t ) * sv_maxclients->integer );
svs.entityStates = SV_Mallocz( sizeof( entity_state_t ) * svs.numEntityStates );
- svs.playerStates = SV_Mallocz( sizeof( player_state_t ) * svs.numPlayerStates );
+
+ svs.players = SV_Malloc( sizeof( player_state_t ) * sv_maxclients->integer );
#if USE_ZLIB
- if( deflateInit2( &svs.z, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -15, 9,
- Z_DEFAULT_STRATEGY ) != Z_OK )
+ if( deflateInit2( &svs.z, Z_DEFAULT_COMPRESSION, Z_DEFLATED,
+ -15, 9, Z_DEFAULT_STRATEGY ) != Z_OK )
{
Com_Error( ERR_FATAL, "deflateInit2() failed" );
}
@@ -346,11 +338,7 @@ void SV_Map (const char *levelstring, qboolean restart) {
return;
}
- if( sv.state == ss_dead || sv.state == ss_broadcast ) {
- restart = qtrue;
- }
-
- if( restart ) {
+ if( sv.state == ss_dead || sv.state == ss_broadcast || restart ) {
SV_InitGame( qfalse ); // the game is just starting
}