2017-12-30 06:12:48 +07:00

139 lines
3.8 KiB
C

/*
*
* 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;