Port fancy roulette and interp addtions from saturn
This commit is contained in:
parent
f72475b557
commit
0a5038c189
6 changed files with 63 additions and 10 deletions
|
|
@ -1403,7 +1403,7 @@ void F_TitleScreenDrawer(void)
|
|||
if (finalecount >= 20)
|
||||
V_DrawSmallScaledPatch(84, 87, 0, ttkart);
|
||||
else if (finalecount >= 10)
|
||||
V_DrawSciencePatch((84<<FRACBITS) - 18*(((20 - finalecount)<<FRACBITS) - rendertimefrac), 87<<FRACBITS, 0, ttkart, FRACUNIT/2);
|
||||
V_DrawSciencePatch((84<<FRACBITS) - 18*(((20 - finalecount)<<FRACBITS) - R_GetMenuUncap()), 87<<FRACBITS, 0, ttkart, FRACUNIT/2);
|
||||
}
|
||||
else if (finalecount < 52)
|
||||
{
|
||||
|
|
@ -1419,8 +1419,8 @@ void F_TitleScreenDrawer(void)
|
|||
|
||||
F_TitleBGScroll(5);
|
||||
|
||||
V_DrawSciencePatch(0, -40*FixedDiv(((finalecount % 70)<<FRACBITS) + rendertimefrac, 70<<FRACBITS), V_SNAPTOTOP|V_SNAPTOLEFT, ttcheckers, FRACUNIT);
|
||||
V_DrawSciencePatch(280<<FRACBITS, -(40<<FRACBITS) + 40*FixedDiv(((finalecount % 70)<<FRACBITS) + rendertimefrac, 70<<FRACBITS), V_SNAPTOTOP|V_SNAPTORIGHT, ttcheckers, FRACUNIT);
|
||||
V_DrawSciencePatch(0, -40*FixedDiv(((finalecount % 70)<<FRACBITS) + R_GetMenuUncap(), 70<<FRACBITS), V_SNAPTOTOP|V_SNAPTOLEFT, ttcheckers, FRACUNIT);
|
||||
V_DrawSciencePatch(280<<FRACBITS, -(40<<FRACBITS) + 40*FixedDiv(((finalecount % 70)<<FRACBITS) + R_GetMenuUncap(), 70<<FRACBITS), V_SNAPTOTOP|V_SNAPTORIGHT, ttcheckers, FRACUNIT);
|
||||
|
||||
if (transval)
|
||||
V_DrawFadeScreen(0, 10 - transval);
|
||||
|
|
|
|||
41
src/k_hud.c
41
src/k_hud.c
|
|
@ -89,6 +89,7 @@ consvar_t cv_colorizedhud = CVAR_INIT ("colorizedhud", "On", CV_SAVE, CV_OnOff,
|
|||
consvar_t cv_colorizeditembox = CVAR_INIT ("colorizeditembox", "On", CV_SAVE, CV_OnOff, NULL);
|
||||
consvar_t cv_darkitembox = CVAR_INIT ("darkitembox", "On", CV_SAVE, CV_OnOff, NULL);
|
||||
consvar_t cv_showfinishedplayers = CVAR_INIT ("showfinishedplayers", "On", CV_SAVE, CV_OnOff, NULL);
|
||||
consvar_t cv_fancyroulette = CVAR_INIT ("fancyroulette", "Off", CV_SAVE, CV_OnOff, NULL);
|
||||
|
||||
static CV_PossibleValue_t HudColor_cons_t[MAXSKINCOLORS+1];
|
||||
consvar_t cv_colorizedhudcolor = CVAR_INIT ("colorizedhudcolor", "Skin Color", CV_SAVE, HudColor_cons_t, NULL);
|
||||
|
|
@ -240,6 +241,7 @@ void K_RegisterKartHUDStuff(void)
|
|||
CV_RegisterVar(&cv_colorizeditembox);
|
||||
CV_RegisterVar(&cv_darkitembox);
|
||||
CV_RegisterVar(&cv_showfinishedplayers);
|
||||
CV_RegisterVar(&cv_fancyroulette);
|
||||
}
|
||||
|
||||
void K_LoadKartHUDGraphics(void)
|
||||
|
|
@ -1350,6 +1352,24 @@ static void K_drawKartItem(void)
|
|||
|
||||
//V_SetClipRect((fx + 10) << FRACBITS, (fy + 10) << FRACBITS, 30 << FRACBITS, 30 << FRACBITS, V_HUDTRANS|V_SLIDEIN|fflags);
|
||||
|
||||
fixed_t rfy = fy<<FRACBITS;
|
||||
INT32 fancyflags = V_HUDTRANS|fflags;
|
||||
|
||||
if (cv_fancyroulette.value && stplyr->itemroulette && !stplyr->deadtimer)
|
||||
{
|
||||
fixed_t frac = R_GetHudUncap();
|
||||
UINT8 fancystep = (offset ? 6 : 10);
|
||||
fixed_t fancyoffset = (stplyr->itemroulette % 3)-1;
|
||||
|
||||
if (fancyoffset != 0)
|
||||
{
|
||||
fancyflags &= ~V_HUDTRANS;
|
||||
fancyflags |=V_HUDTRANSHALF;
|
||||
}
|
||||
|
||||
rfy += (fancystep * fancyoffset * FRACUNIT) + FixedMul(fancystep*FRACUNIT, frac) - fancystep/2*FRACUNIT;
|
||||
}
|
||||
|
||||
// Then, the numbers:
|
||||
if (stplyr->itemamount >= numberdisplaymin && !stplyr->itemroulette)
|
||||
{
|
||||
|
|
@ -1368,7 +1388,7 @@ static void K_drawKartItem(void)
|
|||
}
|
||||
}
|
||||
else
|
||||
V_DrawFixedPatch(fx<<FRACBITS, fy<<FRACBITS, FRACUNIT, V_HUDTRANS|fflags, localpatch, colmap);
|
||||
V_DrawFixedPatch(fx<<FRACBITS, rfy, FRACUNIT, fancyflags, localpatch, colmap);
|
||||
|
||||
//V_ClearClipRect();
|
||||
|
||||
|
|
@ -3911,8 +3931,21 @@ static void K_drawKartFinish(void)
|
|||
|
||||
static void K_drawBattleFullscreen(void)
|
||||
{
|
||||
|
||||
INT32 cardanim = stplyr->karthud[khud_cardanimation] << FRACBITS;
|
||||
|
||||
// fill in the fractional bits
|
||||
if (cardanim && cardanim != 164*FRACUNIT)
|
||||
{
|
||||
INT32 frac = R_GetHudUncap() * ((164 - stplyr->karthud[khud_cardanimation])/8 + 1);
|
||||
if (stplyr->exiting)
|
||||
cardanim += frac;
|
||||
else
|
||||
cardanim += stplyr->karmadelay < 6*TICRATE ? -frac : frac;
|
||||
}
|
||||
|
||||
INT32 x = BASEVIDWIDTH/2;
|
||||
INT32 y = -64+(stplyr->karthud[khud_cardanimation]); // card animation goes from 0 to 164, 164 is the middle of the screen
|
||||
INT32 y = (-64*FRACUNIT) + cardanim; // card animation goes from 0 to 164, 164 is the middle of the screen the screen
|
||||
INT32 splitflags = V_SNAPTOTOP; // I don't feel like properly supporting non-green resolutions, so you can have a misuse of SNAPTO instead
|
||||
fixed_t scale = FRACUNIT;
|
||||
boolean drawcomebacktimer = true; // lazy hack because it's cleaner in the long run.
|
||||
|
|
@ -3924,11 +3957,11 @@ static void K_drawBattleFullscreen(void)
|
|||
{
|
||||
if ((splitscreen == 1 && stplyrnum == 1) || (splitscreen > 1 && stplyrnum & 2))
|
||||
{
|
||||
y = 232-(stplyr->karthud[khud_cardanimation]/2);
|
||||
y = 232-(cardanim/2);
|
||||
splitflags = V_SNAPTOBOTTOM;
|
||||
}
|
||||
else
|
||||
y = -32+(stplyr->karthud[khud_cardanimation]/2);
|
||||
y = -32+(cardanim/2);
|
||||
|
||||
if (r_splitscreen > 1)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -377,6 +377,16 @@ angle_t R_PointToAngle2(fixed_t pviewx, fixed_t pviewy, fixed_t x, fixed_t y)
|
|||
0;
|
||||
}
|
||||
|
||||
INT32 R_GetHudUncap(void)
|
||||
{
|
||||
return rendertimefrac & FRACMASK;
|
||||
}
|
||||
|
||||
INT32 R_GetMenuUncap(void)
|
||||
{
|
||||
return rendertimefrac_unpaused & FRACMASK;
|
||||
}
|
||||
|
||||
//
|
||||
// R_ScaleFromGlobalAngle
|
||||
// Returns the texture mapping scale for the current line (horizontal span)
|
||||
|
|
|
|||
|
|
@ -215,6 +215,11 @@ void R_RenderPlayerView(void);
|
|||
// add commands related to engine, at game startup
|
||||
void R_RegisterEngineStuff(void);
|
||||
|
||||
// return multiplier for HUD uncap
|
||||
INT32 R_GetHudUncap(void);
|
||||
// same as above but keeps interpolation during pause
|
||||
INT32 R_GetMenuUncap(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -667,10 +667,15 @@ void ST_drawTitleCard(void)
|
|||
if (timeinmap > 105)
|
||||
{
|
||||
INT32 count = (113 - (INT32)(timeinmap));
|
||||
|
||||
// uh... "fill in the bits" of sub, or something... no idea what I came up with
|
||||
// VERY janky, but doesn't require m_easing
|
||||
INT32 frac = (FixedMul(R_GetHudUncap(), FixedDiv(dupcalc, BASEVIDWIDTH)) >> (count + 4))/13; // these two magic numbers seem to do the trick
|
||||
|
||||
sub = dupcalc;
|
||||
while (count-- > 0)
|
||||
sub >>= 1;
|
||||
sub = -sub;
|
||||
sub = -sub - frac;
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -505,11 +505,11 @@ void Y_IntermissionDrawer(void)
|
|||
INT32 count = (intertic - sorttic);
|
||||
|
||||
if (count < 8)
|
||||
x -= ((count * vid.width) / (8 * vid.dupx));
|
||||
x -= ((((count<<FRACBITS) + R_GetHudUncap()) * vid.width)>>FRACBITS) / (8 * vid.dupx);
|
||||
else if (count == 8)
|
||||
goto skiptallydrawer;
|
||||
else if (count < 16)
|
||||
x += (((16 - count) * vid.width) / (8 * vid.dupx));
|
||||
x += (((((16 - count)<<FRACBITS) - R_GetHudUncap()) * vid.width)>>FRACBITS) / (8 * vid.dupx);
|
||||
}
|
||||
|
||||
if (intertype == int_race || intertype == int_battle || intertype == int_battletime)
|
||||
|
|
|
|||
Loading…
Reference in a new issue