From fbe31068901acabb313658455a7e9975af45247f Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 21 Mar 2022 13:03:30 -0700 Subject: [PATCH] Refactor R_SpriteIsFlashing into R_ThingIsFlashing Checks for boss fret AND hitlag. --- src/r_things.c | 32 +++++++++++++++++++++++++------- src/r_things.h | 3 ++- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/r_things.c b/src/r_things.c index 2678b35b6..524b9a534 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -757,17 +757,32 @@ void R_DrawFlippedMaskedColumn(column_t *column, column_t *brightmap) dc_texturemid = basetexturemid; } -boolean R_SpriteIsFlashing(vissprite_t *vis) +static boolean hitlag_is_flashing(mobj_t *thing) { - return (!(vis->cut & SC_PRECIP) - && (vis->mobj->flags & (MF_ENEMY|MF_BOSS)) - && (vis->mobj->flags2 & MF2_FRET) - && !(vis->mobj->flags & MF_GRENADEBOUNCE)); + return + (thing->hitlag > 0) && + (thing->eflags & (MFE_DAMAGEHITLAG)); +} + +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) { - 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); } @@ -845,8 +860,11 @@ static void R_DrawVisSprite(vissprite_t *vis) R_SetColumnFunc(COLDRAWFUNC_DROPSHADOW, false); 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 + } else if (vis->mobj->color && vis->transmap) // Color mapping { R_SetColumnFunc(COLDRAWFUNC_TRANSTRANS, false); diff --git a/src/r_things.h b/src/r_things.h index 4e0c8194a..0c9068e12 100644 --- a/src/r_things.h +++ b/src/r_things.h @@ -84,6 +84,8 @@ boolean R_ThingIsFullBright (mobj_t *thing); boolean R_ThingIsSemiBright (mobj_t *thing); boolean R_ThingIsFullDark (mobj_t *thing); +boolean R_ThingIsFlashing(mobj_t *thing); + // -------------- // MASKED DRAWING // -------------- @@ -211,7 +213,6 @@ extern UINT32 visspritecount; 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); -boolean R_SpriteIsFlashing(vissprite_t *vis); UINT8 *R_GetSpriteTranslation(vissprite_t *vis); // ----------