X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=client.h;h=246d425eb4fdb2aa990daeff040c1d88b8b6f34a;hb=fc39109e7d165c83de276dbd5e9fcbbdfcd12c3d;hp=88b9e71aee18074f46a839a4271054bcaa2b60b7;hpb=9e1d33272ad9edfbb960dd226017c20264872108;p=xonotic%2Fdarkplaces.git diff --git a/client.h b/client.h index 88b9e71a..246d425e 100644 --- a/client.h +++ b/client.h @@ -366,8 +366,8 @@ typedef struct scoreboard_s typedef struct cshift_s { - int destcolor[3]; - int percent; // 0-256 + float destcolor[3]; + float percent; // 0-256 } cshift_t; #define CSHIFT_CONTENTS 0 @@ -424,8 +424,9 @@ typedef struct client_static_s { cactive_t state; - // all client memory allocations go in this pool - mempool_t *mempool; + // all client memory allocations go in these pools + mempool_t *levelmempool; + mempool_t *permanentmempool; // demo loop control // -1 = don't play demos @@ -582,12 +583,14 @@ typedef struct particle_s vec3_t org; vec3_t vel; // velocity of particle, or orientation of decal, or end point of beam float size; + float sizeincrease; // rate of size change per second float alpha; // 0-255 float alphafade; // how much alpha reduces per second float time2; // used for snow fluttering and decal fade float bounce; // how much bounce-back from a surface the particle hits (0 = no physics, 1 = stop and slide, 2 = keep bouncing forever, 1.5 is typical) float gravity; // how much gravity affects this particle (1.0 = normal gravity, 0.0 = none) - float friction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction) + float airfriction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction) + float liquidfriction; // how much liquid friction affects this object (objects with a low mass/size ratio tend to get more liquid friction) unsigned char color[4]; unsigned short owner; // decal stuck to this entity model_t *ownermodel; // model the decal is stuck to (used to make sure the entity is still alive) @@ -650,6 +653,12 @@ typedef struct client_state_s vec3_t mvelocity[2], velocity; // update by server, can be used by mods for zooming vec_t mviewzoom[2], viewzoom; + // if true interpolation the mviewangles and other interpolation of the + // player is disabled until the next network packet + // this is used primarily by teleporters, and when spectating players + // special checking of the old fixangle[1] is used to differentiate + // between teleporting and spectating + qboolean fixangle[2]; // client movement simulation // these fields are only updated by CL_ClientMovement (called by CL_SendMove after parsing each network packet) @@ -659,6 +668,8 @@ typedef struct client_state_s qboolean movement_needupdate; // indicates the queue has been updated and should be replayed qboolean movement_replay; + // timestamps of latest two predicted moves for interpolation + double movement_time[2]; // simulated data (this is valid even if cl.movement is false) vec3_t movement_origin; vec3_t movement_oldorigin; @@ -698,7 +709,7 @@ typedef struct client_state_s // don't change view angle, full screen, etc int intermission; // latched at intermission start - int completed_time; + double completed_time; // the timestamp of the last two messages double mtime[2]; @@ -706,7 +717,10 @@ typedef struct client_state_s // clients view of time, time should be between mtime[0] and mtime[1] to // generate a lerp point for other data, oldtime is the previous frame's // value of time, frametime is the difference between time and oldtime - double time, oldtime, frametime; + double time, oldtime; + // how long it has been since the previous client frame in real time + // (not game time, for that use cl.time - cl.oldtime) + double realframetime; // copy of realtime from last recieved message, for net trouble icon float last_received_message; @@ -911,6 +925,9 @@ extern cvar_t m_yaw; extern cvar_t m_forward; extern cvar_t m_side; +extern cvar_t cl_autodemo; +extern cvar_t cl_autodemo_nameformat; + extern cvar_t r_draweffects; extern cvar_t cl_explosions_alpha_start; @@ -977,6 +994,7 @@ void CL_Effect(vec3_t org, int modelindex, int startframe, int framecount, float void CL_ClearState (void); void CL_ExpandEntities(int num); +void CL_SetInfo(const char *key, const char *value, qboolean send, qboolean allowstarkey, qboolean allowmodel, qboolean quiet); int CL_ReadFromServer (void); @@ -1032,7 +1050,6 @@ extern cvar_t cl_particles; extern cvar_t cl_particles_quality; extern cvar_t cl_particles_size; extern cvar_t cl_particles_quake; -extern cvar_t cl_particles_bloodshowers; extern cvar_t cl_particles_blood; extern cvar_t cl_particles_blood_alpha; extern cvar_t cl_particles_blood_bloodhack; @@ -1054,32 +1071,61 @@ void CL_Particles_Clear(void); void CL_Particles_Init(void); void CL_Particles_Shutdown(void); +typedef enum effectnameindex_s +{ + EFFECT_NONE, + EFFECT_TE_GUNSHOT, + EFFECT_TE_GUNSHOTQUAD, + EFFECT_TE_SPIKE, + EFFECT_TE_SPIKEQUAD, + EFFECT_TE_SUPERSPIKE, + EFFECT_TE_SUPERSPIKEQUAD, + EFFECT_TE_WIZSPIKE, + EFFECT_TE_KNIGHTSPIKE, + EFFECT_TE_VORESPIKE, + EFFECT_TE_EXPLOSION, + EFFECT_TE_EXPLOSIONQUAD, + EFFECT_TE_TAREXPLOSION, + EFFECT_TE_TELEPORT, + EFFECT_TE_LAVASPLASH, + EFFECT_TE_SMALLFLASH, + EFFECT_TE_FLAMEJET, + EFFECT_EF_FLAME, + EFFECT_TE_BLOOD, + EFFECT_TE_SPARK, + EFFECT_TE_PLASMABURN, + EFFECT_TE_TEI_G3, + EFFECT_TE_TEI_SMOKE, + EFFECT_TE_TEI_BIGEXPLOSION, + EFFECT_TE_TEI_PLASMAHIT, + EFFECT_EF_STARDUST, + EFFECT_TR_ROCKET, + EFFECT_TR_GRENADE, + EFFECT_TR_BLOOD, + EFFECT_TR_WIZSPIKE, + EFFECT_TR_SLIGHTBLOOD, + EFFECT_TR_KNIGHTSPIKE, + EFFECT_TR_VORESPIKE, + EFFECT_TR_NEHAHRASMOKE, + EFFECT_TR_NEXUIZPLASMA, + EFFECT_TR_GLOWTRAIL, + EFFECT_SVC_PARTICLE, + EFFECT_TOTAL +} +effectnameindex_t; + +int CL_ParticleEffectIndexForName(const char *name); +const char *CL_ParticleEffectNameForIndex(int i); +void CL_ParticleEffect(int effectindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor); void CL_ParseParticleEffect (void); -void CL_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count); -void CL_RocketTrail (vec3_t start, vec3_t end, int type, int color, entity_t *ent); -void CL_SparkShower (vec3_t org, vec3_t dir, int count, vec_t gravityscale, vec_t radius); -void CL_Smoke (vec3_t org, vec3_t dir, int count, vec_t radius); -void CL_BulletMark (vec3_t org); -void CL_PlasmaBurn (vec3_t org); -void CL_BloodPuff (vec3_t org, vec3_t vel, int count); -void CL_Stardust (vec3_t mins, vec3_t maxs, int count); -void CL_FlameCube (vec3_t mins, vec3_t maxs, int count); -void CL_Flames (vec3_t org, vec3_t vel, int count); -void CL_BloodShower (vec3_t mins, vec3_t maxs, float velspeed, int count); -void CL_ParticleCube (vec3_t mins, vec3_t maxs, vec3_t dir, int count, int colorbase, int gravity, int randomvel); -void CL_ParticleRain (vec3_t mins, vec3_t maxs, vec3_t dir, int count, int colorbase, int type); -void CL_EntityParticles (entity_t *ent); -void CL_BlobExplosion (vec3_t org); -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_ParticleCube (const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, vec_t gravity, vec_t randomvel); +void CL_ParticleRain (const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, int type); +void CL_EntityParticles (const entity_t *ent); +void CL_ParticleExplosion (const vec3_t org); +void CL_ParticleExplosion2 (const vec3_t org, int colorStart, int colorLength); void CL_MoveParticles(void); void R_MoveExplosions(void); -void R_NewExplosion(vec3_t org); +void R_NewExplosion(const vec3_t org); #include "cl_screen.h"