Port Saturn menu additions

This commit is contained in:
NepDisk 2025-06-26 15:54:06 -04:00
parent e450f21ddf
commit e1905d85cf

View file

@ -332,6 +332,9 @@ CV_PossibleValue_t gametype_cons_t[NUMGAMETYPES+1];
consvar_t cv_newgametype = CVAR_INIT ("newgametype", "Race", CV_HIDEN|CV_CALL, gametype_cons_t, Newgametype_OnChange); consvar_t cv_newgametype = CVAR_INIT ("newgametype", "Race", CV_HIDEN|CV_CALL, gametype_cons_t, Newgametype_OnChange);
consvar_t cv_showallmaps = CVAR_INIT ("showallmaps", "No", CV_SAVE, CV_YesNo, NULL);
consvar_t cv_showtrackaddon = CVAR_INIT ("showtrackaddon", "Yes", CV_SAVE, CV_YesNo, NULL);
static CV_PossibleValue_t serversort_cons_t[] = { static CV_PossibleValue_t serversort_cons_t[] = {
{0,"Ping"}, {0,"Ping"},
{1,"Modified State"}, {1,"Modified State"},
@ -1630,6 +1633,19 @@ boolean M_Responder(event_t *ev)
return true; return true;
case KEY_SPACE:
noFurtherInput = true;
if (!item || !item->cvar)
return true;
if (item->cvar == &cv_nextmap)
{
S_StartSound(NULL, sfx_menu1);
COM_ImmedExecute("add kartencore 1");
return true;
}
return true;
case KEY_BACKSPACE: case KEY_BACKSPACE:
if (!item || !item->cvar if (!item || !item->cvar
|| item->cvar == &cv_chooseskin || item->cvar == &cv_chooseskin
@ -2002,6 +2018,9 @@ void M_Init(void)
COM_AddCommand("manual", Command_Manual_f); COM_AddCommand("manual", Command_Manual_f);
CV_RegisterVar(&cv_showallmaps);
CV_RegisterVar(&cv_showtrackaddon);
// Menu hacks // Menu hacks
CV_RegisterVar(&cv_dummymenuplayer); CV_RegisterVar(&cv_dummymenuplayer);
CV_RegisterVar(&cv_dummyteam); CV_RegisterVar(&cv_dummyteam);
@ -2831,17 +2850,17 @@ boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt)
switch (levellistmode) switch (levellistmode)
{ {
case LLM_CREATESERVER: case LLM_CREATESERVER:
// Should the map be hidden?
if (mapheaderinfo[mapnum]->menuflags & LF2_HIDEINMENU && mapnum+1 != gamemap)
return false;
if (M_MapLocked(mapnum+1))
return false; // not unlocked
// Check for TOL // Check for TOL
if (gt >= 0 && !(mapheaderinfo[mapnum]->typeoflevel & G_TOLFlag(gt))) if (gt >= 0 && !(mapheaderinfo[mapnum]->typeoflevel & G_TOLFlag(gt)))
return false; return false;
// Should the map be hidden?
if (mapheaderinfo[mapnum]->menuflags & LF2_HIDEINMENU && mapnum+1 != gamemap)
return cv_showallmaps.value;
if (M_MapLocked(mapnum+1))
return cv_showallmaps.value; // not unlocked
return true; return true;
/*case LLM_LEVELSELECT: /*case LLM_LEVELSELECT:
@ -6401,12 +6420,28 @@ static void M_DrawLevelSelectOnly(INT16 y, boolean selected, boolean leftfade, b
patch_t *PictureOfLevel; patch_t *PictureOfLevel;
INT32 x, w, i, oldval, trans, dupadjust = ((vid.width/vid.dupx) - BASEVIDWIDTH)>>1; INT32 x, w, i, oldval, trans, dupadjust = ((vid.width/vid.dupx) - BASEVIDWIDTH)>>1;
fixed_t scale = M_GetMapThumbnail(cv_nextmap.value-1, &PictureOfLevel)/4; fixed_t scale = M_GetMapThumbnail(cv_nextmap.value-1, &PictureOfLevel)/4;
menuitem_t *item = currentMenu->numitems ? &currentMenu->menuitems[itemOn] : NULL;
w = FixedMul(SHORT(PictureOfLevel->width), scale); w = FixedMul(SHORT(PictureOfLevel->width), scale);
i = FixedMul(SHORT(PictureOfLevel->height), scale); i = FixedMul(SHORT(PictureOfLevel->height), scale);
x = BASEVIDWIDTH/2 - w/2; x = BASEVIDWIDTH/2 - w/2;
y = y + 60 - i; y = y + 60 - i;
if ((levellistmode != LLM_TIMEATTACK) && (item->cvar == &cv_nextmap)) // so it doesent show in record attack menu
{
char encoretoggle[40] = {0};
const char *item1 = gamecontrol[0][gc_fire][0] != 0 ? G_KeynumToString(gamecontrol[0][gc_fire][0]) : NULL;
const char *item2 = gamecontrol[0][gc_fire][1] != 0 ? G_KeynumToString(gamecontrol[0][gc_fire][1]) : NULL;
if (item1 != NULL && item2 != NULL)
snprintf(encoretoggle, 40, "%s/%s - Toggle Encore: %s", item1, item2, cv_kartencore.string);
else
snprintf(encoretoggle, 40, "%s - Toggle Encore: %s", item1 != NULL ? item1 : item2 != NULL ? item2 : "Item", cv_kartencore.string);
V_DrawThinString(1, BASEVIDHEIGHT-8-1, V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_TRANSLUCENT|V_ALLOWLOWERCASE, encoretoggle);
}
if (selected && skullAnimCounter < 4) if (selected && skullAnimCounter < 4)
trans = 0; trans = 0;
else else
@ -6414,6 +6449,21 @@ static void M_DrawLevelSelectOnly(INT16 y, boolean selected, boolean leftfade, b
V_DrawFill(x-1, y-1, w+2, i+2, trans); // variable reuse... V_DrawFill(x-1, y-1, w+2, i+2, trans); // variable reuse...
if (cv_nextmap.value && cv_showtrackaddon.value)
{
char *addonname = wadfiles[WADFILENUM(mapheaderinfo[cv_nextmap.value-1]->lumpnum)]->filename;
INT32 len;
INT32 charlimit = 21 + (dupadjust/5);
nameonly(addonname);
len = strlen(addonname);
#define charsonside 14
if (len > charlimit)
V_DrawThinString(x+w+5, y+i-8, V_TRANSLUCENT|MENUCAPS, va("%.*s...%s", charsonside, addonname, addonname+((len-charlimit) + charsonside))); // variable reuse...
#undef charsonside
else
V_DrawThinString(x+w+5, y+i-8, V_TRANSLUCENT|MENUCAPS, addonname); // variable reuse...
}
if ((cv_kartencore.value != 1) || gamestate == GS_TIMEATTACK || cv_newgametype.value != GT_RACE) if ((cv_kartencore.value != 1) || gamestate == GS_TIMEATTACK || cv_newgametype.value != GT_RACE)
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, scale, 0, PictureOfLevel, NULL); V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, scale, 0, PictureOfLevel, NULL);
else else