mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-12 19:12:31 +00:00
Merge branch 'restartmap-menu' into 'master'
Menu Restartmap Closes #301 See merge request KartKrew/Kart!768
This commit is contained in:
commit
8007446349
6 changed files with 125 additions and 30 deletions
|
|
@ -993,6 +993,7 @@ void D_StartTitle(void)
|
||||||
memset(deviceResponding, false, sizeof (deviceResponding));
|
memset(deviceResponding, false, sizeof (deviceResponding));
|
||||||
|
|
||||||
F_StartTitleScreen();
|
F_StartTitleScreen();
|
||||||
|
M_ClearMenus(false);
|
||||||
|
|
||||||
// Reset the palette
|
// Reset the palette
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
|
|
|
||||||
|
|
@ -676,7 +676,7 @@ void K_PlayerLoseLife(player_t *player)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->spectator || player->exiting || player->bot || (player->pflags & PF_LOSTLIFE))
|
if (player->spectator || player->exiting || player->bot || player->lives <= 0 || (player->pflags & PF_LOSTLIFE))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -410,6 +410,8 @@ typedef enum
|
||||||
{
|
{
|
||||||
mpause_addons = 0,
|
mpause_addons = 0,
|
||||||
mpause_switchmap,
|
mpause_switchmap,
|
||||||
|
mpause_restartmap,
|
||||||
|
mpause_tryagain,
|
||||||
#ifdef HAVE_DISCORDRPC
|
#ifdef HAVE_DISCORDRPC
|
||||||
mpause_discordrequests,
|
mpause_discordrequests,
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -978,6 +980,8 @@ extern consvar_t cv_dummymenuplayer;
|
||||||
extern consvar_t cv_dummyspectator;
|
extern consvar_t cv_dummyspectator;
|
||||||
|
|
||||||
// Bunch of funny functions for the pause menu...~
|
// Bunch of funny functions for the pause menu...~
|
||||||
|
void M_RestartMap(INT32 choice); // Restart level (MP)
|
||||||
|
void M_TryAgain(INT32 choice); // Try again (SP)
|
||||||
void M_ConfirmSpectate(INT32 choice); // Spectate confirm when you're alone
|
void M_ConfirmSpectate(INT32 choice); // Spectate confirm when you're alone
|
||||||
void M_ConfirmEnterGame(INT32 choice); // Enter game confirm when you're alone
|
void M_ConfirmEnterGame(INT32 choice); // Enter game confirm when you're alone
|
||||||
void M_ConfirmSpectateChange(INT32 choice); // Splitscreen spectate/play menu func
|
void M_ConfirmSpectateChange(INT32 choice); // Splitscreen spectate/play menu func
|
||||||
|
|
|
||||||
|
|
@ -1594,6 +1594,12 @@ menuitem_t PAUSE_Main[] =
|
||||||
{IT_STRING | IT_SUBMENU, "CHANGE MAP", "M_ICOMAP",
|
{IT_STRING | IT_SUBMENU, "CHANGE MAP", "M_ICOMAP",
|
||||||
NULL, {.submenu = &PAUSE_GamemodesDef}, 0, 0},
|
NULL, {.submenu = &PAUSE_GamemodesDef}, 0, 0},
|
||||||
|
|
||||||
|
{IT_STRING | IT_CALL, "RESTART MAP", "M_ICORE",
|
||||||
|
NULL, {.routine = M_RestartMap}, 0, 0},
|
||||||
|
|
||||||
|
{IT_STRING | IT_CALL, "TRY AGAIN", "M_ICORE",
|
||||||
|
NULL, {.routine = M_TryAgain}, 0, 0},
|
||||||
|
|
||||||
#ifdef HAVE_DISCORDRPC
|
#ifdef HAVE_DISCORDRPC
|
||||||
{IT_STRING | IT_CALL, "DISCORD REQUESTS", "M_ICODIS",
|
{IT_STRING | IT_CALL, "DISCORD REQUESTS", "M_ICODIS",
|
||||||
NULL, {NULL}, 0, 0},
|
NULL, {NULL}, 0, 0},
|
||||||
|
|
|
||||||
|
|
@ -3659,19 +3659,29 @@ void M_DrawPause(void)
|
||||||
{
|
{
|
||||||
case IT_STRING:
|
case IT_STRING:
|
||||||
{
|
{
|
||||||
|
|
||||||
char iconame[9]; // 8 chars + \0
|
|
||||||
patch_t *pp;
|
patch_t *pp;
|
||||||
|
|
||||||
if (i == itemOn)
|
if (i == itemOn)
|
||||||
{
|
{
|
||||||
|
if (i == mpause_restartmap || i == mpause_tryagain)
|
||||||
|
{
|
||||||
|
pp = W_CachePatchName(
|
||||||
|
va("M_ICOR2%c", ('A'+(pausemenu.ticker & 1))),
|
||||||
|
PU_CACHE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char iconame[9]; // 8 chars + \0
|
||||||
strcpy(iconame, currentMenu->menuitems[i].tooltip);
|
strcpy(iconame, currentMenu->menuitems[i].tooltip);
|
||||||
iconame[7] = '2'; // Yes this is a stupid hack. Replace the last character with a 2 when we're selecting this graphic.
|
iconame[7] = '2'; // Yes this is a stupid hack. Replace the last character with a 2 when we're selecting this graphic.
|
||||||
|
|
||||||
pp = W_CachePatchName(iconame, PU_CACHE);
|
pp = W_CachePatchName(iconame, PU_CACHE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
pp = W_CachePatchName(currentMenu->menuitems[i].tooltip, PU_CACHE);
|
pp = W_CachePatchName(currentMenu->menuitems[i].tooltip, PU_CACHE);
|
||||||
|
}
|
||||||
|
|
||||||
// 294 - 261 = 33
|
// 294 - 261 = 33
|
||||||
// We need to move 33 px in 50 tics which means we move 33/50 = 0.66 px every tic = 2/3 of the offset.
|
// We need to move 33 px in 50 tics which means we move 33/50 = 0.66 px every tic = 2/3 of the offset.
|
||||||
|
|
|
||||||
122
src/k_menufunc.c
122
src/k_menufunc.c
|
|
@ -357,7 +357,7 @@ static void M_EraseDataResponse(INT32 ch)
|
||||||
|
|
||||||
void M_EraseData(INT32 choice)
|
void M_EraseData(INT32 choice)
|
||||||
{
|
{
|
||||||
const char *eschoice, *esstr = M_GetText("Are you sure you want to erase\n%s?\n\n(Press A to confirm)\n");
|
const char *eschoice, *esstr = M_GetText("Are you sure you want to erase\n%s?\n\nPress (A) to confirm or (B) to cancel\n");
|
||||||
|
|
||||||
optionsmenu.erasecontext = (UINT8)choice;
|
optionsmenu.erasecontext = (UINT8)choice;
|
||||||
|
|
||||||
|
|
@ -1517,7 +1517,7 @@ static void M_HandleMenuInput(void)
|
||||||
{
|
{
|
||||||
if (((currentMenu->menuitems[itemOn].status & IT_CALLTYPE) & IT_CALL_NOTMODIFIED) && majormods)
|
if (((currentMenu->menuitems[itemOn].status & IT_CALLTYPE) & IT_CALL_NOTMODIFIED) && majormods)
|
||||||
{
|
{
|
||||||
M_StartMessage(M_GetText("This cannot be done with complex addons\nor in a cheated game.\n\n(Press a key)\n"), NULL, MM_NOTHING);
|
M_StartMessage(M_GetText("This cannot be done with complex addons\nor in a cheated game.\n\nPress (B)\n"), NULL, MM_NOTHING);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1584,7 +1584,10 @@ void M_Ticker(void)
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
|
||||||
if (!menuactive)
|
if (!menuactive)
|
||||||
|
{
|
||||||
|
noFurtherInput = false;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (menutransition.tics != 0 || menutransition.dest != 0)
|
if (menutransition.tics != 0 || menutransition.dest != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -2038,7 +2041,7 @@ void M_QuitSRB2(INT32 choice)
|
||||||
// We pick index 0 which is language sensitive, or one at random,
|
// We pick index 0 which is language sensitive, or one at random,
|
||||||
// between 1 and maximum number.
|
// between 1 and maximum number.
|
||||||
(void)choice;
|
(void)choice;
|
||||||
M_StartMessage("Are you sure you want to quit playing?\n\n(Press A to exit)", FUNCPTRCAST(M_QuitResponse), MM_YESNO);
|
M_StartMessage("Are you sure you want to quit playing?\n\nPress (A) to confirm or (B) to cancel", FUNCPTRCAST(M_QuitResponse), MM_YESNO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// =========
|
// =========
|
||||||
|
|
@ -3436,7 +3439,15 @@ static void M_LevelListFromGametype(INT16 gt)
|
||||||
while (cup)
|
while (cup)
|
||||||
{
|
{
|
||||||
if (cup->unlockrequired == -1 || unlockables[cup->unlockrequired].unlocked)
|
if (cup->unlockrequired == -1 || unlockables[cup->unlockrequired].unlocked)
|
||||||
|
{
|
||||||
highestid = cup->id;
|
highestid = cup->id;
|
||||||
|
if (Playing() && mapheaderinfo[gamemap-1] && mapheaderinfo[gamemap-1]->cup == cup)
|
||||||
|
{
|
||||||
|
cupgrid.x = cup->id % CUPMENU_COLUMNS;
|
||||||
|
cupgrid.y = (cup->id / CUPMENU_COLUMNS) % CUPMENU_ROWS;
|
||||||
|
cupgrid.pageno = cup->id / (CUPMENU_COLUMNS * CUPMENU_ROWS);
|
||||||
|
}
|
||||||
|
}
|
||||||
cup = cup->next;
|
cup = cup->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4942,7 +4953,7 @@ void M_HandleProfileSelect(INT32 ch)
|
||||||
#if 0
|
#if 0
|
||||||
if (optionsmenu.profilen == 0)
|
if (optionsmenu.profilen == 0)
|
||||||
{
|
{
|
||||||
M_StartMessage(M_GetText("Are you sure you wish\nto use the Guest Profile?\nThis profile cannot be customised.\nIt is recommended to create\na new Profile instead.\n\n(Press A to confirm)"), FUNCPTRCAST(M_FirstPickProfile), MM_YESNO);
|
M_StartMessage(M_GetText("Are you sure you wish\nto use the Guest Profile?\nThis profile cannot be customised.\nIt is recommended to create\na new Profile instead.\n\nPress (A) to confirm or (B) to cancel"), FUNCPTRCAST(M_FirstPickProfile), MM_YESNO);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -5084,7 +5095,7 @@ void M_ConfirmProfile(INT32 choice)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
M_StartMessage(M_GetText("Are you sure you wish to\nselect this profile?\n\n(Press A to confirm)"), FUNCPTRCAST(M_FirstPickProfile), MM_YESNO);
|
M_StartMessage(M_GetText("Are you sure you wish to\nselect this profile?\n\nPress (A) to confirm or (B) to cancel"), FUNCPTRCAST(M_FirstPickProfile), MM_YESNO);
|
||||||
M_SetMenuDelay(pid);
|
M_SetMenuDelay(pid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5290,7 +5301,7 @@ void M_ProfileControlsConfirm(INT32 choice)
|
||||||
{
|
{
|
||||||
(void)choice;
|
(void)choice;
|
||||||
|
|
||||||
//M_StartMessage(M_GetText("Exiting will save the control changes\nfor this Profile.\nIs this okay?\n\n(Press A to confirm)"), FUNCPTRCAST(M_ProfileControlSaveResponse), MM_YESNO);
|
//M_StartMessage(M_GetText("Exiting will save the control changes\nfor this Profile.\nIs this okay?\n\nPress (A) to confirm or (B) to cancel"), FUNCPTRCAST(M_ProfileControlSaveResponse), MM_YESNO);
|
||||||
// TODO: Add a graphic for controls saving, instead of obnoxious prompt.
|
// TODO: Add a graphic for controls saving, instead of obnoxious prompt.
|
||||||
|
|
||||||
M_ProfileControlSaveResponse(MA_YES);
|
M_ProfileControlSaveResponse(MA_YES);
|
||||||
|
|
@ -5667,7 +5678,7 @@ void M_CheckProfileData(INT32 choice)
|
||||||
if (np < 2)
|
if (np < 2)
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s3k7b);
|
S_StartSound(NULL, sfx_s3k7b);
|
||||||
M_StartMessage("There are no custom profiles.\n\n(Press any button)", NULL, MM_NOTHING);
|
M_StartMessage("There are no custom profiles.\n\nPress (B)", NULL, MM_NOTHING);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5731,9 +5742,9 @@ void M_HandleProfileErase(INT32 choice)
|
||||||
else if (M_MenuConfirmPressed(pid))
|
else if (M_MenuConfirmPressed(pid))
|
||||||
{
|
{
|
||||||
if (optionsmenu.eraseprofilen == cv_currprofile.value)
|
if (optionsmenu.eraseprofilen == cv_currprofile.value)
|
||||||
M_StartMessage("Your ""\x85""current profile""\x80"" will be erased.\nAre you sure you want to proceed?\nDeleting this profile will also\nreturn you to the title screen.\n\n(Press A to confirm)", FUNCPTRCAST(M_EraseProfileResponse), MM_YESNO);
|
M_StartMessage("Your ""\x85""current profile""\x80"" will be erased.\nAre you sure you want to proceed?\nDeleting this profile will also\nreturn you to the title screen.\n\nPress (A) to confirm or (B) to cancel", FUNCPTRCAST(M_EraseProfileResponse), MM_YESNO);
|
||||||
else
|
else
|
||||||
M_StartMessage("This profile will be erased.\nAre you sure you want to proceed?\n\n(Press A to confirm)", FUNCPTRCAST(M_EraseProfileResponse), MM_YESNO);
|
M_StartMessage("This profile will be erased.\nAre you sure you want to proceed?\n\nPress (A) to confirm or (B) to cancel", FUNCPTRCAST(M_EraseProfileResponse), MM_YESNO);
|
||||||
|
|
||||||
M_SetMenuDelay(pid);
|
M_SetMenuDelay(pid);
|
||||||
}
|
}
|
||||||
|
|
@ -5867,6 +5878,8 @@ struct pausemenu_s pausemenu;
|
||||||
// Pause menu!
|
// Pause menu!
|
||||||
void M_OpenPauseMenu(void)
|
void M_OpenPauseMenu(void)
|
||||||
{
|
{
|
||||||
|
INT32 i = 0;
|
||||||
|
|
||||||
currentMenu = &PAUSE_MainDef;
|
currentMenu = &PAUSE_MainDef;
|
||||||
|
|
||||||
// Ready the variables
|
// Ready the variables
|
||||||
|
|
@ -5883,6 +5896,8 @@ void M_OpenPauseMenu(void)
|
||||||
|
|
||||||
PAUSE_Main[mpause_addons].status = IT_DISABLED;
|
PAUSE_Main[mpause_addons].status = IT_DISABLED;
|
||||||
PAUSE_Main[mpause_switchmap].status = IT_DISABLED;
|
PAUSE_Main[mpause_switchmap].status = IT_DISABLED;
|
||||||
|
PAUSE_Main[mpause_restartmap].status = IT_DISABLED;
|
||||||
|
PAUSE_Main[mpause_tryagain].status = IT_DISABLED;
|
||||||
#ifdef HAVE_DISCORDRPC
|
#ifdef HAVE_DISCORDRPC
|
||||||
PAUSE_Main[mpause_discordrequests].status = IT_DISABLED;
|
PAUSE_Main[mpause_discordrequests].status = IT_DISABLED;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -5902,9 +5917,36 @@ void M_OpenPauseMenu(void)
|
||||||
if (server || IsPlayerAdmin(consoleplayer))
|
if (server || IsPlayerAdmin(consoleplayer))
|
||||||
{
|
{
|
||||||
PAUSE_Main[mpause_switchmap].status = IT_STRING | IT_SUBMENU;
|
PAUSE_Main[mpause_switchmap].status = IT_STRING | IT_SUBMENU;
|
||||||
|
for (i = 0; i < PAUSE_GamemodesDef.numitems; i++)
|
||||||
|
{
|
||||||
|
if (PAUSE_GamemodesMenu[i].mvar2 != gametype)
|
||||||
|
continue;
|
||||||
|
PAUSE_GamemodesDef.lastOn = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
PAUSE_Main[mpause_restartmap].status = IT_STRING | IT_CALL;
|
||||||
PAUSE_Main[mpause_addons].status = IT_STRING | IT_CALL;
|
PAUSE_Main[mpause_addons].status = IT_STRING | IT_CALL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (!netgame && !demo.playback)
|
||||||
|
{
|
||||||
|
boolean retryallowed = (modeattacking != ATTACKING_NONE);
|
||||||
|
if (G_GametypeUsesLives())
|
||||||
|
{
|
||||||
|
for (i = 0; i <= splitscreen; i++)
|
||||||
|
{
|
||||||
|
if (players[g_localplayers[i]].lives <= 1)
|
||||||
|
continue;
|
||||||
|
retryallowed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retryallowed)
|
||||||
|
{
|
||||||
|
PAUSE_Main[mpause_tryagain].status = IT_STRING | IT_CALL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (G_GametypeHasSpectators())
|
if (G_GametypeHasSpectators())
|
||||||
{
|
{
|
||||||
|
|
@ -5933,6 +5975,7 @@ void M_QuitPauseMenu(INT32 choice)
|
||||||
void M_PauseTick(void)
|
void M_PauseTick(void)
|
||||||
{
|
{
|
||||||
pausemenu.offset /= 2;
|
pausemenu.offset /= 2;
|
||||||
|
pausemenu.ticker++;
|
||||||
|
|
||||||
if (pausemenu.closing)
|
if (pausemenu.closing)
|
||||||
{
|
{
|
||||||
|
|
@ -5981,6 +6024,37 @@ boolean M_PauseInputs(INT32 ch)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Restart map
|
||||||
|
void M_RestartMap(INT32 choice)
|
||||||
|
{
|
||||||
|
(void)choice;
|
||||||
|
M_ClearMenus(false);
|
||||||
|
COM_ImmedExecute("restartlevel");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try again
|
||||||
|
void M_TryAgain(INT32 choice)
|
||||||
|
{
|
||||||
|
(void)choice;
|
||||||
|
if (demo.playback)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (netgame || !Playing()) // Should never happen!
|
||||||
|
return;
|
||||||
|
|
||||||
|
M_ClearMenus(false);
|
||||||
|
|
||||||
|
if (modeattacking != ATTACKING_NONE)
|
||||||
|
{
|
||||||
|
G_CheckDemoStatus(); // Cancel recording
|
||||||
|
M_StartTimeAttack(-1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
G_SetRetryFlag();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Pause spectate / join functions
|
// Pause spectate / join functions
|
||||||
void M_ConfirmSpectate(INT32 choice)
|
void M_ConfirmSpectate(INT32 choice)
|
||||||
{
|
{
|
||||||
|
|
@ -5995,7 +6069,7 @@ void M_ConfirmEnterGame(INT32 choice)
|
||||||
(void)choice;
|
(void)choice;
|
||||||
if (!cv_allowteamchange.value)
|
if (!cv_allowteamchange.value)
|
||||||
{
|
{
|
||||||
M_StartMessage(M_GetText("The server is not allowing\nteam changes at this time.\nPress a key.\n"), NULL, MM_NOTHING);
|
M_StartMessage(M_GetText("The server is not allowing\nteam changes at this time.\n\nPress (B)\n"), NULL, MM_NOTHING);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
M_QuitPauseMenu(-1);
|
M_QuitPauseMenu(-1);
|
||||||
|
|
@ -6027,7 +6101,7 @@ void M_EndGame(INT32 choice)
|
||||||
if (!Playing())
|
if (!Playing())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
M_StartMessage(M_GetText("Are you sure you want to return\nto the title screen?\n(Press A to confirm)\n"), FUNCPTRCAST(M_ExitGameResponse), MM_YESNO);
|
M_StartMessage(M_GetText("Are you sure you want to return\nto the title screen?\nPress (A) to confirm or (B) to cancel\n"), FUNCPTRCAST(M_ExitGameResponse), MM_YESNO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -6209,7 +6283,7 @@ void M_ReplayHut(INT32 choice)
|
||||||
}
|
}
|
||||||
if (!preparefilemenu(false, true))
|
if (!preparefilemenu(false, true))
|
||||||
{
|
{
|
||||||
M_StartMessage("No replays found.\n\n(Press a key)\n", NULL, MM_NOTHING);
|
M_StartMessage("No replays found.\n\nPress (B)\n", NULL, MM_NOTHING);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (!demo.inreplayhut)
|
else if (!demo.inreplayhut)
|
||||||
|
|
@ -6285,7 +6359,7 @@ void M_HandleReplayHutList(INT32 choice)
|
||||||
if (!preparefilemenu(false, true))
|
if (!preparefilemenu(false, true))
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s224);
|
S_StartSound(NULL, sfx_s224);
|
||||||
M_StartMessage(va("%c%s\x80\nThis folder is empty.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
M_StartMessage(va("%c%s\x80\nThis folder is empty.\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
||||||
menupath[menupathindex[++menudepthleft]] = 0;
|
menupath[menupathindex[++menudepthleft]] = 0;
|
||||||
|
|
||||||
if (!preparefilemenu(true, true))
|
if (!preparefilemenu(true, true))
|
||||||
|
|
@ -6304,7 +6378,7 @@ void M_HandleReplayHutList(INT32 choice)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s26d);
|
S_StartSound(NULL, sfx_s26d);
|
||||||
M_StartMessage(va("%c%s\x80\nThis folder is too deep to navigate to!\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
M_StartMessage(va("%c%s\x80\nThis folder is too deep to navigate to!\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
||||||
menupath[menupathindex[menudepthleft]] = 0;
|
menupath[menupathindex[menudepthleft]] = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -6431,7 +6505,7 @@ void M_Addons(INT32 choice)
|
||||||
|
|
||||||
if (!preparefilemenu(false, false))
|
if (!preparefilemenu(false, false))
|
||||||
{
|
{
|
||||||
M_StartMessage(va("No files/folders found.\n\n%s\n\n(Press a key)\n", LOCATIONSTRING1),NULL,MM_NOTHING);
|
M_StartMessage(va("No files/folders found.\n\n%s\n\nPress (B)\n", LOCATIONSTRING1),NULL,MM_NOTHING);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -6464,7 +6538,7 @@ char *M_AddonsHeaderPath(void)
|
||||||
|
|
||||||
#define UNEXIST S_StartSound(NULL, sfx_s26d);\
|
#define UNEXIST S_StartSound(NULL, sfx_s26d);\
|
||||||
M_SetupNextMenu(MISC_AddonsDef.prevMenu, false);\
|
M_SetupNextMenu(MISC_AddonsDef.prevMenu, false);\
|
||||||
M_StartMessage(va("\x82%s\x80\nThis folder no longer exists!\nAborting to main menu.\n\n(Press a key)\n", M_AddonsHeaderPath()),NULL,MM_NOTHING)
|
M_StartMessage(va("\x82%s\x80\nThis folder no longer exists!\nAborting to main menu.\n\nPress (B)\n", M_AddonsHeaderPath()),NULL,MM_NOTHING)
|
||||||
|
|
||||||
#define CLEARNAME Z_Free(refreshdirname);\
|
#define CLEARNAME Z_Free(refreshdirname);\
|
||||||
refreshdirname = NULL
|
refreshdirname = NULL
|
||||||
|
|
@ -6508,19 +6582,19 @@ void M_AddonsRefresh(void)
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s26d);
|
S_StartSound(NULL, sfx_s26d);
|
||||||
if (refreshdirmenu & REFRESHDIR_MAX)
|
if (refreshdirmenu & REFRESHDIR_MAX)
|
||||||
message = va("%c%s\x80\nMaximum number of addons reached.\nA file could not be loaded.\nIf you wish to play with this addon, restart the game to clear existing ones.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname);
|
message = va("%c%s\x80\nMaximum number of addons reached.\nA file could not be loaded.\nIf you wish to play with this addon, restart the game to clear existing ones.\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname);
|
||||||
else
|
else
|
||||||
message = va("%c%s\x80\nA file was not loaded.\nCheck the console log for more info.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname);
|
message = va("%c%s\x80\nA file was not loaded.\nCheck the console log for more info.\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname);
|
||||||
}
|
}
|
||||||
else if (refreshdirmenu & (REFRESHDIR_WARNING|REFRESHDIR_ERROR))
|
else if (refreshdirmenu & (REFRESHDIR_WARNING|REFRESHDIR_ERROR))
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s224);
|
S_StartSound(NULL, sfx_s224);
|
||||||
message = va("%c%s\x80\nA file was loaded with %s.\nCheck the console log for more info.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname, ((refreshdirmenu & REFRESHDIR_ERROR) ? "errors" : "warnings"));
|
message = va("%c%s\x80\nA file was loaded with %s.\nCheck the console log for more info.\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname, ((refreshdirmenu & REFRESHDIR_ERROR) ? "errors" : "warnings"));
|
||||||
}
|
}
|
||||||
else if (majormods && !prevmajormods)
|
else if (majormods && !prevmajormods)
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s221);
|
S_StartSound(NULL, sfx_s221);
|
||||||
message = va("%c%s\x80\nYou've loaded a gameplay-modifying addon.\n\nRecord Attack has been disabled, but you\ncan still play alone in local Multiplayer.\n\nIf you wish to play Record Attack mode, restart the game to disable loaded addons.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname);
|
message = va("%c%s\x80\nYou've loaded a gameplay-modifying addon.\n\nRecord Attack has been disabled, but you\ncan still play alone in local Multiplayer.\n\nIf you wish to play Record Attack mode, restart the game to disable loaded addons.\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), refreshdirname);
|
||||||
prevmajormods = majormods;
|
prevmajormods = majormods;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6639,7 +6713,7 @@ void M_HandleAddons(INT32 choice)
|
||||||
if (!preparefilemenu(false, false))
|
if (!preparefilemenu(false, false))
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s224);
|
S_StartSound(NULL, sfx_s224);
|
||||||
M_StartMessage(va("%c%s\x80\nThis folder is empty.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
M_StartMessage(va("%c%s\x80\nThis folder is empty.\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
||||||
menupath[menupathindex[++menudepthleft]] = 0;
|
menupath[menupathindex[++menudepthleft]] = 0;
|
||||||
|
|
||||||
if (!preparefilemenu(true, false))
|
if (!preparefilemenu(true, false))
|
||||||
|
|
@ -6658,7 +6732,7 @@ void M_HandleAddons(INT32 choice)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_s26d);
|
S_StartSound(NULL, sfx_s26d);
|
||||||
M_StartMessage(va("%c%s\x80\nThis folder is too deep to navigate to!\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
M_StartMessage(va("%c%s\x80\nThis folder is too deep to navigate to!\n\nPress (B)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), M_AddonsHeaderPath()),NULL,MM_NOTHING);
|
||||||
menupath[menupathindex[menudepthleft]] = 0;
|
menupath[menupathindex[menudepthleft]] = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -6674,11 +6748,11 @@ void M_HandleAddons(INT32 choice)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXT_TXT:
|
case EXT_TXT:
|
||||||
M_StartMessage(va("%c%s\x80\nThis file may not be a console script.\nAttempt to run anyways? \n\n(Press A to confirm)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), dirmenu[dir_on[menudepthleft]]+DIR_STRING),FUNCPTRCAST(M_AddonExec),MM_YESNO);
|
M_StartMessage(va("%c%s\x80\nThis file may not be a console script.\nAttempt to run anyways? \n\nPress (A) to confirm or (B) to cancel\n\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), dirmenu[dir_on[menudepthleft]]+DIR_STRING),FUNCPTRCAST(M_AddonExec),MM_YESNO);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXT_CFG:
|
case EXT_CFG:
|
||||||
M_StartMessage(va("%c%s\x80\nThis file may modify your settings.\nAttempt to run anyways? \n\n(Press A to confirm)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), dirmenu[dir_on[menudepthleft]]+DIR_STRING),FUNCPTRCAST(M_AddonExec),MM_YESNO);
|
M_StartMessage(va("%c%s\x80\nThis file may modify your settings.\nAttempt to run anyways? \n\nPress (A) to confirm or (B) to cancel\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), dirmenu[dir_on[menudepthleft]]+DIR_STRING),FUNCPTRCAST(M_AddonExec),MM_YESNO);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXT_LUA:
|
case EXT_LUA:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue