From 6e6b2b704a5ba8dd2ac01bbf923801e7cac252d3 Mon Sep 17 00:00:00 2001 From: James R Date: Fri, 2 Feb 2024 05:14:12 -0800 Subject: [PATCH 1/2] Fix "Save replay" text not appearing at end of map - Remove V_HUDTRANS (Tally makes it fully transparent) - Embed button codes instead of drawing them separately (fixes minor alignment issues) - Fade in over 1 second (visual flair) --- src/st_stuff.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/st_stuff.c b/src/st_stuff.c index 8e2505ef5..00c8773bd 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -53,6 +53,7 @@ #include "music.h" #include "i_sound.h" #include "k_dialogue.h" +#include "m_easing.h" UINT16 objectsdrawn = 0; @@ -1611,28 +1612,23 @@ void ST_Drawer(void) // Replay manual-save stuff if (demo.recording && multiplayer && demo.savebutton && demo.savebutton + 3*TICRATE < leveltime) { + tic_t fadeLength = TICRATE; + tic_t t = leveltime - (demo.savebutton + 3*TICRATE); + INT32 flags = V_SNAPTOTOP | V_SNAPTORIGHT | + (Easing_Linear(min(t, fadeLength) * FRACUNIT / fadeLength, 9, 0) << V_ALPHASHIFT); + switch (demo.savemode) { case DSM_NOTSAVING: - { - INT32 buttonx = BASEVIDWIDTH; - INT32 buttony = 2; + V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, flags|V_YELLOWMAP, "\xAB" "or " "\xAE" "Save replay"); + break; - K_drawButtonAnim(buttonx - 76, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT, kp_button_b[1], leveltime); - V_DrawRightAlignedThinString(buttonx - 55, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "or"); - K_drawButtonAnim(buttonx - 55, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT, kp_button_x[1], leveltime); - V_DrawRightAlignedThinString(buttonx - 2, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Save replay"); - break; - } case DSM_WILLAUTOSAVE: - { - V_DrawRightAlignedThinString(BASEVIDWIDTH - 55, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Replay will be saved."); - K_drawButtonAnim(BASEVIDWIDTH - 56, 0, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT, kp_button_b[1], leveltime); - V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Change title"); + V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, flags|V_YELLOWMAP, "Replay will be saved. \xAB" "Change title"); break; - } + case DSM_WILLSAVE: - V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Replay will be saved."); + V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, flags|V_YELLOWMAP, "Replay will be saved."); break; case DSM_TITLEENTRY: From e35bf8339ff17ce325976b0f37ee4e20bf9c2bbe Mon Sep 17 00:00:00 2001 From: James R Date: Fri, 2 Feb 2024 05:16:51 -0800 Subject: [PATCH 2/2] Let Save replay text appear when anyone in the party finishes Instead of only when local P1 finishes --- src/p_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index a903bf7f1..30227bc46 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1379,7 +1379,7 @@ void P_DoPlayerExit(player_t *player, pflags_t flags) } } - if (player == &players[consoleplayer]) + if (!demo.savebutton && P_IsLocalPlayer(player)) demo.savebutton = leveltime; } }