/* * * 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 the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. * */ #include "crc.h" #include "common.h" #include "net.h" #include "event.h" #include "custom.h" #include "netadr.h" #include "qlimits.h" #include "consistency.h" #include "inst_baseline.h" #define MAX_RESOURCE_LIST 1280 typedef enum server_state_e { ss_dead = 0, ss_loading = 1, ss_active = 2, } server_state_t; typedef struct server_s { qboolean active; qboolean paused; qboolean loadgame; double time; double oldtime; int lastcheck; double lastchecktime; char name[64]; char oldname[64]; char startspot[64]; char modelname[64]; struct model_s *worldmodel; CRC32_t worldmapCRC; unsigned char clientdllmd5[16]; resource_t resourcelist[MAX_RESOURCE_LIST]; int num_resources; consistency_t consistency_list[MAX_CONSISTENCY_LIST]; int num_consistency; const char *model_precache[MAX_MODELS]; struct model_s *models[MAX_MODELS]; unsigned char model_precache_flags[MAX_MODELS]; struct event_s event_precache[MAX_EVENTS]; const char *sound_precache[MAX_SOUNDS]; short int sound_precache_hashedlookup[MAX_SOUNDS_HASHLOOKUP_SIZE]; qboolean sound_precache_hashedlookup_built; const char *generic_precache[MAX_GENERIC]; char generic_precache_names[MAX_GENERIC][64]; int num_generic_names; const char *lightstyles[MAX_LIGHTSTYLES]; int num_edicts; int max_edicts; edict_t *edicts; struct entity_state_s *baselines; extra_baselines_t *instance_baselines; server_state_t state; sizebuf_t datagram; unsigned char datagram_buf[MAX_DATAGRAM]; sizebuf_t reliable_datagram; unsigned char reliable_datagram_buf[MAX_DATAGRAM]; sizebuf_t multicast; unsigned char multicast_buf[1024]; sizebuf_t spectator; unsigned char spectator_buf[1024]; sizebuf_t signon; unsigned char signon_data[32768]; } server_t; typedef struct server_log_s { qboolean active; qboolean net_log_; netadr_t net_address_; void *file; } server_log_t; typedef struct server_stats_s { int num_samples; int at_capacity; int at_empty; float capacity_percent; float empty_percent; int minusers; int maxusers; float cumulative_occupancy; float occupancy; int num_sessions; float cumulative_sessiontime; float average_session_len; float cumulative_latency; float average_latency; } server_stats_t; typedef struct server_static_s { qboolean dll_initialized; struct client_s *clients; int maxclients; int maxclientslimit; int spawncount; int serverflags; server_log_t log; double next_cleartime; double next_sampletime; server_stats_t stats; qboolean isSecure; } server_static_t; extern server_t *sv;