Add FAULT graphic, remove momentum when faulting

This commit is contained in:
Sally Coolatta 2020-07-24 16:47:18 -04:00
parent 5c1a33f95c
commit 660596970b
3 changed files with 47 additions and 11 deletions

View file

@ -376,6 +376,9 @@ typedef enum
khud_lapanimation, // Used to show the lap start wing logo animation
khud_laphand, // Lap hand gfx to use; 0 = none, 1 = :ok_hand:, 2 = :thumbs_up:, 3 = :thumps_down:
// Start
khud_fault, // Set when faulting during the starting countdown
// Camera
khud_boostcam, // Camera push forward on boost
khud_destboostcam, // Ditto

View file

@ -7856,6 +7856,7 @@ static patch_t *kp_splitkarmabomb;
static patch_t *kp_timeoutsticker;
static patch_t *kp_startcountdown[16];
static patch_t *kp_racefault[6];
static patch_t *kp_racefinish[6];
static patch_t *kp_positionnum[NUMPOSNUMS][NUMPOSFRAMES];
@ -7990,6 +7991,16 @@ void K_LoadKartHUDGraphics(void)
kp_startcountdown[14] = W_CachePatchName("K_SMC1B", PU_HUDGFX);
kp_startcountdown[15] = W_CachePatchName("K_SMCGOB", PU_HUDGFX);
// Fault
kp_racefault[0] = W_CachePatchName("K_FAULTA", PU_HUDGFX);
kp_racefault[1] = W_CachePatchName("K_FAULTB", PU_HUDGFX);
// Splitscreen
kp_racefault[2] = W_CachePatchName("K_SMFLTA", PU_HUDGFX);
kp_racefault[3] = W_CachePatchName("K_SMFLTB", PU_HUDGFX);
// 2P splitscreen
kp_racefault[4] = W_CachePatchName("K_2PFLTA", PU_HUDGFX);
kp_racefault[5] = W_CachePatchName("K_2PFLTB", PU_HUDGFX);
// Finish
kp_racefinish[0] = W_CachePatchName("K_FINA", PU_HUDGFX);
kp_racefinish[1] = W_CachePatchName("K_FINB", PU_HUDGFX);
@ -10551,18 +10562,38 @@ static void K_drawKartStartCountdown(void)
{
INT32 pnum = 0, splitflags = K_calcSplitFlags(0); // 3
if (leveltime >= starttime-(2*TICRATE)) // 2
pnum++;
if (leveltime >= starttime-TICRATE) // 1
pnum++;
if (leveltime >= starttime) // GO!
pnum++;
if ((leveltime % (2*5)) / 5) // blink
pnum += 4;
if (r_splitscreen) // splitscreen
pnum += 8;
if (stplyr->karthud[khud_fault] != 0)
{
if (r_splitscreen > 1) // 3/4p, stationary FIN
{
pnum += 2;
}
else if (r_splitscreen == 1) // wide splitscreen
{
pnum += 4;
}
V_DrawScaledPatch(STCD_X - (SHORT(kp_startcountdown[pnum]->width)/2), STCD_Y - (SHORT(kp_startcountdown[pnum]->height)/2), splitflags, kp_startcountdown[pnum]);
if ((leveltime % (2*5)) / 5) // blink
pnum += 1;
V_DrawScaledPatch(STCD_X - (SHORT(kp_racefault[pnum]->width)/2), STCD_Y - (SHORT(kp_racefault[pnum]->height)/2), splitflags, kp_racefault[pnum]);
}
else
{
if (leveltime >= starttime-(2*TICRATE)) // 2
pnum++;
if (leveltime >= starttime-TICRATE) // 1
pnum++;
if (leveltime >= starttime) // GO!
pnum++;
if ((leveltime % (2*5)) / 5) // blink
pnum += 4;
if (r_splitscreen) // splitscreen
pnum += 8;
V_DrawScaledPatch(STCD_X - (SHORT(kp_startcountdown[pnum]->width)/2), STCD_Y - (SHORT(kp_startcountdown[pnum]->height)/2), splitflags, kp_startcountdown[pnum]);
}
}
static void K_drawKartFinish(void)

View file

@ -2191,6 +2191,8 @@ static void K_HandleLapIncrement(player_t *player)
player->powers[pw_nocontrol] = (starttime - leveltime) + 50;
player->pflags |= PF_SKIDDOWN; // cheeky pflag reuse
S_StartSound(player->mo, sfx_s3k83);
player->karthud[khud_fault] = 1;
player->mo->momx = player->mo->momy = 0;
}
}
}