Refactor R_SpriteIsFlashing into R_ThingIsFlashing

Checks for boss fret AND hitlag.
This commit is contained in:
James R 2022-03-21 13:03:30 -07:00
parent 93bd404072
commit fbe3106890
2 changed files with 27 additions and 8 deletions

View file

@ -757,17 +757,32 @@ void R_DrawFlippedMaskedColumn(column_t *column, column_t *brightmap)
dc_texturemid = basetexturemid; dc_texturemid = basetexturemid;
} }
boolean R_SpriteIsFlashing(vissprite_t *vis) static boolean hitlag_is_flashing(mobj_t *thing)
{ {
return (!(vis->cut & SC_PRECIP) return
&& (vis->mobj->flags & (MF_ENEMY|MF_BOSS)) (thing->hitlag > 0) &&
&& (vis->mobj->flags2 & MF2_FRET) (thing->eflags & (MFE_DAMAGEHITLAG));
&& !(vis->mobj->flags & MF_GRENADEBOUNCE)); }
static boolean baddie_is_flashing(mobj_t *thing)
{
return
(thing->flags & (MF_ENEMY|MF_BOSS)) &&
(thing->flags2 & (MF2_FRET)) &&
!(thing->flags & MF_GRENADEBOUNCE);
}
boolean R_ThingIsFlashing(mobj_t *thing)
{
return
hitlag_is_flashing(thing) ||
baddie_is_flashing(thing);
} }
UINT8 *R_GetSpriteTranslation(vissprite_t *vis) UINT8 *R_GetSpriteTranslation(vissprite_t *vis)
{ {
if ((vis->mobj->hitlag > 0 && (vis->mobj->eflags & MFE_DAMAGEHITLAG)) || R_SpriteIsFlashing(vis)) if (!(vis->cut & SC_PRECIP) &&
R_ThingIsFlashing(vis->mobj))
{ {
return R_GetTranslationColormap(TC_HITLAG, 0, GTC_CACHE); return R_GetTranslationColormap(TC_HITLAG, 0, GTC_CACHE);
} }
@ -845,8 +860,11 @@ static void R_DrawVisSprite(vissprite_t *vis)
R_SetColumnFunc(COLDRAWFUNC_DROPSHADOW, false); R_SetColumnFunc(COLDRAWFUNC_DROPSHADOW, false);
dc_transmap = vis->transmap; dc_transmap = vis->transmap;
} }
else if (R_SpriteIsFlashing(vis)) // Bosses "flash" else if (!(vis->cut & SC_PRECIP) &&
R_ThingIsFlashing(vis->mobj)) // Bosses "flash"
{
R_SetColumnFunc(COLDRAWFUNC_TRANS, false); // translate certain pixels to white R_SetColumnFunc(COLDRAWFUNC_TRANS, false); // translate certain pixels to white
}
else if (vis->mobj->color && vis->transmap) // Color mapping else if (vis->mobj->color && vis->transmap) // Color mapping
{ {
R_SetColumnFunc(COLDRAWFUNC_TRANSTRANS, false); R_SetColumnFunc(COLDRAWFUNC_TRANSTRANS, false);

View file

@ -84,6 +84,8 @@ boolean R_ThingIsFullBright (mobj_t *thing);
boolean R_ThingIsSemiBright (mobj_t *thing); boolean R_ThingIsSemiBright (mobj_t *thing);
boolean R_ThingIsFullDark (mobj_t *thing); boolean R_ThingIsFullDark (mobj_t *thing);
boolean R_ThingIsFlashing(mobj_t *thing);
// -------------- // --------------
// MASKED DRAWING // MASKED DRAWING
// -------------- // --------------
@ -211,7 +213,6 @@ extern UINT32 visspritecount;
void R_ClipSprites(drawseg_t* dsstart, portal_t* portal); void R_ClipSprites(drawseg_t* dsstart, portal_t* portal);
void R_ClipVisSprite(vissprite_t *spr, INT32 x1, INT32 x2, drawseg_t* dsstart, portal_t* portal); void R_ClipVisSprite(vissprite_t *spr, INT32 x1, INT32 x2, drawseg_t* dsstart, portal_t* portal);
boolean R_SpriteIsFlashing(vissprite_t *vis);
UINT8 *R_GetSpriteTranslation(vissprite_t *vis); UINT8 *R_GetSpriteTranslation(vissprite_t *vis);
// ---------- // ----------