From 681e95ca0c8db676d0c87ef4a762272e802bb9c6 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 25 Mar 2024 22:49:16 -0700 Subject: [PATCH 1/2] Splitscreen: do not show "Save Replay" button until all local party members finish - Local members, does not count online party members --- src/p_user.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index 7fe77b316..1326ba46a 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1333,8 +1333,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; + } } } From 69e8d735a190354d82d035bedd4b6848305d7c46 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 25 Mar 2024 22:50:32 -0700 Subject: [PATCH 2/2] Move input display out of the way of 4P tally --- src/k_hud.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/k_hud.cpp b/src/k_hud.cpp index bc4d9a8f0..41e30f78b 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -53,6 +53,7 @@ #include "g_input.h" #include "k_dialogue.h" #include "f_finale.h" +#include "m_easing.h" //{ Patch Definitions static patch_t *kp_nodraw; @@ -5247,11 +5248,29 @@ 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(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 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),