Add director option to multiplayer replays

This commit is contained in:
NepDisk 2026-04-23 18:39:22 -04:00
parent b16b6de345
commit 71a2697fae
3 changed files with 28 additions and 3 deletions

View file

@ -831,6 +831,7 @@ struct menu_routine_s const MENU_ROUTINES[] = {
{ "PLAYBACKSETVIEWS", &MR_PlaybackSetViews },
{ "PLAYBACKADJUSTVIEW", &MR_PlaybackAdjustView },
{ "PLAYBACKTOGGLEFREECAM", &MR_PlaybackToggleFreecam },
{ "PLAYBACKTOGGLEDIRECTOR", &MR_PlaybackToggleDirector },
{ "PLAYBACKQUIT", &MR_PlaybackQuit },
{ "HANDLEIMAGEDEF", &MR_HandleImageDef },
{ "HANDLEMUSICTEST", &MR_HandleMusicTest },

View file

@ -108,6 +108,8 @@ int snprintf(char *str, size_t n, const char *fmt, ...);
#include "qs22j.h"
#include "k_director.h"
typedef enum
{
QUITMSG = 0,
@ -1232,6 +1234,9 @@ static boolean M_DemoBinds(INT32 ch)
{
switch (ch)
{
case ';': // toggle director
MR_PlaybackToggleDirector(0);
break;
case '\'': // toggle freecam
MR_PlaybackToggleFreecam(0);
break;
@ -5214,6 +5219,8 @@ void MD_DrawPlaybackMenu(void)
M_SetItemVisible(MN_PLAYBACK, "VIEW3", !modeattacking && r_splitscreen >= 2);
M_SetItemVisible(MN_PLAYBACK, "VIEW4", !modeattacking && r_splitscreen >= 3);
M_SetItemVisible(MN_PLAYBACK, "DIRECTOR", !modeattacking);
if (modeattacking)
{
M_SetItemX(MN_PLAYBACK, "FREECAM", 72);
@ -5222,9 +5229,10 @@ void MD_DrawPlaybackMenu(void)
}
else
{
M_SetItemX(MN_PLAYBACK, "FREECAM", 156);
M_SetItemX(MN_PLAYBACK, "QUIT", 172);
currentMenu->x = BASEVIDWIDTH/2 - 88;
M_SetItemX(MN_PLAYBACK, "DIRECTOR", 156);
M_SetItemX(MN_PLAYBACK, "FREECAM", 172);
M_SetItemX(MN_PLAYBACK, "QUIT", 188);
currentMenu->x = BASEVIDWIDTH/2 - 98;
}
// wip
@ -5428,6 +5436,7 @@ INT32 MR_PlaybackToggleFreecam(INT32 choice)
splitscreen = 0;
R_ExecuteSetViewSize();
G_SyncDemoParty(consoleplayer, 0);
UINT8 i;
for (i = 0; i <= r_splitscreen; ++i)
{
@ -5436,6 +5445,20 @@ INT32 MR_PlaybackToggleFreecam(INT32 choice)
return true;
}
INT32 MR_PlaybackToggleDirector(INT32 choice)
{
(void)choice;
M_ClearMenus(true);
// remove splitscreen:
splitscreen = 0;
R_ExecuteSetViewSize();
G_SyncDemoParty(consoleplayer, 0);
K_ToggleDirector();
return true;
}
INT32 MR_PlaybackQuit(INT32 choice)
{
(void)choice;

View file

@ -326,6 +326,7 @@ INT32 MR_PlaybackAdvance(INT32 choice);
INT32 MR_PlaybackSetViews(INT32 choice);
INT32 MR_PlaybackAdjustView(INT32 choice);
INT32 MR_PlaybackToggleFreecam(INT32 choice);
INT32 MR_PlaybackToggleDirector(INT32 choice);
INT32 MR_PlaybackQuit(INT32 choice);
INT32 MR_HandleImageDef(INT32 choice);
INT32 MR_HandleMusicTest(INT32 choice);