*/
// server.h
+#ifndef SERVER_H
+#define SERVER_H
+
typedef struct
{
int maxclients;
double time;
double frametime;
-
+
int lastcheck; // used by PF_checkclient
double lastchecktime;
-
+
char name[64]; // map name
char modelname[64]; // maps/<name>.bsp, for model_precache[0]
struct model_s *worldmodel;
server_state_t state; // some actions are only valid during load
sizebuf_t datagram;
- byte datagram_buf[MAX_DATAGRAM];
+ qbyte datagram_buf[MAX_DATAGRAM];
sizebuf_t reliable_datagram; // copied to all clients at end of frame
- byte reliable_datagram_buf[MAX_DATAGRAM];
+ qbyte reliable_datagram_buf[MAX_DATAGRAM];
sizebuf_t signon;
- byte signon_buf[32768]; // LordHavoc: increased signon message buffer from 8192 to 32768
+ qbyte signon_buf[32768]; // LordHavoc: increased signon message buffer from 8192 to 32768
} server_t;
qboolean dropasap; // has been told to go to another level
qboolean sendsignon; // only valid before spawned
+#ifndef NOROUTINGFIX
+ // LordHavoc: to make netquake protocol get through NAT routers, have to wait for client to ack
+ qboolean waitingforconnect; // waiting for connect from client (stage 1)
+ qboolean sendserverinfo; // send server info in next datagram (stage 2)
+#endif
+
double last_message; // reliable messages must be sent
// periodically
sizebuf_t message; // can be added to at any time,
// copied and clear once per frame
- byte msgbuf[MAX_MSGLEN];
+ qbyte msgbuf[MAX_MSGLEN];
edict_t *edict; // EDICT_NUM(clientnum+1)
char name[32]; // for printing to other people
int colors;
-
+
float ping_times[NUM_PING_TIMES];
int num_pings; // ping_times[num_pings%NUM_PING_TIMES]
float ping; // LordHavoc: can be used for prediction or whatever...
// spawn parms are carried from level to level
float spawn_parms[NUM_SPAWN_PARMS];
-// client known data for deltas
+// client known data for deltas
int old_frags;
int pmodel;
+#ifdef QUAKEENTITIES
// delta compression state
float nextfullupdate[MAX_EDICTS];
+#endif
+ // visibility state
+ float visibletime[MAX_EDICTS];
+
+#ifndef QUAKEENTITIES
+ entity_database_t entitydatabase;
+ int entityframenumber; // incremented each time an entity frame is sent
+#endif
} client_t;
// edict->flags
#define FL_FLY 1
#define FL_SWIM 2
-//#define FL_GLIMPSE 4
#define FL_CONVEYOR 4
#define FL_CLIENT 8
#define FL_INWATER 16
extern cvar_t sv_idealpitchscale;
extern cvar_t sv_aim;
extern cvar_t sv_predict;
+extern cvar_t sv_stepheight;
+extern cvar_t sv_jumpstep;
extern server_static_t svs; // persistant server info
extern server_t sv; // local server
void SV_RunClients (void);
void SV_SaveSpawnparms (void);
void SV_SpawnServer (char *server);
+
+#endif
+