*/
// protocol.h -- communications protocols
+#ifndef PROTOCOL_H
+#define PROTOCOL_H
+
#define PROTOCOL_VERSION 15
#define DPPROTOCOL_VERSION1 96
#define DPPROTOCOL_VERSION2 97
+// LordHavoc: I think the 96-99 range was going to run out too soon... so here I jump to 3500
+#define DPPROTOCOL_VERSION3 3500
// model effects
#define EF_ROCKET 1 // leave a trail
#define EF_ADDITIVE 32
#define EF_BLUE 64
#define EF_RED 128
-#define EF_DELTA 8388608 // LordHavoc: entity is delta compressed to save network bandwidth
+#define EF_DELTA 8388608 // LordHavoc: (obsolete) entity is delta compressed to save network bandwidth (no longer used)
+#define EF_LOWPRECISION 4194304 // LordHavoc: entity is low precision (integer coordinates) to save network bandwidth
// effects/model (can be used as model flags or entity effects)
-#define EF_REFLECTIVE 256 // LordHavoc: shiny metal objects :)
+#define EF_REFLECTIVE 256 // LordHavoc: shiny metal objects :) (not currently supported)
#define EF_FULLBRIGHT 512 // LordHavoc: fullbright
#define EF_FLAME 1024 // LordHavoc: on fire
+#define EF_STARDUST 2048 // LordHavoc: showering sparks
#define EF_STEP 0x80000000 // internal client use only - present on MOVETYPE_STEP entities, not QC accessible (too many bits)
// LordHavoc: my svc_ range, 50-59
#define svc_cgame 50 // [short] length [bytes] data
-#define svc_fog 51 // unfinished and obsolete
+#define svc_unusedlh1 51
#define svc_effect 52 // [vector] org [byte] modelindex [byte] startframe [byte] framecount [byte] framerate
#define svc_effect2 53 // [vector] org [short] modelindex [short] startframe [byte] framecount [byte] framerate
#define svc_sound2 54 // short soundindex instead of byte
// PGM 01/21/97
#define TE_BEAM 13 // [entity] entity [vector] start [vector] end
-// PGM 01/21/97
+// PGM 01/21/97
// Nehahra effects used in the movie (TE_EXPLOSION3 also got written up in a QSG tutorial, hence it's not marked NEH)
#define TE_EXPLOSION3 16 // [vector] origin [coord] red [coord] green [coord] blue
#define RENDER_GLOWTRAIL 2
#define RENDER_VIEWMODEL 4
#define RENDER_EXTERIORMODEL 8
+#define RENDER_LOWPRECISION 16 // send as low precision coordinates to save bandwidth
+#define RENDER_COLORMAPPED 32
typedef struct
{
void EntityFrame_Write(entity_database_t *d, entity_frame_t *f, sizebuf_t *msg);
// (client) reads a frame from network stream
void EntityFrame_Read(entity_database_t *d);
-// (client) reads (and interpolates) the eye location from the database,
-// given a current time
-//int EntityFrame_FetchEye(entity_database_t *d, vec3_t eye, double time);
-// (client) fetchs an entity from the frame by index into the entity list
-//int EntityFrame_FetchEntityByIndex(entity_frame_t *f, entity_state_t *e, int index);
-// (client) fetchs an entity from the frame by entity number
-//int EntityFrame_FetchEntityByNumber(entity_frame_t *f, entity_state_t *e, int number);
// (client) returns the frame number of the most recent frame recieved
int EntityFrame_MostRecentlyRecievedFrameNum(entity_database_t *d);
+
+#endif
+