From b60df7d4860616bc5abf4e749aaddc8817a36052 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 10 Mar 2024 20:55:15 -0700 Subject: [PATCH] WIP: Skip Tally --- src/k_tally.cpp | 16 +++++++++++++++- src/k_tally.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/k_tally.cpp b/src/k_tally.cpp index 53a0fbb7f..273b91dc2 100644 --- a/src/k_tally.cpp +++ b/src/k_tally.cpp @@ -35,6 +35,7 @@ #include "st_stuff.h" #include "r_fps.h" #include "g_party.h" +#include "g_input.h" boolean level_tally_t::UseBonuses(void) { @@ -311,6 +312,7 @@ void level_tally_t::Init(player_t *player) laps = totalLaps = 0; points = pointLimit = 0; powerStones = 0; + canFastForward = false; rank = GRADE_INVALID; @@ -1392,7 +1394,19 @@ void K_InitPlayerTally(player_t *player) void K_TickPlayerTally(player_t *player) { - player->tally.Tick(); + boolean fastForwardInput = G_PlayerInputDown(G_LocalSplitscreenPartyPosition(player - players), gc_a, 0); + + if (fastForwardInput && player->tally.state == TALLY_ST_DONE) + player->tally.delay = std::min(player->tally.delay, TICRATE); + + do + player->tally.Tick(); + while (player->tally.state != TALLY_ST_DONE && (fastForwardInput && player->tally.canFastForward)); + + if (!fastForwardInput) + player->tally.canFastForward = true; + else + player->tally.canFastForward = false; } void K_DrawPlayerTally(void) diff --git a/src/k_tally.h b/src/k_tally.h index 9f7c3d866..407f2b5f8 100644 --- a/src/k_tally.h +++ b/src/k_tally.h @@ -96,6 +96,7 @@ struct level_tally_t UINT8 xtraBlink; boolean showGrade; boolean done; + boolean canFastForward; #ifdef __cplusplus boolean UseBonuses(void);