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)
|
||||
{
|
||||
INT16 i;
|
||||
|
|
@ -3804,56 +3802,6 @@ void M_DrawPlaybackMenu(void)
|
|||
UINT32 transmap = max(0, (INT32)(leveltime - playback_last_menu_interaction_leveltime - 4*TICRATE)) / 5;
|
||||
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
|
||||
//M_DrawTextBox(currentMenu->x-68, currentMenu->y-7, 15, 15);
|
||||
//M_DrawCenteredMenu();
|
||||
|
|
@ -3866,7 +3814,7 @@ void M_DrawPlaybackMenu(void)
|
|||
{
|
||||
if (modeattacking) continue;
|
||||
|
||||
if (splitscreen >= i - playback_view1)
|
||||
if (r_splitscreen >= i - playback_view1)
|
||||
{
|
||||
INT32 ply = displayplayers[i - playback_view1];
|
||||
|
||||
|
|
@ -3898,18 +3846,18 @@ void M_DrawPlaybackMenu(void)
|
|||
{
|
||||
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),
|
||||
'\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),
|
||||
'\x1B' | V_SNAPTOTOP|highlightflags, false); // down arrow
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case playback_viewcount:
|
||||
str = va("%d", splitscreen+1);
|
||||
str = va("%d", r_splitscreen+1);
|
||||
break;
|
||||
|
||||
case playback_view1:
|
||||
|
|
|
|||
|
|
@ -400,7 +400,11 @@ void M_StartControlPanel(void)
|
|||
|
||||
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
|
||||
|
||||
|
|
@ -431,16 +435,9 @@ void M_StartControlPanel(void)
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (demo.playback)
|
||||
{
|
||||
currentMenu = &PAUSE_PlaybackMenuDef;
|
||||
}
|
||||
else
|
||||
{
|
||||
M_OpenPauseMenu();
|
||||
}
|
||||
}
|
||||
|
||||
itemOn = currentMenu->lastOn;
|
||||
|
||||
|
|
@ -772,6 +769,13 @@ static void M_HandleMenuInput(void)
|
|||
lr = menucmd[pid].dpad_lr;
|
||||
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.
|
||||
if (menucmd[pid].buttons & MBT_L) { lr--; }
|
||||
if (menucmd[pid].buttons & MBT_R) { lr++; }
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
#include "../../p_local.h" // P_InitCameraCmd
|
||||
#include "../../d_main.h" // D_StartTitle
|
||||
|
||||
static void M_PlaybackTick(void);
|
||||
|
||||
menuitem_t PAUSE_PlaybackMenu[] =
|
||||
{
|
||||
{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,
|
||||
M_DrawPlaybackMenu,
|
||||
NULL,
|
||||
M_PlaybackTick,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
|
|
@ -66,6 +68,64 @@ void M_EndModeAttackRun(void)
|
|||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
itemOn = playback_pause;
|
||||
|
|
@ -143,12 +203,12 @@ void M_PlaybackSetViews(INT32 choice)
|
|||
{
|
||||
if (choice > 0)
|
||||
{
|
||||
if (splitscreen < 3)
|
||||
G_AdjustView(splitscreen + 2, 0, true);
|
||||
if (r_splitscreen < 3)
|
||||
G_AdjustView(r_splitscreen + 2, 0, true);
|
||||
}
|
||||
else if (splitscreen)
|
||||
else if (r_splitscreen)
|
||||
{
|
||||
splitscreen--;
|
||||
r_splitscreen--;
|
||||
R_ExecuteSetViewSize();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue