Merge branch 'boss-code-extras' into 'master'

Extra code changes for boss

See merge request KartKrew/Kart!563
This commit is contained in:
toaster 2022-03-22 13:06:15 +00:00
commit 982c6d9a2e
6 changed files with 37 additions and 18 deletions

View file

@ -5518,10 +5518,11 @@ static void HWR_ProjectSprite(mobj_t *thing)
vis->mobj = thing;
//Hurdler: 25/04/2000: now support colormap in hardware mode
if (vis->mobj->hitlag > 0 && (vis->mobj->eflags & MFE_DAMAGEHITLAG))
if (R_ThingIsFlashing(vis->mobj))
{
vis->colormap = R_GetTranslationColormap(TC_HITLAG, 0, GTC_CACHE);
}
/*
else if ((vis->mobj->flags & (MF_ENEMY|MF_BOSS)) && (vis->mobj->flags2 & MF2_FRET) && !(vis->mobj->flags & MF_GRENADEBOUNCE) && (leveltime & 1)) // Bosses "flash"
{
if (vis->mobj->type == MT_CYBRAKDEMON || vis->mobj->colorized)
@ -5531,6 +5532,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
else
vis->colormap = R_GetTranslationColormap(TC_BOSS, 0, GTC_CACHE);
}
*/
else if (thing->color)
{
// New colormap stuff for skins Tails 06-07-2002

View file

@ -1499,10 +1499,11 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
{
INT32 skinnum = TC_DEFAULT;
if (spr->mobj->hitlag > 0 && (spr->mobj->eflags & MFE_DAMAGEHITLAG))
if (R_ThingIsFlashing(spr->mobj))
{
skinnum = TC_HITLAG;
}
/*
else if ((spr->mobj->flags & (MF_ENEMY|MF_BOSS)) && (spr->mobj->flags2 & MF2_FRET) && !(spr->mobj->flags & MF_GRENADEBOUNCE) && (leveltime & 1)) // Bosses "flash"
{
if (spr->mobj->type == MT_CYBRAKDEMON || spr->mobj->colorized)
@ -1512,6 +1513,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
else
skinnum = TC_BOSS;
}
*/
else if ((skincolornum_t)spr->mobj->color != SKINCOLOR_NONE)
{
if (spr->mobj->colorized)

View file

@ -110,15 +110,13 @@ void K_InitBossHealthBar(const char *enemyname, const char *subtitle, sfxenum_t
{
if (enemyname && enemyname[0])
{
if (bossinfo.enemyname)
Z_Free(bossinfo.enemyname);
Z_Free(bossinfo.enemyname);
bossinfo.enemyname = Z_StrDup(enemyname);
}
if (subtitle && subtitle[0])
{
if (bossinfo.subtitle)
Z_Free(bossinfo.subtitle);
Z_Free(bossinfo.subtitle);
bossinfo.subtitle = Z_StrDup(subtitle);
}

View file

@ -4488,10 +4488,8 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate)
// Reset some pesky boss state that can't be handled elsewhere.
bossinfo.barlen = BOSSHEALTHBARLEN;
bossinfo.visualbar = 0;
if (bossinfo.enemyname)
Z_Free(bossinfo.enemyname);
if (bossinfo.subtitle)
Z_Free(bossinfo.subtitle);
Z_Free(bossinfo.enemyname);
Z_Free(bossinfo.subtitle);
bossinfo.enemyname = bossinfo.subtitle = NULL;
bossinfo.titleshow = 0;
bossinfo.titlesound = sfx_typri1;

View file

@ -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);

View file

@ -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
// --------------
@ -218,7 +220,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);
// ----------