Merge branch 'splitscreen-hud-fixes' into 'master'

Fixes for splitscreen: "Save  Replay" button and input display vs 4P tally

Closes #1208

See merge request KartKrew/Kart!2168
This commit is contained in:
Oni 2024-03-27 22:43:56 +00:00
commit 91b2365d86
2 changed files with 32 additions and 3 deletions

View file

@ -5248,6 +5248,24 @@ static void K_drawInput(void)
char mode = ((stplyr->pflags & PF_ANALOGSTICK) ? '4' : '2') + (r_splitscreen > 1);
bool local = !demo.playback && P_IsMachineLocalPlayer(stplyr);
fixed_t slide = K_GetDialogueSlide(FRACUNIT);
INT32 tallySlide = []
{
if (r_splitscreen <= 1)
{
return 0;
}
if (!stplyr->tally.active)
{
return 0;
}
constexpr INT32 kSlideDown = 22;
if (stplyr->tally.state == TALLY_ST_GOTTHRU_SLIDEIN ||
stplyr->tally.state == TALLY_ST_GAMEOVER_SLIDEIN)
{
return Easing_OutQuad(std::min<fixed_t>(stplyr->tally.transition * 2, FRACUNIT), 0, kSlideDown);
}
return kSlideDown;
}();
if (slide)
flags &= ~(V_SNAPTORIGHT); // don't draw underneath the dialogue box in non-green resolutions
@ -5264,7 +5282,7 @@ static void K_drawInput(void)
K_DrawInputDisplay(
def[k][0] - FixedToFloat(34 * slide),
def[k][1] - FixedToFloat(51 * slide),
def[k][1] - FixedToFloat(51 * slide) + tallySlide,
flags,
mode,
(local ? G_LocalSplitscreenPartyPosition : G_PartyPosition)(stplyr - players),

View file

@ -1328,8 +1328,19 @@ void P_DoPlayerExit(player_t *player, pflags_t flags)
}
}
if (!demo.savebutton && P_IsMachineLocalPlayer(player))
demo.savebutton = leveltime;
if (!demo.savebutton)
{
UINT8 outstanding = splitscreen + 1;
for (UINT8 i = 0; i <= splitscreen; ++i)
{
if (players[g_localplayers[i]].exiting)
outstanding--;
}
// Once the entire local party finishes (not
// online party), show the "Save Replay" button.
if (!outstanding)
demo.savebutton = leveltime;
}
}
}