mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Repair playback mini-menu
- Fix starting the playback mini-menu - Fix playback mini-menu input not being natively horizontal - Fix playback mini-menu having been written before r_splitscreen refactor - Move heinous modifying-menu-data-in-the-drawer behaviour to an actual dedicated ticker
This commit is contained in:
parent
05301d0825
commit
c55849006d
3 changed files with 82 additions and 70 deletions
|
|
@ -3794,8 +3794,6 @@ void M_DrawPause(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tic_t playback_last_menu_interaction_leveltime = 0;
|
|
||||||
|
|
||||||
void M_DrawPlaybackMenu(void)
|
void M_DrawPlaybackMenu(void)
|
||||||
{
|
{
|
||||||
INT16 i;
|
INT16 i;
|
||||||
|
|
@ -3804,56 +3802,6 @@ void M_DrawPlaybackMenu(void)
|
||||||
UINT32 transmap = max(0, (INT32)(leveltime - playback_last_menu_interaction_leveltime - 4*TICRATE)) / 5;
|
UINT32 transmap = max(0, (INT32)(leveltime - playback_last_menu_interaction_leveltime - 4*TICRATE)) / 5;
|
||||||
transmap = min(8, transmap) << V_ALPHASHIFT;
|
transmap = min(8, transmap) << V_ALPHASHIFT;
|
||||||
|
|
||||||
if (leveltime - playback_last_menu_interaction_leveltime >= 6*TICRATE)
|
|
||||||
playback_last_menu_interaction_leveltime = leveltime - 6*TICRATE;
|
|
||||||
|
|
||||||
// Toggle items
|
|
||||||
if (paused && !demo.rewinding)
|
|
||||||
{
|
|
||||||
PAUSE_PlaybackMenu[playback_pause].status = PAUSE_PlaybackMenu[playback_fastforward].status = PAUSE_PlaybackMenu[playback_rewind].status = IT_DISABLED;
|
|
||||||
PAUSE_PlaybackMenu[playback_resume].status = PAUSE_PlaybackMenu[playback_advanceframe].status = PAUSE_PlaybackMenu[playback_backframe].status = IT_CALL|IT_STRING;
|
|
||||||
|
|
||||||
if (itemOn >= playback_rewind && itemOn <= playback_fastforward)
|
|
||||||
itemOn += playback_backframe - playback_rewind;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PAUSE_PlaybackMenu[playback_pause].status = PAUSE_PlaybackMenu[playback_fastforward].status = PAUSE_PlaybackMenu[playback_rewind].status = IT_CALL|IT_STRING;
|
|
||||||
PAUSE_PlaybackMenu[playback_resume].status = PAUSE_PlaybackMenu[playback_advanceframe].status = PAUSE_PlaybackMenu[playback_backframe].status = IT_DISABLED;
|
|
||||||
|
|
||||||
if (itemOn >= playback_backframe && itemOn <= playback_advanceframe)
|
|
||||||
itemOn -= playback_backframe - playback_rewind;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (modeattacking)
|
|
||||||
{
|
|
||||||
for (i = playback_viewcount; i <= playback_view4; i++)
|
|
||||||
PAUSE_PlaybackMenu[i].status = IT_DISABLED;
|
|
||||||
|
|
||||||
//PAUSE_PlaybackMenu[playback_moreoptions].mvar1 = 72;
|
|
||||||
//PAUSE_PlaybackMenu[playback_quit].mvar1 = 88;
|
|
||||||
PAUSE_PlaybackMenu[playback_quit].mvar1 = 72;
|
|
||||||
|
|
||||||
//currentMenu->x = BASEVIDWIDTH/2 - 52;
|
|
||||||
currentMenu->x = BASEVIDWIDTH/2 - 44;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PAUSE_PlaybackMenu[playback_viewcount].status = IT_ARROWS|IT_STRING;
|
|
||||||
|
|
||||||
for (i = 0; i <= splitscreen; i++)
|
|
||||||
PAUSE_PlaybackMenu[playback_view1+i].status = IT_ARROWS|IT_STRING;
|
|
||||||
for (i = splitscreen+1; i < 4; i++)
|
|
||||||
PAUSE_PlaybackMenu[playback_view1+i].status = IT_DISABLED;
|
|
||||||
|
|
||||||
//PAUSE_PlaybackMenu[playback_moreoptions].mvar1 = 156;
|
|
||||||
//PAUSE_PlaybackMenu[playback_quit].mvar1 = 172;
|
|
||||||
PAUSE_PlaybackMenu[playback_quit].mvar1 = 156;
|
|
||||||
|
|
||||||
//currentMenu->x = BASEVIDWIDTH/2 - 94;
|
|
||||||
currentMenu->x = BASEVIDWIDTH/2 - 88;
|
|
||||||
}
|
|
||||||
|
|
||||||
// wip
|
// wip
|
||||||
//M_DrawTextBox(currentMenu->x-68, currentMenu->y-7, 15, 15);
|
//M_DrawTextBox(currentMenu->x-68, currentMenu->y-7, 15, 15);
|
||||||
//M_DrawCenteredMenu();
|
//M_DrawCenteredMenu();
|
||||||
|
|
@ -3866,7 +3814,7 @@ void M_DrawPlaybackMenu(void)
|
||||||
{
|
{
|
||||||
if (modeattacking) continue;
|
if (modeattacking) continue;
|
||||||
|
|
||||||
if (splitscreen >= i - playback_view1)
|
if (r_splitscreen >= i - playback_view1)
|
||||||
{
|
{
|
||||||
INT32 ply = displayplayers[i - playback_view1];
|
INT32 ply = displayplayers[i - playback_view1];
|
||||||
|
|
||||||
|
|
@ -3898,18 +3846,18 @@ void M_DrawPlaybackMenu(void)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
if (!(i == playback_viewcount && splitscreen == 3))
|
if (!(i == playback_viewcount && r_splitscreen == 3))
|
||||||
V_DrawCharacter(BASEVIDWIDTH/2 - 4, currentMenu->y + 28 - (skullAnimCounter/5),
|
V_DrawCharacter(BASEVIDWIDTH/2 - 4, currentMenu->y + 28 - (skullAnimCounter/5),
|
||||||
'\x1A' | V_SNAPTOTOP|highlightflags, false); // up arrow
|
'\x1A' | V_SNAPTOTOP|highlightflags, false); // up arrow
|
||||||
|
|
||||||
if (!(i == playback_viewcount && splitscreen == 0))
|
if (!(i == playback_viewcount && r_splitscreen == 0))
|
||||||
V_DrawCharacter(BASEVIDWIDTH/2 - 4, currentMenu->y + 48 + (skullAnimCounter/5),
|
V_DrawCharacter(BASEVIDWIDTH/2 - 4, currentMenu->y + 48 + (skullAnimCounter/5),
|
||||||
'\x1B' | V_SNAPTOTOP|highlightflags, false); // down arrow
|
'\x1B' | V_SNAPTOTOP|highlightflags, false); // down arrow
|
||||||
|
|
||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
case playback_viewcount:
|
case playback_viewcount:
|
||||||
str = va("%d", splitscreen+1);
|
str = va("%d", r_splitscreen+1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case playback_view1:
|
case playback_view1:
|
||||||
|
|
|
||||||
|
|
@ -400,7 +400,11 @@ void M_StartControlPanel(void)
|
||||||
|
|
||||||
menuactive = true;
|
menuactive = true;
|
||||||
|
|
||||||
if (!Playing())
|
if (demo.playback)
|
||||||
|
{
|
||||||
|
currentMenu = &PAUSE_PlaybackMenuDef;
|
||||||
|
}
|
||||||
|
else if (!Playing())
|
||||||
{
|
{
|
||||||
M_StopMessage(0); // Doesn't work with MM_YESNO or MM_EVENTHANDLER... but good enough to get the game as it is currently functional again
|
M_StopMessage(0); // Doesn't work with MM_YESNO or MM_EVENTHANDLER... but good enough to get the game as it is currently functional again
|
||||||
|
|
||||||
|
|
@ -432,14 +436,7 @@ void M_StartControlPanel(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (demo.playback)
|
M_OpenPauseMenu();
|
||||||
{
|
|
||||||
currentMenu = &PAUSE_PlaybackMenuDef;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
M_OpenPauseMenu();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
itemOn = currentMenu->lastOn;
|
itemOn = currentMenu->lastOn;
|
||||||
|
|
@ -772,6 +769,13 @@ static void M_HandleMenuInput(void)
|
||||||
lr = menucmd[pid].dpad_lr;
|
lr = menucmd[pid].dpad_lr;
|
||||||
ud = menucmd[pid].dpad_ud;
|
ud = menucmd[pid].dpad_ud;
|
||||||
|
|
||||||
|
// If we ever add a second horizontal menu, make it a menu_t property, not an extra check.
|
||||||
|
if (currentMenu == &PAUSE_PlaybackMenuDef)
|
||||||
|
{
|
||||||
|
ud = menucmd[pid].dpad_lr;
|
||||||
|
lr = -menucmd[pid].dpad_ud;
|
||||||
|
}
|
||||||
|
|
||||||
// LR does nothing in the default menu, just remap as dpad.
|
// LR does nothing in the default menu, just remap as dpad.
|
||||||
if (menucmd[pid].buttons & MBT_L) { lr--; }
|
if (menucmd[pid].buttons & MBT_L) { lr--; }
|
||||||
if (menucmd[pid].buttons & MBT_R) { lr++; }
|
if (menucmd[pid].buttons & MBT_R) { lr++; }
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@
|
||||||
#include "../../p_local.h" // P_InitCameraCmd
|
#include "../../p_local.h" // P_InitCameraCmd
|
||||||
#include "../../d_main.h" // D_StartTitle
|
#include "../../d_main.h" // D_StartTitle
|
||||||
|
|
||||||
|
static void M_PlaybackTick(void);
|
||||||
|
|
||||||
menuitem_t PAUSE_PlaybackMenu[] =
|
menuitem_t PAUSE_PlaybackMenu[] =
|
||||||
{
|
{
|
||||||
{IT_CALL | IT_STRING, "Hide Menu (Esc)", NULL, "M_PHIDE", {.routine = M_SelectableClearMenus}, 0, 0},
|
{IT_CALL | IT_STRING, "Hide Menu (Esc)", NULL, "M_PHIDE", {.routine = M_SelectableClearMenus}, 0, 0},
|
||||||
|
|
@ -39,7 +41,7 @@ menu_t PAUSE_PlaybackMenuDef = {
|
||||||
0, 0,
|
0, 0,
|
||||||
0, 0,
|
0, 0,
|
||||||
M_DrawPlaybackMenu,
|
M_DrawPlaybackMenu,
|
||||||
NULL,
|
M_PlaybackTick,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
|
|
@ -66,6 +68,64 @@ void M_EndModeAttackRun(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replay Playback Menu
|
// Replay Playback Menu
|
||||||
|
|
||||||
|
tic_t playback_last_menu_interaction_leveltime = 0;
|
||||||
|
|
||||||
|
static void M_PlaybackTick(void)
|
||||||
|
{
|
||||||
|
INT16 i;
|
||||||
|
|
||||||
|
if (leveltime - playback_last_menu_interaction_leveltime >= 6*TICRATE)
|
||||||
|
playback_last_menu_interaction_leveltime = leveltime - 6*TICRATE;
|
||||||
|
|
||||||
|
// Toggle items
|
||||||
|
if (paused && !demo.rewinding)
|
||||||
|
{
|
||||||
|
PAUSE_PlaybackMenu[playback_pause].status = PAUSE_PlaybackMenu[playback_fastforward].status = PAUSE_PlaybackMenu[playback_rewind].status = IT_DISABLED;
|
||||||
|
PAUSE_PlaybackMenu[playback_resume].status = PAUSE_PlaybackMenu[playback_advanceframe].status = PAUSE_PlaybackMenu[playback_backframe].status = IT_CALL|IT_STRING;
|
||||||
|
|
||||||
|
if (itemOn >= playback_rewind && itemOn <= playback_fastforward)
|
||||||
|
itemOn += playback_backframe - playback_rewind;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PAUSE_PlaybackMenu[playback_pause].status = PAUSE_PlaybackMenu[playback_fastforward].status = PAUSE_PlaybackMenu[playback_rewind].status = IT_CALL|IT_STRING;
|
||||||
|
PAUSE_PlaybackMenu[playback_resume].status = PAUSE_PlaybackMenu[playback_advanceframe].status = PAUSE_PlaybackMenu[playback_backframe].status = IT_DISABLED;
|
||||||
|
|
||||||
|
if (itemOn >= playback_backframe && itemOn <= playback_advanceframe)
|
||||||
|
itemOn -= playback_backframe - playback_rewind;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modeattacking)
|
||||||
|
{
|
||||||
|
for (i = playback_viewcount; i <= playback_view4; i++)
|
||||||
|
PAUSE_PlaybackMenu[i].status = IT_DISABLED;
|
||||||
|
|
||||||
|
//PAUSE_PlaybackMenu[playback_moreoptions].mvar1 = 72;
|
||||||
|
//PAUSE_PlaybackMenu[playback_quit].mvar1 = 88;
|
||||||
|
PAUSE_PlaybackMenu[playback_quit].mvar1 = 72;
|
||||||
|
|
||||||
|
//currentMenu->x = BASEVIDWIDTH/2 - 52;
|
||||||
|
currentMenu->x = BASEVIDWIDTH/2 - 44;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PAUSE_PlaybackMenu[playback_viewcount].status = IT_ARROWS|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_moreoptions].mvar1 = 156;
|
||||||
|
//PAUSE_PlaybackMenu[playback_quit].mvar1 = 172;
|
||||||
|
PAUSE_PlaybackMenu[playback_quit].mvar1 = 156;
|
||||||
|
|
||||||
|
//currentMenu->x = BASEVIDWIDTH/2 - 94;
|
||||||
|
currentMenu->x = BASEVIDWIDTH/2 - 88;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void M_SetPlaybackMenuPointer(void)
|
void M_SetPlaybackMenuPointer(void)
|
||||||
{
|
{
|
||||||
itemOn = playback_pause;
|
itemOn = playback_pause;
|
||||||
|
|
@ -143,12 +203,12 @@ void M_PlaybackSetViews(INT32 choice)
|
||||||
{
|
{
|
||||||
if (choice > 0)
|
if (choice > 0)
|
||||||
{
|
{
|
||||||
if (splitscreen < 3)
|
if (r_splitscreen < 3)
|
||||||
G_AdjustView(splitscreen + 2, 0, true);
|
G_AdjustView(r_splitscreen + 2, 0, true);
|
||||||
}
|
}
|
||||||
else if (splitscreen)
|
else if (r_splitscreen)
|
||||||
{
|
{
|
||||||
splitscreen--;
|
r_splitscreen--;
|
||||||
R_ExecuteSetViewSize();
|
R_ExecuteSetViewSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue