mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-15 10:06:24 +00:00
Fix EXP crystal HUD
This commit is contained in:
parent
dfb34ad722
commit
52bb3a21f6
5 changed files with 23 additions and 13 deletions
|
|
@ -3315,12 +3315,22 @@ static void K_drawKartEmeralds(void)
|
|||
}
|
||||
}
|
||||
|
||||
INT32 K_GetTransFlagFromFixed(fixed_t value)
|
||||
INT32 K_GetTransFlagFromFixed(fixed_t value, boolean midrace)
|
||||
{
|
||||
value = std::clamp(value, FRACUNIT/2, FRACUNIT*3/2);
|
||||
fixed_t base = midrace ? GRADINGFACTORSOFTCAP : FRACUNIT;
|
||||
|
||||
// Calculate distance from 1.0
|
||||
fixed_t distance = abs(FRACUNIT - value);
|
||||
value = std::clamp(value, base - FRACUNIT/2, base + FRACUNIT/2);
|
||||
|
||||
// Calculate distance from "base""
|
||||
fixed_t distance = abs(base - value);
|
||||
|
||||
if (midrace)
|
||||
{
|
||||
if (value > base)
|
||||
distance = FixedMul(distance, GRADINGFACTORCAPSTRENGTH);
|
||||
}
|
||||
|
||||
distance = std::clamp(distance, 0, FRACUNIT/2);
|
||||
|
||||
// Map the distance to 0-10 range (10 = closest to 1.0, 0 = farthest from 1.0)
|
||||
INT32 transLevel = 10 - ((distance * 10) / (FRACUNIT/2));
|
||||
|
|
@ -4220,7 +4230,7 @@ static boolean K_drawKartLaps(void)
|
|||
// WHAT IS THIS?
|
||||
// WHAT ARE YOU FUCKING TALKING ABOUT?
|
||||
V_DrawMappedPatch(fr, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_exp[1], R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_MUSTARD, GTC_CACHE));
|
||||
auto transflag = K_GetTransFlagFromFixed(K_EffectiveGradingFactor(stplyr));
|
||||
auto transflag = K_GetTransFlagFromFixed(K_EffectiveGradingFactor(stplyr), true);
|
||||
skincolornum_t overlaycolor = K_EffectiveGradingFactor(stplyr) < FRACUNIT ? SKINCOLOR_RUBY : SKINCOLOR_ULTRAMARINE ;
|
||||
auto colormap = R_GetTranslationColormap(TC_RAINBOW, overlaycolor, GTC_CACHE);
|
||||
V_DrawMappedPatch(fr, fy, transflag|V_SLIDEIN|splitflags, kp_exp[1], colormap);
|
||||
|
|
@ -4243,7 +4253,7 @@ static boolean K_drawKartLaps(void)
|
|||
|
||||
V_DrawMappedPatch(LAPS_X+bump, LAPS_Y, V_HUDTRANS|V_SLIDEIN|splitflags, kp_exp[0], R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_MUSTARD, GTC_CACHE));
|
||||
|
||||
auto transflag = K_GetTransFlagFromFixed(K_EffectiveGradingFactor(stplyr));
|
||||
auto transflag = K_GetTransFlagFromFixed(K_EffectiveGradingFactor(stplyr), true);
|
||||
skincolornum_t overlaycolor = K_EffectiveGradingFactor(stplyr) < FRACUNIT ? SKINCOLOR_RUBY : SKINCOLOR_ULTRAMARINE ;
|
||||
auto colormap = R_GetTranslationColormap(TC_RAINBOW, overlaycolor, GTC_CACHE);
|
||||
V_DrawMappedPatch(LAPS_X+bump, LAPS_Y, transflag|V_SLIDEIN|splitflags, kp_exp[0], colormap);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ void K_drawButton(fixed_t x, fixed_t y, INT32 flags, patch_t *button[2], boolean
|
|||
void K_drawButtonAnim(INT32 x, INT32 y, INT32 flags, patch_t *button[2], tic_t animtic);
|
||||
void K_DrawSticker(INT32 x, INT32 y, INT32 width, INT32 flags, boolean isSmall);
|
||||
void K_DrawMarginSticker(INT32 x, INT32 y, INT32 width, INT32 flags, boolean isSmall, boolean leftedge);
|
||||
INT32 K_GetTransFlagFromFixed(fixed_t value);
|
||||
INT32 K_GetTransFlagFromFixed(fixed_t value, boolean midrace);
|
||||
|
||||
void K_DrawKartPositionNumXY(
|
||||
UINT8 num,
|
||||
|
|
|
|||
|
|
@ -153,11 +153,9 @@ fixed_t K_EffectiveGradingFactor(const player_t *player)
|
|||
return min;
|
||||
|
||||
fixed_t gf = player->gradingfactor;
|
||||
fixed_t SOFT_CAP = FRACUNIT;
|
||||
fixed_t SOFT_CAP_FACTOR = 3*FRACUNIT;
|
||||
|
||||
if (gf > SOFT_CAP)
|
||||
gf = SOFT_CAP + FixedDiv(gf - SOFT_CAP, SOFT_CAP_FACTOR);
|
||||
if (gf > GRADINGFACTORSOFTCAP)
|
||||
gf = GRADINGFACTORSOFTCAP + FixedDiv(gf - GRADINGFACTORSOFTCAP, GRADINGFACTORCAPSTRENGTH);
|
||||
|
||||
return max(min, gf);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,6 +135,8 @@ player_t *K_DuelOpponent(player_t *player);
|
|||
fixed_t K_EffectiveGradingFactor(const player_t *player);
|
||||
#define MINGRADINGFACTOR (FRACUNIT/2)
|
||||
#define MINFRANTICFACTOR (8*FRACUNIT/10)
|
||||
#define GRADINGFACTORSOFTCAP (FRACUNIT)
|
||||
#define GRADINGFACTORCAPSTRENGTH (3*FRACUNIT)
|
||||
|
||||
void K_TimerReset(void);
|
||||
void K_TimerInit(void);
|
||||
|
|
|
|||
|
|
@ -745,7 +745,7 @@ void podiumData_s::Draw(void)
|
|||
factor = FRACUNIT - FixedDiv(factor, bluemaxoffset);
|
||||
}
|
||||
|
||||
auto transflag = K_GetTransFlagFromFixed(factor);
|
||||
auto transflag = K_GetTransFlagFromFixed(factor, false);
|
||||
drawer_gametype
|
||||
.xy(0, 1)
|
||||
.colorize(static_cast<skincolornum_t>(overlaycolor))
|
||||
|
|
@ -915,7 +915,7 @@ void podiumData_s::Draw(void)
|
|||
factor = FRACUNIT - FixedDiv(factor, bluemaxoffset);
|
||||
}
|
||||
|
||||
auto transflag = K_GetTransFlagFromFixed(factor);
|
||||
auto transflag = K_GetTransFlagFromFixed(factor, false);
|
||||
drawer_totals_right
|
||||
.colorize(static_cast<skincolornum_t>(overlaycolor))
|
||||
.flags(transflag)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue