X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=client.h;h=c588db9d9c05ae4470b60d66c45a9b7ec2042a70;hb=452858bbdaf67f5e1a13486f0abb24baffe7ea20;hp=1dd0df3c32fc2b5f7efbe2bd6edd37c58add3573;hpb=798d907bb916ac4f89e854794a28540913b71b01;p=xonotic%2Fdarkplaces.git diff --git a/client.h b/client.h index 1dd0df3c..c588db9d 100644 --- a/client.h +++ b/client.h @@ -56,9 +56,17 @@ cl_effect_t; typedef struct { int entity; + // draw this as lightning polygons, or a model? + int lightning; struct model_s *model; float endtime; vec3_t start, end; + // if this beam is owned by an entity, this is the beam start relative to + // that entity's matrix for per frame start updates + vec3_t relativestart; + vec3_t relativeend; + // indicates whether relativestart is valid + int relativestartvalid; } beam_t; @@ -74,8 +82,8 @@ typedef struct float radius; // drop this each second float decay; - // the entity that spawned this light (can be NULL if it will never be replaced) - //entity_render_t *ent; + // the entity that owns this light (can be NULL) + struct entity_render_s *ent; } dlight_t; @@ -86,8 +94,8 @@ typedef struct frameblend_s } frameblend_t; -// LordHavoc: disregard the following warning, entlights stuff is semi-persistent... -// LordHavoc: nothing in this structure is persistent, it may be overwritten by the client every frame, for persistent data use entity_lerp_t. +// LordHavoc: this struct is intended for the renderer but some fields are +// used by the client. typedef struct entity_render_s { // location @@ -116,14 +124,14 @@ typedef struct entity_render_s // render flags int flags; - // these are copied from the persistent data + // interpolated animation // frame that the model is interpolating from int frame1; // frame that the model is interpolating to int frame2; // interpolation factor, usually computed from frame2time - double framelerp; + float framelerp; // time frame1 began playing (for framegroup animations) double frame1time; // time frame2 began playing (for framegroup animations) @@ -149,13 +157,12 @@ entity_render_t; typedef struct entity_persistent_s { - // particles + int linkframe; - // trail rendering vec3_t trail_origin; - float trail_time; - // effects + // particle trail + float trail_time; // muzzleflash fading float muzzleflash; @@ -171,21 +178,6 @@ typedef struct entity_persistent_s float oldangles[3]; float neworigin[3]; float newangles[3]; - - // interpolated animation - - // lerp resets when model changes - int modelindex; - // frame that the model is interpolating from - int frame1; - // frame that the model is interpolating to - int frame2; - // interpolation factor, usually computed from frame2time - double framelerp; - // time frame1 began playing (for framegroup animations) - double frame1time; - // time frame2 began playing (for framegroup animations) - double frame2time; } entity_persistent_t; @@ -225,7 +217,6 @@ typedef struct typedef struct { char name[MAX_SCOREBOARDNAME]; - float entertime; int frags; int colors; // two 4 bit fields } scoreboard_t; @@ -283,7 +274,7 @@ typedef struct qboolean timedemo; // -1 = use normal cd track int forcetrack; - QFile *demofile; + qfile_t *demofile; // to meter out one message a frame int td_lastframe; // host_framecount at start @@ -293,12 +284,17 @@ typedef struct // LordHavoc: pausedemo qboolean demopaused; + qboolean connect_trying; + int connect_remainingtries; + double connect_nextsendtime; + lhnetsocket_t *connect_mysocket; + lhnetaddress_t connect_address; // connection information // 0 to SIGNONS int signon; - // network socket - struct qsocket_s *netcon; + // network connection + netconn_t *netcon; // writing buffer to send to server sizebuf_t message; } @@ -312,6 +308,9 @@ extern client_static_t cls; // typedef struct { + // true if playing in a local game and no one else is connected + int islocalgame; + // when connecting to the server throw out the first couple move messages // so the player doesn't accidentally do something the first frame int movemessages; @@ -329,6 +328,8 @@ typedef struct int items; // cl.time of acquiring item, for blinking float item_gettime[32]; + // cl.time of changing STAT_ACTIVEWEAPON + float weapontime; // use pain anim frame if cl.time < this float faceanimtime; @@ -421,16 +422,17 @@ typedef struct // [cl.maxclients] scoreboard_t *scores; - // used by view code for setting up eye position - vec3_t viewentorigin; // LordHavoc: sniping zoom, QC controlled float viewzoom; // for interpolation float viewzoomold, viewzoomnew; + // protocol version of the server we're connected to + int protocol; + // entity database stuff - vec3_t viewentoriginold, viewentoriginnew; entity_database_t entitydatabase; + entity_database4_t *entitydatabase4; } client_state_t; @@ -507,13 +509,17 @@ extern void CL_DecayLights (void); void CL_Init (void); -void CL_EstablishConnection (char *host); +void CL_EstablishConnection(const char *host); void CL_Disconnect (void); void CL_Disconnect_f (void); void CL_BoundingBoxForEntity(entity_render_t *ent); +extern cvar_t cl_beams_polygons; +extern cvar_t cl_beams_relative; +extern cvar_t cl_beams_lightatend; + // // cl_input // @@ -529,7 +535,7 @@ extern kbutton_t in_strafe; extern kbutton_t in_speed; void CL_InitInput (void); -void CL_SendCmd (void); +void CL_SendCmd (usercmd_t *cmd); void CL_SendMove (usercmd_t *cmd); void CL_LerpUpdate(entity_t *e); @@ -555,20 +561,22 @@ char *Key_KeynumToString (int keynum); // // cl_demo.c // -void CL_StopPlayback (void); -int CL_GetMessage (void); +void CL_StopPlayback(void); +void CL_ReadDemoMessage(void); +void CL_WriteDemoMessage(void); -void CL_NextDemo (void); -void CL_Stop_f (void); -void CL_Record_f (void); -void CL_PlayDemo_f (void); -void CL_TimeDemo_f (void); +void CL_NextDemo(void); +void CL_Stop_f(void); +void CL_Record_f(void); +void CL_PlayDemo_f(void); +void CL_TimeDemo_f(void); // // cl_parse.c // void CL_Parse_Init(void); void CL_ParseServerMessage(void); +void CL_Parse_DumpPacket(void); // // view @@ -613,6 +621,9 @@ void CL_ParticleExplosion (vec3_t org); void CL_ParticleExplosion2 (vec3_t org, int colorStart, int colorLength); void CL_LavaSplash (vec3_t org); void CL_TeleportSplash (vec3_t org); +void CL_BeamParticle (const vec3_t start, const vec3_t end, vec_t radius, float red, float green, float blue, float alpha, float lifetime); +void CL_Tei_Smoke(const vec3_t pos, const vec3_t dir, int count); +void CL_Tei_PlasmaHit(const vec3_t pos, const vec3_t dir, int count); void CL_MoveParticles(void); void R_MoveExplosions(void); void R_NewExplosion(vec3_t org); @@ -625,16 +636,12 @@ typedef struct int x, y, width, height; float fov_x, fov_y; - // view point - vec3_t vieworg; - vec3_t viewangles; + // view transform + matrix4x4_t viewentitymatrix; // fullscreen color blend float viewblend[4]; - // weapon model - entity_render_t viewent; - entity_render_t **entities; int numentities; int maxentities;