mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Fade out characters you haven't unlocked yet in Time Attack demos exclusively
- Objects - Minimap All other HUD items need to be done manually, but the lives icon doesn't show up in time attack so this minimum should be fine
This commit is contained in:
parent
96a6fe85f1
commit
c299831737
5 changed files with 55 additions and 31 deletions
|
|
@ -88,6 +88,7 @@ patch_t *kp_facenum[MAXPLAYERS+1];
|
|||
static patch_t *kp_facehighlight[8];
|
||||
|
||||
static patch_t *kp_nocontestminimap;
|
||||
static patch_t *kp_unknownminimap;
|
||||
static patch_t *kp_spbminimap;
|
||||
static patch_t *kp_wouldyoustillcatchmeifiwereaworm;
|
||||
static patch_t *kp_catcherminimap;
|
||||
|
|
@ -386,7 +387,7 @@ void K_LoadKartHUDGraphics(void)
|
|||
|
||||
// Special minimap icons
|
||||
HU_UpdatePatch(&kp_nocontestminimap, "MINIDEAD");
|
||||
|
||||
HU_UpdatePatch(&kp_unknownminimap, "HUHMAP");
|
||||
HU_UpdatePatch(&kp_spbminimap, "SPBMMAP");
|
||||
|
||||
HU_UpdatePatch(&kp_wouldyoustillcatchmeifiwereaworm, "MINIPROG");
|
||||
|
|
@ -4401,6 +4402,9 @@ static void K_drawKartMinimap(void)
|
|||
skin = ((skin_t*)g->mo->skin)-skins;
|
||||
else
|
||||
skin = 0;
|
||||
|
||||
workingPic = R_CanShowSkinInDemo(skin) ? faceprefix[skin][FACE_MINIMAP] : kp_unknownminimap;
|
||||
|
||||
if (g->mo->color)
|
||||
{
|
||||
if (g->mo->colorized)
|
||||
|
|
@ -4414,7 +4418,7 @@ static void K_drawKartMinimap(void)
|
|||
interpx = R_InterpolateFixed(g->mo->old_x, g->mo->x);
|
||||
interpy = R_InterpolateFixed(g->mo->old_y, g->mo->y);
|
||||
|
||||
K_drawKartMinimapIcon(interpx, interpy, x, y, splitflags, faceprefix[skin][FACE_MINIMAP], colormap);
|
||||
K_drawKartMinimapIcon(interpx, interpy, x, y, splitflags, workingPic, colormap);
|
||||
g = g->next;
|
||||
}
|
||||
}
|
||||
|
|
@ -4470,7 +4474,7 @@ static void K_drawKartMinimap(void)
|
|||
{
|
||||
skin = ((skin_t*)mobj->skin)-skins;
|
||||
|
||||
workingPic = faceprefix[skin][FACE_MINIMAP];
|
||||
workingPic = R_CanShowSkinInDemo(skin) ? faceprefix[skin][FACE_MINIMAP] : kp_unknownminimap;
|
||||
|
||||
if (mobj->color)
|
||||
{
|
||||
|
|
@ -4666,7 +4670,7 @@ static void K_drawKartMinimap(void)
|
|||
{
|
||||
skin = ((skin_t*)mobj->skin)-skins;
|
||||
|
||||
workingPic = faceprefix[skin][FACE_MINIMAP];
|
||||
workingPic = R_CanShowSkinInDemo(skin) ? faceprefix[skin][FACE_MINIMAP] : kp_unknownminimap;
|
||||
|
||||
if (mobj->color)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ UINT8 *R_GetSkinAvailabilities(boolean demolock, INT32 botforcecharacter)
|
|||
boolean R_SkinUsable(INT32 playernum, INT32 skinnum, boolean demoskins)
|
||||
{
|
||||
boolean needsunlocked = false;
|
||||
boolean useplayerstruct = ((Playing() || demo.playback) && playernum != -1);
|
||||
boolean useplayerstruct = ((Playing() || demo.playback) && playernum >= 0);
|
||||
UINT16 i;
|
||||
INT32 skinid;
|
||||
|
||||
|
|
@ -299,6 +299,13 @@ boolean R_SkinUsable(INT32 playernum, INT32 skinnum, boolean demoskins)
|
|||
return (boolean)(gamedata->unlocked[i]);
|
||||
}
|
||||
|
||||
boolean R_CanShowSkinInDemo(INT32 skinnum)
|
||||
{
|
||||
if (modeattacking == ATTACKING_NONE && !(demo.playback && demo.attract))
|
||||
return true;
|
||||
return R_SkinUsable(-2, skinnum, false);
|
||||
}
|
||||
|
||||
// Returns a random unlocked skin ID.
|
||||
UINT32 R_GetLocalRandomSkin(void)
|
||||
{
|
||||
|
|
@ -307,7 +314,7 @@ UINT32 R_GetLocalRandomSkin(void)
|
|||
|
||||
for (i = 0; i < numskins; i++)
|
||||
{
|
||||
if (!R_SkinUsable(-1, i, false))
|
||||
if (!R_SkinUsable(-2, i, false))
|
||||
continue;
|
||||
grabskins[usableskins++] = i;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ INT32 R_SkinAvailable(const char *name);
|
|||
INT32 R_SkinAvailableEx(const char *name, boolean demoskins);
|
||||
boolean R_SkinUsable(INT32 playernum, INT32 skinnum, boolean demoskins);
|
||||
UINT8 *R_GetSkinAvailabilities(boolean demolock, INT32 botforcecharacter);
|
||||
boolean R_CanShowSkinInDemo(INT32 skinnum);
|
||||
|
||||
// Setting
|
||||
void SetPlayerSkin(INT32 playernum,const char *skinname);
|
||||
|
|
|
|||
|
|
@ -44,6 +44,13 @@ INT32 R_ThingLightLevel(mobj_t* thing)
|
|||
{
|
||||
lightlevel -= 255;
|
||||
}
|
||||
|
||||
if (!R_CanShowSkinInDemo((skin_t*)thing->skin-skins)
|
||||
&& !thing->colorized
|
||||
&& !thing->hitlag)
|
||||
{
|
||||
lightlevel -= 128;
|
||||
}
|
||||
}
|
||||
|
||||
return lightlevel;
|
||||
|
|
|
|||
|
|
@ -835,37 +835,42 @@ boolean R_ThingIsFlashing(mobj_t *thing)
|
|||
|
||||
UINT8 *R_GetSpriteTranslation(vissprite_t *vis)
|
||||
{
|
||||
if (!(vis->cut & SC_PRECIP) &&
|
||||
R_ThingIsFlashing(vis->mobj))
|
||||
if (vis->cut & SC_PRECIP)
|
||||
{
|
||||
return R_GetTranslationColormap(TC_HITLAG, static_cast<skincolornum_t>(0), GTC_CACHE);
|
||||
// Simplified func, less safe properties to check
|
||||
if (vis->mobj->color)
|
||||
R_GetTranslationColormap(TC_DEFAULT, static_cast<skincolornum_t>(vis->mobj->color), GTC_CACHE);
|
||||
return NULL;
|
||||
}
|
||||
/*
|
||||
else if (R_SpriteIsFlashing(vis)) // Bosses "flash"
|
||||
|
||||
size_t skinnum = TC_DEFAULT;
|
||||
|
||||
if (vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player!
|
||||
{
|
||||
if (vis->mobj->type == MT_CYBRAKDEMON || vis->mobj->colorized)
|
||||
return R_GetTranslationColormap(TC_ALLWHITE, 0, GTC_CACHE);
|
||||
else if (vis->mobj->type == MT_METALSONIC_BATTLE)
|
||||
return R_GetTranslationColormap(TC_METALSONIC, 0, GTC_CACHE);
|
||||
else
|
||||
return R_GetTranslationColormap(TC_BOSS, 0, GTC_CACHE);
|
||||
}
|
||||
*/
|
||||
else if (vis->mobj->color)
|
||||
skinnum = (skin_t*)vis->mobj->skin-skins;
|
||||
|
||||
// Hide not-yet-unlocked characters in replays from other people
|
||||
if (!R_CanShowSkinInDemo(skinnum))
|
||||
{
|
||||
// New colormap stuff for skins Tails 06-07-2002
|
||||
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
|
||||
return R_GetTranslationColormap(TC_RAINBOW, static_cast<skincolornum_t>(vis->mobj->color), GTC_CACHE);
|
||||
else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player!
|
||||
skinnum = TC_BLINK;
|
||||
}
|
||||
}
|
||||
|
||||
if (R_ThingIsFlashing(vis->mobj))
|
||||
{
|
||||
size_t skinnum = (skin_t*)vis->mobj->skin-skins;
|
||||
return R_GetTranslationColormap((INT32)skinnum, static_cast<skincolornum_t>(vis->mobj->color), GTC_CACHE);
|
||||
if (skinnum != (size_t)TC_BLINK)
|
||||
skinnum = TC_HITLAG;
|
||||
|
||||
return R_GetTranslationColormap(skinnum, static_cast<skincolornum_t>(0), GTC_CACHE);
|
||||
}
|
||||
else // Use the defaults
|
||||
return R_GetTranslationColormap(TC_DEFAULT, static_cast<skincolornum_t>(vis->mobj->color), GTC_CACHE);
|
||||
|
||||
if (vis->mobj->color)
|
||||
{
|
||||
if (skinnum != (size_t)TC_BLINK && vis->mobj->colorized)
|
||||
skinnum = TC_RAINBOW;
|
||||
|
||||
return R_GetTranslationColormap(skinnum, static_cast<skincolornum_t>(vis->mobj->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.
|
||||
return R_GetTranslationColormap(TC_DEFAULT, SKINCOLOR_BLUE, GTC_CACHE);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue