mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-02-27 06:11:17 +00:00
client: move flashlight to separate field
This commit is contained in:
parent
3314fc941e
commit
c7f74a3fa6
5 changed files with 56 additions and 9 deletions
|
@ -40,7 +40,6 @@ CL_AddPacketEntities(frame_t *frame)
|
||||||
centity_t *cent;
|
centity_t *cent;
|
||||||
int autoanim;
|
int autoanim;
|
||||||
clientinfo_t *ci;
|
clientinfo_t *ci;
|
||||||
unsigned int effects, renderfx;
|
|
||||||
|
|
||||||
/* To distinguish baseq2, xatrix and rogue. */
|
/* To distinguish baseq2, xatrix and rogue. */
|
||||||
cvar_t *gametype = Cvar_Get("gametype", "", CVAR_LATCH | CVAR_SERVERINFO);
|
cvar_t *gametype = Cvar_Get("gametype", "", CVAR_LATCH | CVAR_SERVERINFO);
|
||||||
|
@ -53,12 +52,15 @@ CL_AddPacketEntities(frame_t *frame)
|
||||||
|
|
||||||
for (pnum = 0; pnum < frame->num_entities; pnum++)
|
for (pnum = 0; pnum < frame->num_entities; pnum++)
|
||||||
{
|
{
|
||||||
|
unsigned int effects, renderfx, rr_effects;
|
||||||
|
|
||||||
s1 = &cl_parse_entities[(frame->parse_entities +
|
s1 = &cl_parse_entities[(frame->parse_entities +
|
||||||
pnum) & (MAX_PARSE_ENTITIES - 1)];
|
pnum) & (MAX_PARSE_ENTITIES - 1)];
|
||||||
|
|
||||||
cent = &cl_entities[s1->number];
|
cent = &cl_entities[s1->number];
|
||||||
|
|
||||||
effects = s1->effects;
|
effects = s1->effects;
|
||||||
|
rr_effects = s1->rr_effects;
|
||||||
renderfx = s1->renderfx;
|
renderfx = s1->renderfx;
|
||||||
|
|
||||||
/* set frame */
|
/* set frame */
|
||||||
|
@ -132,7 +134,7 @@ CL_AddPacketEntities(frame_t *frame)
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
ent.origin[i] = ent.oldorigin[i] = cent->prev.origin[i] + cl.lerpfrac *
|
ent.origin[i] = ent.oldorigin[i] = cent->prev.origin[i] + cl.lerpfrac *
|
||||||
(cent->current.origin[i] - cent->prev.origin[i]);
|
(cent->current.origin[i] - cent->prev.origin[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +256,7 @@ CL_AddPacketEntities(frame_t *frame)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (effects & EF_FLASHLIGHT) {
|
if (rr_effects & EF_FLASHLIGHT) {
|
||||||
vec3_t forward, start, end;
|
vec3_t forward, start, end;
|
||||||
trace_t trace;
|
trace_t trace;
|
||||||
int mask = CONTENTS_SOLID | CONTENTS_MONSTER;
|
int mask = CONTENTS_SOLID | CONTENTS_MONSTER;
|
||||||
|
|
|
@ -254,6 +254,27 @@ CL_ParseDelta(entity_state_t *from, entity_state_t *to, int number, int bits)
|
||||||
to->effects = MSG_ReadShort(&net_message);
|
to->effects = MSG_ReadShort(&net_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ReRelease effects */
|
||||||
|
if (cls.serverProtocol != PROTOCOL_VERSION)
|
||||||
|
{
|
||||||
|
to->rr_effects = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((bits & (U_EFFECTS8 | U_EFFECTS16)) == (U_EFFECTS8 | U_EFFECTS16))
|
||||||
|
{
|
||||||
|
to->rr_effects = MSG_ReadLong(&net_message);
|
||||||
|
}
|
||||||
|
else if (bits & U_EFFECTS8)
|
||||||
|
{
|
||||||
|
to->rr_effects = MSG_ReadByte(&net_message);
|
||||||
|
}
|
||||||
|
else if (bits & U_EFFECTS16)
|
||||||
|
{
|
||||||
|
to->rr_effects = MSG_ReadShort(&net_message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((bits & (U_RENDERFX8 | U_RENDERFX16)) == (U_RENDERFX8 | U_RENDERFX16))
|
if ((bits & (U_RENDERFX8 | U_RENDERFX16)) == (U_RENDERFX8 | U_RENDERFX16))
|
||||||
{
|
{
|
||||||
to->renderfx = MSG_ReadLong(&net_message);
|
to->renderfx = MSG_ReadLong(&net_message);
|
||||||
|
|
|
@ -692,7 +692,6 @@ typedef struct
|
||||||
* it has a zero index model. */
|
* it has a zero index model. */
|
||||||
#define EF_ROTATE 0x00000001 /* rotate (bonus items) */
|
#define EF_ROTATE 0x00000001 /* rotate (bonus items) */
|
||||||
#define EF_GIB 0x00000002 /* leave a trail */
|
#define EF_GIB 0x00000002 /* leave a trail */
|
||||||
#define EF_FLASHLIGHT 0x00000004 /* project flashlight, only for players */
|
|
||||||
#define EF_BLASTER 0x00000008 /* redlight + trail */
|
#define EF_BLASTER 0x00000008 /* redlight + trail */
|
||||||
#define EF_ROCKET 0x00000010 /* redlight + trail */
|
#define EF_ROCKET 0x00000010 /* redlight + trail */
|
||||||
#define EF_GRENADE 0x00000020
|
#define EF_GRENADE 0x00000020
|
||||||
|
@ -723,6 +722,10 @@ typedef struct
|
||||||
#define EF_HALF_DAMAGE 0x40000000
|
#define EF_HALF_DAMAGE 0x40000000
|
||||||
#define EF_TRACKERTRAIL 0x80000000
|
#define EF_TRACKERTRAIL 0x80000000
|
||||||
|
|
||||||
|
/* entity_state_t->rr_effects
|
||||||
|
* ReRelease flags, values are diffeent to quake 2 RR code */
|
||||||
|
#define EF_FLASHLIGHT 0x00000001 /* project flashlight, only for players */
|
||||||
|
|
||||||
/* entity_state_t->renderfx flags */
|
/* entity_state_t->renderfx flags */
|
||||||
#define RF_MINLIGHT 1 /* allways have some light (viewmodel) */
|
#define RF_MINLIGHT 1 /* allways have some light (viewmodel) */
|
||||||
#define RF_VIEWERMODEL 2 /* don't draw through eyes, only mirrors */
|
#define RF_VIEWERMODEL 2 /* don't draw through eyes, only mirrors */
|
||||||
|
@ -1224,7 +1227,8 @@ typedef struct entity_state_s
|
||||||
/* events only go out for a single frame, they */
|
/* events only go out for a single frame, they */
|
||||||
/* are automatically cleared each frame */
|
/* are automatically cleared each frame */
|
||||||
/* New protocol fields */
|
/* New protocol fields */
|
||||||
vec3_t scale;
|
vec3_t scale; /* model scale */
|
||||||
|
unsigned int rr_effects;
|
||||||
} entity_state_t;
|
} entity_state_t;
|
||||||
|
|
||||||
/* ============================================== */
|
/* ============================================== */
|
||||||
|
|
|
@ -527,14 +527,14 @@ MSG_WriteDeltaEntity(entity_state_t *from,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (to->effects != from->effects)
|
if ((to->effects != from->effects) || (to->rr_effects != from->rr_effects))
|
||||||
{
|
{
|
||||||
if (to->effects < 256)
|
if ((to->effects < 256) && (to->rr_effects < 256))
|
||||||
{
|
{
|
||||||
bits |= U_EFFECTS8;
|
bits |= U_EFFECTS8;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (to->effects < 0x8000)
|
else if ((to->effects < 0x8000) && (to->rr_effects < 0x8000))
|
||||||
{
|
{
|
||||||
bits |= U_EFFECTS16;
|
bits |= U_EFFECTS16;
|
||||||
}
|
}
|
||||||
|
@ -767,6 +767,25 @@ MSG_WriteDeltaEntity(entity_state_t *from,
|
||||||
MSG_WriteShort(msg, to->effects);
|
MSG_WriteShort(msg, to->effects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ReRelease effects */
|
||||||
|
if (protocol == PROTOCOL_VERSION)
|
||||||
|
{
|
||||||
|
if ((bits & (U_EFFECTS8 | U_EFFECTS16)) == (U_EFFECTS8 | U_EFFECTS16))
|
||||||
|
{
|
||||||
|
MSG_WriteLong(msg, to->rr_effects);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (bits & U_EFFECTS8)
|
||||||
|
{
|
||||||
|
MSG_WriteByte(msg, to->rr_effects);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (bits & U_EFFECTS16)
|
||||||
|
{
|
||||||
|
MSG_WriteShort(msg, to->rr_effects);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((bits & (U_RENDERFX8 | U_RENDERFX16)) == (U_RENDERFX8 | U_RENDERFX16))
|
if ((bits & (U_RENDERFX8 | U_RENDERFX16)) == (U_RENDERFX8 | U_RENDERFX16))
|
||||||
{
|
{
|
||||||
MSG_WriteLong(msg, to->renderfx);
|
MSG_WriteLong(msg, to->renderfx);
|
||||||
|
|
|
@ -1114,6 +1114,7 @@ G_SetClientEffects(edict_t *ent)
|
||||||
}
|
}
|
||||||
|
|
||||||
ent->s.effects = 0;
|
ent->s.effects = 0;
|
||||||
|
ent->s.rr_effects = 0;
|
||||||
|
|
||||||
/* player is always ir visible, even dead. */
|
/* player is always ir visible, even dead. */
|
||||||
ent->s.renderfx = RF_IR_VISIBLE;
|
ent->s.renderfx = RF_IR_VISIBLE;
|
||||||
|
@ -1125,7 +1126,7 @@ G_SetClientEffects(edict_t *ent)
|
||||||
|
|
||||||
if (ent->flags & FL_FLASHLIGHT)
|
if (ent->flags & FL_FLASHLIGHT)
|
||||||
{
|
{
|
||||||
ent->s.effects |= EF_FLASHLIGHT;
|
ent->s.rr_effects |= EF_FLASHLIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ent->flags & FL_DISGUISED)
|
if (ent->flags & FL_DISGUISED)
|
||||||
|
|
Loading…
Reference in a new issue