From 35c0b740da95b4fbf1713b38d2a553beef973c76 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 11 Mar 2024 06:56:02 -0700 Subject: [PATCH 1/2] Director: just focus on leader in Battle --- src/k_director.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/k_director.cpp b/src/k_director.cpp index b50d4a11b..764eac4a3 100644 --- a/src/k_director.cpp +++ b/src/k_director.cpp @@ -22,6 +22,11 @@ extern "C" consvar_t cv_devmode_screen; +static bool race_rules() +{ + return gametyperules & GTR_CIRCUIT; +} + #define SWITCHTIME TICRATE * 5 // cooldown between unforced switches #define BOREDOMTIME 3 * TICRATE / 2 // how long until players considered far apart? #define TRANSFERTIME TICRATE // how long to delay reaction shots? @@ -86,7 +91,9 @@ struct DirectorInfo } // if there's only one player left in the list, just switch to that player - if (playerstat[0].sorted != -1 && playerstat[1].sorted == -1) + if (playerstat[0].sorted != -1 && (playerstat[1].sorted == -1 || + // TODO: Battle; I just threw this together quick. Focus on leader. + !race_rules())) { change(playerstat[0].sorted, false); return; From 92261733f4822a0e83c6135588e17aa2aed081a1 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 11 Mar 2024 06:56:42 -0700 Subject: [PATCH 2/2] Replays: add Director toggle - Very basic, no feedback other than the viewpoint changing - Uses Shutterbug unlock graphic --- src/k_menu.h | 1 + src/menus/transient/pause-replay.c | 29 ++++++++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/k_menu.h b/src/k_menu.h index a9348442d..ff21a8ee2 100644 --- a/src/k_menu.h +++ b/src/k_menu.h @@ -547,6 +547,7 @@ typedef enum playback_view2, playback_view3, playback_view4, + playback_director, playback_freecam, playback_quit } playback_e; diff --git a/src/menus/transient/pause-replay.c b/src/menus/transient/pause-replay.c index 411643c46..cc95e6d83 100644 --- a/src/menus/transient/pause-replay.c +++ b/src/menus/transient/pause-replay.c @@ -10,9 +10,22 @@ #include "../../d_main.h" // D_StartTitle #include "../../k_credits.h" #include "../../g_demo.h" +#include "../../k_director.h" static void M_PlaybackTick(void); +// This is barebones, just toggle director on all screens. +static void M_PlaybackToggleDirector(INT32 choice) +{ + (void)choice; + + UINT8 i; + for (i = 0; i <= r_splitscreen; ++i) + { + K_ToggleDirector(i, !K_DirectorIsEnabled(i)); + } +} + menuitem_t PAUSE_PlaybackMenu[] = { {IT_CALL | IT_STRING, "Hide Menu", NULL, "M_PHIDE", {.routine = M_SelectableClearMenus}, 0, 0}, @@ -30,8 +43,9 @@ menuitem_t PAUSE_PlaybackMenu[] = {IT_ARROWS | IT_STRING, "Viewpoint 3", NULL, "M_PNVIEW", {.routine = M_PlaybackAdjustView}, 120, 0}, {IT_ARROWS | IT_STRING, "Viewpoint 4", NULL, "M_PNVIEW", {.routine = M_PlaybackAdjustView}, 136, 0}, - {IT_CALL | IT_STRING, "Toggle Free Camera", NULL, "M_PVIEWS", {.routine = M_PlaybackToggleFreecam}, 156, 0}, - {IT_CALL | IT_STRING, "Stop Playback", NULL, "M_PEXIT", {.routine = M_PlaybackQuit}, 172, 0}, + {IT_CALL | IT_STRING, "Toggle Director", NULL, "UN_IC11A", {.routine = M_PlaybackToggleDirector}, 156, 0}, + {IT_CALL | IT_STRING, "Toggle Free Camera", NULL, "M_PVIEWS", {.routine = M_PlaybackToggleFreecam}, 172, 0}, + {IT_CALL | IT_STRING, "Stop Playback", NULL, "M_PEXIT", {.routine = M_PlaybackQuit}, 188, 0}, }; menu_t PAUSE_PlaybackMenuDef = { @@ -39,7 +53,7 @@ menu_t PAUSE_PlaybackMenuDef = { NULL, 0, PAUSE_PlaybackMenu, - BASEVIDWIDTH/2 - 88, 2, + BASEVIDWIDTH/2 - 96, 2, 0, 0, MBF_UD_LR_FLIPPED, NULL, @@ -155,7 +169,7 @@ static void M_PlaybackTick(void) if (modeattacking) { - for (i = playback_viewcount; i <= playback_view4; i++) + for (i = playback_viewcount; i <= playback_director; i++) PAUSE_PlaybackMenu[i].status = IT_DISABLED; PAUSE_PlaybackMenu[playback_freecam].mvar1 = 72; @@ -166,17 +180,18 @@ static void M_PlaybackTick(void) else { PAUSE_PlaybackMenu[playback_viewcount].status = IT_ARROWS|IT_STRING; + PAUSE_PlaybackMenu[playback_freecam].status = IT_CALL|IT_STRING; for (i = 0; i <= r_splitscreen; i++) PAUSE_PlaybackMenu[playback_view1+i].status = IT_ARROWS|IT_STRING; for (i = r_splitscreen+1; i < 4; i++) PAUSE_PlaybackMenu[playback_view1+i].status = IT_DISABLED; - PAUSE_PlaybackMenu[playback_freecam].mvar1 = 156; - PAUSE_PlaybackMenu[playback_quit].mvar1 = 172; + PAUSE_PlaybackMenu[playback_freecam].mvar1 = 172; + PAUSE_PlaybackMenu[playback_quit].mvar1 = 188; //currentMenu->x = BASEVIDWIDTH/2 - 94; - currentMenu->x = BASEVIDWIDTH/2 - 88; + currentMenu->x = BASEVIDWIDTH/2 - 96; } }