diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 2ea0abb37..6c1b8881f 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5504,45 +5504,7 @@ static void HWR_ProjectSprite(mobj_t *thing) translation = thing->translation; //Hurdler: 25/04/2000: now support colormap in hardware mode - if (R_ThingIsFlashing(vis->mobj)) // Bosses "flash" - { - if (vis->mobj->type == MT_CYBRAKDEMON || vis->mobj->colorized) - vis->colormap = R_GetTranslationColormap(TC_ALLWHITE, 0, GTC_CACHE); - else if (vis->mobj->type == MT_METALSONIC_BATTLE) - vis->colormap = R_GetTranslationColormap(TC_METALSONIC, 0, GTC_CACHE); - else - vis->colormap = R_GetTranslationColormap(TC_BOSS, color, GTC_CACHE); - } - else if (translation != 0) - { - remaptable_t *tr = R_GetTranslationByID(translation); - if (tr != NULL) - vis->colormap = tr->remap; - } - else if (color != SKINCOLOR_NONE) - { - // New colormap stuff for skins Tails 06-07-2002 - if (thing->colorized) - vis->colormap = R_GetTranslationColormap(TC_RAINBOW, color, GTC_CACHE); - else if (thing->player && thing->player->dashmode >= DASHMODE_THRESHOLD - && (thing->player->charflags & SF_DASHMODE) - && ((leveltime/2) & 1)) - { - if (thing->player->charflags & SF_MACHINE) - vis->colormap = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); - else - vis->colormap = R_GetTranslationColormap(TC_RAINBOW, color, GTC_CACHE); - } - else if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player! - { - size_t skinnum = (skin_t*)thing->skin-skins; - vis->colormap = R_GetTranslationColormap((INT32)skinnum, color, GTC_CACHE); - } - else - vis->colormap = NULL; - } - else - vis->colormap = NULL; + vis->colormap = R_GetTranslationForThing(vis->mobj, color, translation); // set top/bottom coords vis->gzt = gzt; diff --git a/src/r_splats.c b/src/r_splats.c index 0b482d798..2f8fd4c8d 100644 --- a/src/r_splats.c +++ b/src/r_splats.c @@ -408,7 +408,7 @@ static void R_RasterizeFloorSplat(floorsplat_t *pSplat, vector2_t *verts, visspr } ds_colormap = vis->colormap; - ds_translation = R_GetSpriteTranslation(vis); + ds_translation = R_GetTranslationForThing(vis->mobj, vis->color, vis->translation); if (ds_translation == NULL) ds_translation = colormaps; diff --git a/src/r_things.c b/src/r_things.c index 33649f1d6..75c652ea1 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -766,46 +766,46 @@ void R_DrawFlippedMaskedColumn(column_t *column) dc_texturemid = basetexturemid; } -UINT8 *R_GetSpriteTranslation(vissprite_t *vis) +UINT8 *R_GetTranslationForThing(mobj_t *mobj, skincolornum_t color, UINT16 translation) { - if (R_ThingIsFlashing(vis->mobj)) // Bosses "flash" + if (R_ThingIsFlashing(mobj)) // Bosses "flash" { - if (vis->mobj->type == MT_CYBRAKDEMON || vis->mobj->colorized) + if (mobj->type == MT_CYBRAKDEMON || mobj->colorized) return R_GetTranslationColormap(TC_ALLWHITE, 0, GTC_CACHE); - else if (vis->mobj->type == MT_METALSONIC_BATTLE) + else if (mobj->type == MT_METALSONIC_BATTLE) return R_GetTranslationColormap(TC_METALSONIC, 0, GTC_CACHE); else - return R_GetTranslationColormap(TC_BOSS, vis->color, GTC_CACHE); + return R_GetTranslationColormap(TC_BOSS, color, GTC_CACHE); } - else if (vis->translation) + else if (translation != 0) { - remaptable_t *tr = R_GetTranslationByID(vis->translation); + remaptable_t *tr = R_GetTranslationByID(translation); if (tr != NULL) return tr->remap; } - else if (vis->color) + else if (color != SKINCOLOR_NONE) { // New colormap stuff for skins Tails 06-07-2002 - if (vis->mobj->colorized) - return R_GetTranslationColormap(TC_RAINBOW, vis->color, GTC_CACHE); - else if (vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD - && (vis->mobj->player->charflags & SF_DASHMODE) + if (mobj->colorized) + return R_GetTranslationColormap(TC_RAINBOW, color, GTC_CACHE); + else if (mobj->player && mobj->player->dashmode >= DASHMODE_THRESHOLD + && (mobj->player->charflags & SF_DASHMODE) && ((leveltime/2) & 1)) { - if (vis->mobj->player->charflags & SF_MACHINE) + if (mobj->player->charflags & SF_MACHINE) return R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); else - return R_GetTranslationColormap(TC_RAINBOW, vis->color, GTC_CACHE); + return R_GetTranslationColormap(TC_RAINBOW, color, GTC_CACHE); } - else if (vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player! + else if (mobj->skin && mobj->sprite == SPR_PLAY) // This thing is a player! { - size_t skinnum = (skin_t*)vis->mobj->skin-skins; - return R_GetTranslationColormap((INT32)skinnum, vis->color, GTC_CACHE); + size_t skinnum = (skin_t*)mobj->skin-skins; + return R_GetTranslationColormap((INT32)skinnum, color, GTC_CACHE); } else // Use the defaults - return R_GetTranslationColormap(TC_DEFAULT, vis->color, GTC_CACHE); + return R_GetTranslationColormap(TC_DEFAULT, color, GTC_CACHE); } - else if (vis->mobj->sprite == SPR_PLAY) // Looks like a player, but doesn't have a color? Get rid of green sonic syndrome. + else if (mobj->sprite == SPR_PLAY) // Looks like a player, but doesn't have a color? Get rid of green sonic syndrome. return R_GetTranslationColormap(TC_DEFAULT, SKINCOLOR_BLUE, GTC_CACHE); return NULL; @@ -853,7 +853,7 @@ static void R_DrawVisSprite(vissprite_t *vis) colfunc = colfuncs[BASEDRAWFUNC]; // hack: this isn't resetting properly somewhere. dc_colormap = vis->colormap; - dc_translation = R_GetSpriteTranslation(vis); + dc_translation = R_GetTranslationForThing(vis->mobj, vis->color, vis->translation); if (R_ThingIsFlashing(vis->mobj)) // Bosses "flash" colfunc = colfuncs[COLDRAWFUNC_TRANS]; // translate certain pixels to white diff --git a/src/r_things.h b/src/r_things.h index 74c3fbcd4..240078559 100644 --- a/src/r_things.h +++ b/src/r_things.h @@ -90,6 +90,8 @@ boolean R_ThingIsFullDark (mobj_t *thing); boolean R_ThingIsFlashing (mobj_t *thing); +UINT8 *R_GetTranslationForThing(mobj_t *mobj, skincolornum_t color, UINT16 translation); + // -------------- // MASKED DRAWING // -------------- @@ -229,8 +231,6 @@ void R_ClipSprites(drawseg_t* dsstart, portal_t* portal); void R_DrawThingBoundingBox(vissprite_t *spr); -UINT8 *R_GetSpriteTranslation(vissprite_t *vis); - // ---------- // DRAW NODES // ----------