`[22:03] TehRealSalt: Not organized code-wise, figured toaster would want to help with that since she's the Menu Queen and she probably has better ideas on how to do it`

The Menu Queen is in the house~ 

* Magical, single-page player select and general netgamey stuff, while still remaining both pretty and functional.
* Death to NOFOURPLAYER, now that the cat's out the bag.
* Clean up NONET, assuming people try to make DD builds on release.
* Minor tweaks across the board, mostly places where I wanted to pilfer minor code from and realised it wasn't done optimally originally.
This commit is contained in:
toaster 2018-10-16 22:11:47 +01:00
parent 35528276d2
commit b34cbe4032
1 changed files with 198 additions and 175 deletions

View File

@ -247,7 +247,6 @@ static void M_ConfirmSpectateChange(INT32 choice);
static void M_SetupChoosePlayer(INT32 choice);
static void M_QuitSRB2(INT32 choice);
menu_t SP_MainDef, MP_MainDef, OP_MainDef;
menu_t MP_SetPlayersDef;
menu_t MISC_ScrambleTeamDef, MISC_ChangeTeamDef, MISC_ChangeSpectateDef;
// Single Player
@ -282,33 +281,27 @@ static void M_ChooseRoom(INT32 choice);
#endif
static void M_SetupMultiPlayer(INT32 choice);
static void M_SetupMultiPlayer2(INT32 choice);
#ifndef NOFOURPLAYER
static void M_SetupMultiPlayer3(INT32 choice);
static void M_SetupMultiPlayer4(INT32 choice);
#endif
static void M_SetupMultiHandler(INT32 choice);
// Options
// Split into multiple parts due to size
// Controls
menu_t OP_ControlsDef, OP_AllControlsDef;
menu_t OP_MouseOptionsDef, OP_Mouse2OptionsDef;
menu_t OP_Joystick1Def, OP_Joystick2Def;
#ifndef NOFOURPLAYER
menu_t OP_Joystick3Def, OP_Joystick4Def;
#endif
menu_t OP_Joystick1Def, OP_Joystick2Def, OP_Joystick3Def, OP_Joystick4Def;
static void M_VideoModeMenu(INT32 choice);
static void M_Setup1PControlsMenu(INT32 choice);
static void M_Setup2PControlsMenu(INT32 choice);
#ifndef NOFOURPLAYER
static void M_Setup3PControlsMenu(INT32 choice);
static void M_Setup4PControlsMenu(INT32 choice);
#endif
static void M_Setup1PJoystickMenu(INT32 choice);
static void M_Setup2PJoystickMenu(INT32 choice);
#ifndef NOFOURPLAYER
static void M_Setup3PJoystickMenu(INT32 choice);
static void M_Setup4PJoystickMenu(INT32 choice);
#endif
static void M_AssignJoystick(INT32 choice);
static void M_ChangeControl(INT32 choice);
@ -363,9 +356,9 @@ static void M_DrawMonitorToggles(void);
static void M_OGL_DrawFogMenu(void);
static void M_OGL_DrawColorMenu(void);
#endif
static void M_DrawMPMainMenu(void);
#ifndef NONET
static void M_DrawConnectMenu(void);
static void M_DrawMPMainMenu(void);
static void M_DrawRoomMenu(void);
#endif
static void M_DrawJoystick(void);
@ -463,11 +456,9 @@ consvar_t cv_ghost_staff = {"ghost_staff", "Show", CV_SAVE, ghost2_cons_
//Console variables used solely in the menu system.
//todo: add a way to use non-console variables in the menu
// or make these consvars legitimate like color or skin.
#ifndef NOFOURPLAYER
static void Splitplayers_OnChange(void);
CV_PossibleValue_t splitplayers_cons_t[] = {{1, "One"}, {2, "Two"}, {3, "Three"}, {4, "Four"}, {0, NULL}};
consvar_t cv_splitplayers = {"splitplayers", "One", CV_CALL, splitplayers_cons_t, Splitplayers_OnChange, 0, NULL, NULL, 0, 0, NULL};
#endif
static CV_PossibleValue_t dummymenuplayer_cons_t[] = {{0, "NOPE"}, {1, "P1"}, {2, "P2"}, {3, "P3"}, {4, "P4"}, {0, NULL}};
static CV_PossibleValue_t dummyteam_cons_t[] = {{0, "Spectator"}, {1, "Red"}, {2, "Blue"}, {0, NULL}};
@ -506,7 +497,7 @@ static menuitem_t MainMenu[] =
{
{IT_SUBMENU|IT_STRING, NULL, "Extras", &SR_UnlockChecklistDef, 76},
{IT_CALL |IT_STRING, NULL, "1 Player", M_SinglePlayerMenu, 84},
{IT_SUBMENU|IT_STRING, NULL, "Multiplayer", &MP_SetPlayersDef, 92},
{IT_SUBMENU|IT_STRING, NULL, "Multiplayer", &MP_MainDef, 92},
{IT_CALL |IT_STRING, NULL, "Options", M_Options, 100},
{IT_CALL |IT_STRING, NULL, "Addons", M_Addons, 108},
{IT_CALL |IT_STRING, NULL, "Quit Game", M_QuitSRB2, 116},
@ -556,10 +547,8 @@ static menuitem_t MPauseMenu[] =
{IT_CALL | IT_STRING, NULL, "Continue", M_SelectableClearMenus,40},
{IT_CALL | IT_STRING, NULL, "P1 Setup...", M_SetupMultiPlayer, 48}, // splitscreen
{IT_CALL | IT_STRING, NULL, "P2 Setup...", M_SetupMultiPlayer2, 56}, // splitscreen
#ifndef NOFOURPLAYER
{IT_CALL | IT_STRING, NULL, "P3 Setup...", M_SetupMultiPlayer3, 64}, // splitscreen
{IT_CALL | IT_STRING, NULL, "P4 Setup...", M_SetupMultiPlayer4, 72}, // splitscreen
#endif
{IT_STRING | IT_CALL, NULL, "Spectate", M_ConfirmSpectate, 48}, // alone
{IT_STRING | IT_CALL, NULL, "Enter Game", M_ConfirmEnterGame, 48}, // alone
@ -582,10 +571,9 @@ typedef enum
mpause_continue,
mpause_psetupsplit,
mpause_psetupsplit2,
#ifndef NOFOURPLAYER
mpause_psetupsplit3,
mpause_psetupsplit4,
#endif
mpause_spectate,
mpause_entergame,
mpause_canceljoin,
@ -959,48 +947,40 @@ menuitem_t PlayerMenu[32] =
// -----------------------------------
// Prefix: MP_
#ifndef NONET
// Set number of players first!
static menuitem_t MP_SetPlayersMenu[] =
{
#ifndef NOFOURPLAYER
{IT_STRING|IT_CVAR, NULL, "Number of players", &cv_splitplayers, 10},
#endif
#ifdef NOFOURPLAYER
{IT_STRING|IT_CALL, NULL, "P1 Setup...", M_SetupMultiPlayer, 90},
{IT_STRING|IT_CALL, NULL, "P2 Setup... ", M_SetupMultiPlayer2, 100},
#else
{IT_STRING|IT_CALL, NULL, "P1 Setup...", M_SetupMultiPlayer, 80},
{IT_STRING|IT_CALL, NULL, "P2 Setup... ", M_SetupMultiPlayer2, 90},
{IT_GRAYEDOUT, NULL, "P3 Setup...", M_SetupMultiPlayer3, 100},
{IT_GRAYEDOUT, NULL, "P4 Setup... ", M_SetupMultiPlayer4, 110},
#endif
{IT_SUBMENU|IT_STRING, NULL, "Next...", &MP_MainDef, 130},
};
static menuitem_t MP_MainMenu[] =
{
{IT_HEADER, NULL, "Host a game", NULL, 0},
{IT_STRING|IT_CALL, NULL, "Internet/LAN...", M_StartServerMenu, 10},
{IT_STRING|IT_CALL, NULL, "Offline...", M_StartOfflineServerMenu, 18},
{IT_HEADER, NULL, "Join a game", NULL, 32},
{IT_STRING|IT_CALL, NULL, "Internet server browser...",M_ConnectMenu, 42},
{IT_STRING|IT_KEYHANDLER, NULL, "Specify IPv4 address:", M_HandleConnectIP, 50},
{IT_HEADER, NULL, "Players", NULL, 0},
{IT_STRING|IT_CVAR, NULL, "Number of local players", &cv_splitplayers, 10},
{IT_STRING|IT_KEYHANDLER,NULL, "Player setup...", M_SetupMultiHandler,18},
{IT_HEADER, NULL, "Host a game", NULL, 100-24},
#ifndef NONET
{IT_STRING|IT_CALL, NULL, "Internet/LAN...", M_StartServerMenu, 110-24},
#else
{IT_GRAYEDOUT, NULL, "Internet/LAN...", NULL, 110-24},
#endif
{IT_STRING|IT_CALL, NULL, "Offline...", M_StartOfflineServerMenu, 118-24},
{IT_HEADER, NULL, "Join a game", NULL, 132-24},
#ifndef NONET
{IT_STRING|IT_CALL, NULL, "Internet server browser...",M_ConnectMenu, 142-24},
{IT_STRING|IT_KEYHANDLER, NULL, "Specify IPv4 address:", M_HandleConnectIP, 150-24},
#else
{IT_GRAYEDOUT, NULL, "Internet server browser...",M_ConnectMenu, 142-24},
{IT_GRAYEDOUT, NULL, "Specify IPv4 address:", M_HandleConnectIP, 150-24},
#endif
//{IT_HEADER, NULL, "Player setup", NULL, 80},
//{IT_STRING|IT_CALL, NULL, "Name, character, color...", M_SetupMultiPlayer, 90},
};
#endif
#ifndef NONET
static menuitem_t MP_ServerMenu[] =
{
{IT_STRING|IT_CVAR, NULL, "Max. Player Count", &cv_maxplayers, 10},
#ifndef NONET
{IT_STRING|IT_CALL, NULL, "Room...", M_RoomMenu, 20},
{IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Server Name", &cv_servername, 30},
#endif
{IT_STRING|IT_CVAR, NULL, "Game Type", &cv_newgametype, 68},
{IT_STRING|IT_CVAR, NULL, "Level", &cv_nextmap, 78},
@ -1008,6 +988,8 @@ static menuitem_t MP_ServerMenu[] =
{IT_WHITESTRING|IT_CALL, NULL, "Start", M_StartServer, 130},
};
#endif
// Separated offline and normal servers.
static menuitem_t MP_OfflineServerMenu[] =
{
@ -1017,22 +999,6 @@ static menuitem_t MP_OfflineServerMenu[] =
{IT_WHITESTRING|IT_CALL, NULL, "Start", M_StartServer, 130},
};
#ifndef NOFOURPLAYER
static void Splitplayers_OnChange(void)
{
UINT8 i = 1; // player 1 is the last unchanging setup
while (i < 4)
{
if (i < cv_splitplayers.value)
MP_SetPlayersMenu[i+1].status = IT_STRING|IT_CALL;
else
MP_SetPlayersMenu[i+1].status = IT_GRAYEDOUT;
i++;
}
}
#endif
static menuitem_t MP_PlayerSetupMenu[] =
{
{IT_KEYHANDLER | IT_STRING, NULL, "Name", M_HandleSetupMultiPlayer, 0},
@ -1121,14 +1087,10 @@ static menuitem_t OP_ControlsMenu[] =
{IT_CALL | IT_STRING, NULL, "Player 1 Controls...", M_Setup1PControlsMenu, 10},
{IT_CALL | IT_STRING, NULL, "Player 2 Controls...", M_Setup2PControlsMenu, 20},
#ifdef NOFOURPLAYER
{IT_STRING | IT_CVAR, NULL, "Controls per key", &cv_controlperkey, 40},
#else
{IT_CALL | IT_STRING, NULL, "Player 3 Controls...", &M_Setup3PControlsMenu, 30},
{IT_CALL | IT_STRING, NULL, "Player 4 Controls...", &M_Setup4PControlsMenu, 40},
{IT_STRING | IT_CVAR, NULL, "Controls per key", &cv_controlperkey, 60},
#endif
};
static menuitem_t OP_AllControlsMenu[] =
@ -1196,7 +1158,6 @@ static menuitem_t OP_Joystick2Menu[] =
{IT_STRING | IT_CVAR, NULL, "Look Up/Down" , &cv_lookaxis2 , 90},
};
#ifndef NOFOURPLAYER
static menuitem_t OP_Joystick3Menu[] =
{
{IT_STRING | IT_CALL, NULL, "Select Gamepad..." , M_Setup3PJoystickMenu, 10},
@ -1220,7 +1181,6 @@ static menuitem_t OP_Joystick4Menu[] =
{IT_STRING | IT_CVAR, NULL, "Use Item" , &cv_fireaxis4 , 80},
{IT_STRING | IT_CVAR, NULL, "Look Up/Down" , &cv_lookaxis4 , 90},
};
#endif
static menuitem_t OP_JoystickSetMenu[] =
{
@ -1871,17 +1831,16 @@ menu_t MP_MainDef =
{
"M_MULTI",
sizeof (MP_MainMenu)/sizeof (menuitem_t),
&MP_SetPlayersDef,
&MainDef,
MP_MainMenu,
M_DrawMPMainMenu,
42, 50,
42, 30,
0,
M_CancelConnect
};
menu_t MP_ServerDef = MAPICONMENUSTYLE("M_MULTI", MP_ServerMenu, &MP_MainDef);
#endif
menu_t MP_OfflineServerDef = MAPICONMENUSTYLE("M_MULTI", MP_OfflineServerMenu, &MP_MainDef);
menu_t MP_SetPlayersDef = MAPICONMENUSTYLE("M_MULTI", MP_SetPlayersMenu, &MainDef);
#ifndef NONET
menu_t MP_ConnectDef =
{
@ -1935,10 +1894,8 @@ menu_t OP_ControlsDef = DEFAULTMENUSTYLE("M_CONTRO", OP_ControlsMenu, &OP_MainDe
menu_t OP_AllControlsDef = CONTROLMENUSTYLE(OP_AllControlsMenu, &OP_ControlsDef);
menu_t OP_Joystick1Def = DEFAULTMENUSTYLE("M_CONTRO", OP_Joystick1Menu, &OP_AllControlsDef, 60, 30);
menu_t OP_Joystick2Def = DEFAULTMENUSTYLE("M_CONTRO", OP_Joystick2Menu, &OP_AllControlsDef, 60, 30);
#ifndef NOFOURPLAYER
menu_t OP_Joystick3Def = DEFAULTMENUSTYLE("M_CONTRO", OP_Joystick3Menu, &OP_AllControlsDef, 60, 30);
menu_t OP_Joystick4Def = DEFAULTMENUSTYLE("M_CONTRO", OP_Joystick4Menu, &OP_AllControlsDef, 60, 30);
#endif
menu_t OP_JoystickSetDef =
{
"M_CONTRO",
@ -2943,10 +2900,8 @@ void M_StartControlPanel(void)
MPauseMenu[mpause_scramble].status = IT_DISABLED;
MPauseMenu[mpause_psetupsplit].status = IT_DISABLED;
MPauseMenu[mpause_psetupsplit2].status = IT_DISABLED;
#ifndef NOFOURPLAYER
MPauseMenu[mpause_psetupsplit3].status = IT_DISABLED;
MPauseMenu[mpause_psetupsplit4].status = IT_DISABLED;
#endif
MPauseMenu[mpause_spectate].status = IT_DISABLED;
MPauseMenu[mpause_entergame].status = IT_DISABLED;
MPauseMenu[mpause_canceljoin].status = IT_DISABLED;
@ -2996,7 +2951,6 @@ void M_StartControlPanel(void)
}
}
#ifndef NOFOURPLAYER
if (splitscreen > 1)
{
MPauseMenu[mpause_psetupsplit3].status = IT_STRING | IT_CALL;
@ -3013,7 +2967,6 @@ void M_StartControlPanel(void)
MPauseMenu[mpause_quit].alphaKey += 8;
}
}
#endif
}
else
{
@ -3138,9 +3091,7 @@ void M_Init(void)
return;
// Menu hacks
#ifndef NOFOURPLAYER
CV_RegisterVar(&cv_splitplayers);
#endif
CV_RegisterVar(&cv_dummymenuplayer);
CV_RegisterVar(&cv_dummyteam);
CV_RegisterVar(&cv_dummyspectate);
@ -6307,7 +6258,7 @@ static void M_DrawStatsMaps(int location)
bottomarrow:
if (dobottomarrow)
V_DrawCharacter(10, y-8 + (skullAnimCounter/5),
'\x1B' | highlightflags, false); // up arrow
'\x1B' | highlightflags, false); // down arrow
}
static void M_DrawLevelStats(void)
@ -7435,12 +7386,7 @@ static INT32 M_FindFirstMap(INT32 gtype)
static void M_StartServer(INT32 choice)
{
UINT8 ssplayers =
#ifdef NOFOURPLAYER
1;
#else
cv_splitplayers.value-1;
#endif
UINT8 ssplayers = cv_splitplayers.value-1;
(void)choice;
@ -7617,8 +7563,7 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
static void M_DrawServerMenu(void)
{
if (currentMenu != &MP_SetPlayersDef)
M_DrawLevelSelectOnly(false, false);
M_DrawLevelSelectOnly(false, false);
M_DrawGenericMenu();
#ifndef NONET
@ -7634,68 +7579,7 @@ static void M_DrawServerMenu(void)
highlightflags, room_list[menuRoomIndex].name);
#undef mp_server_room
}
else
#endif
if (currentMenu == &MP_SetPlayersDef)
// character bar, ripped off the color bar :V
{
#define iconwidth 32
#define spacingwidth 32
#define incrwidth (iconwidth + spacingwidth)
UINT8 i = 0, pskin, pcol;
// player arrangement width, but there's also a chance i'm a furry, shhhhhh
const INT32 paw = iconwidth +
#ifndef NOFOURPLAYER
3*
#endif
incrwidth;
INT32 x = BASEVIDWIDTH/2 - paw/2, y = currentMenu->y + 27, trans = 0;
patch_t *face;
while (++i <=
#ifdef NOFOURPLAYER
2
#else
4
#endif
)
{
switch (i)
{
default:
pskin = R_SkinAvailable(cv_skin.string);
pcol = cv_playercolor.value;
break;
case 2:
pskin = R_SkinAvailable(cv_skin2.string);
pcol = cv_playercolor2.value;
break;
case 3:
pskin = R_SkinAvailable(cv_skin3.string);
pcol = cv_playercolor3.value;
break;
case 4:
pskin = R_SkinAvailable(cv_skin4.string);
pcol = cv_playercolor4.value;
break;
}
if (pskin >= MAXSKINS)
pskin = 0;
#ifndef NOFOURPLAYER
if (!trans && i > cv_splitplayers.value)
trans = V_TRANSLUCENT;
#endif
face = W_CachePatchName(skins[pskin].face, PU_CACHE);
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT, trans, face, R_GetTranslationColormap(pskin, pcol, 0));
x += incrwidth;
}
#undef incrwidth
#undef spacingwidth
#undef iconwidth
}
}
static void M_MapChange(INT32 choice)
@ -7735,6 +7619,8 @@ static void M_StartServerMenu(INT32 choice)
// ==============
static char setupm_ip[16];
#endif
static UINT8 setupm_pselect = 1;
// Draw the funky Connect IP menu. Tails 11-19-2002
// So much work for such a little thing!
@ -7746,23 +7632,21 @@ static void M_DrawMPMainMenu(void)
// use generic drawer for cursor, items and title
M_DrawGenericMenu();
#if MAXPLAYERS == 16
V_DrawRightAlignedString(BASEVIDWIDTH-x, y+MP_MainMenu[1].alphaKey,
((itemOn == 1) ? highlightflags : 0), "(2-16 players)");
#else
#ifndef NONET
#if MAXPLAYERS != 16
Update the maxplayers label...
#endif
V_DrawRightAlignedString(BASEVIDWIDTH-x, y+MP_MainMenu[2].alphaKey,
((itemOn == 2) ? highlightflags : 0),
#ifdef NOFOURPLAYER
"(2 players)"
#else
"(2-4 players)"
V_DrawRightAlignedString(BASEVIDWIDTH-x, y+MP_MainMenu[4].alphaKey,
((itemOn == 4) ? highlightflags : 0), "(2-16 players)");
#endif
V_DrawRightAlignedString(BASEVIDWIDTH-x, y+MP_MainMenu[5].alphaKey,
((itemOn == 5) ? highlightflags : 0),
"(2-4 players)"
);
y += MP_MainMenu[5].alphaKey;
#ifndef NONET
y += MP_MainMenu[8].alphaKey;
V_DrawFill(x+5, y+4+5, /*16*8 + 6,*/ BASEVIDWIDTH - 2*(x+5), 8+6, 239);
@ -7770,11 +7654,152 @@ Update the maxplayers label...
V_DrawString(x+8,y+12, V_MONOSPACE, setupm_ip);
// draw text cursor for name
if (itemOn == 5
if (itemOn == 8
&& skullAnimCounter < 4) //blink cursor
V_DrawCharacter(x+8+V_StringWidth(setupm_ip, V_MONOSPACE),y+12,'_',false);
#endif
// character bar, ripped off the color bar :V
{
#define iconwidth 32
#define spacingwidth 32
#define incrwidth (iconwidth + spacingwidth)
UINT8 i = 0, pskin, pcol;
// player arrangement width, but there's also a chance i'm a furry, shhhhhh
const INT32 paw = iconwidth + 3*incrwidth;
INT32 trans = 0;
patch_t *face;
UINT8 *colmap;
x = BASEVIDWIDTH/2 - paw/2;
y = currentMenu->y + 32;
while (++i <= 4)
{
switch (i)
{
default:
pskin = R_SkinAvailable(cv_skin.string);
pcol = cv_playercolor.value;
break;
case 2:
pskin = R_SkinAvailable(cv_skin2.string);
pcol = cv_playercolor2.value;
break;
case 3:
pskin = R_SkinAvailable(cv_skin3.string);
pcol = cv_playercolor3.value;
break;
case 4:
pskin = R_SkinAvailable(cv_skin4.string);
pcol = cv_playercolor4.value;
break;
}
if (pskin >= MAXSKINS)
pskin = 0;
if (!trans && i > cv_splitplayers.value)
trans = V_TRANSLUCENT;
colmap = R_GetTranslationColormap(pskin, pcol, 0);
face = W_CachePatchName(skins[pskin].face, PU_CACHE);
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT, trans, face, colmap);
if (itemOn == 2 && i == setupm_pselect)
{
/*V_DrawCharacter(x + 12, y-4 + (skullAnimCounter/5),
'\x1B' | highlightflags, false); // down arrow*/
face = W_CachePatchName("K_CHRCUR", PU_CACHE);
V_DrawFixedPatch((x-2)<<FRACBITS, (y-2)<<FRACBITS, FRACUNIT, 0, face, colmap);
}
x += incrwidth;
}
#undef incrwidth
#undef spacingwidth
#undef iconwidth
}
}
static void Splitplayers_OnChange(void)
{
if (cv_splitplayers.value < setupm_pselect)
setupm_pselect = 1;
}
static void M_SetupMultiHandler(INT32 choice)
{
boolean exitmenu = false; // exit to previous menu and send name change
switch (choice)
{
case KEY_LEFTARROW:
if (cv_splitplayers.value > 1)
{
if (--setupm_pselect < 1)
setupm_pselect = cv_splitplayers.value;
S_StartSound(NULL,sfx_menu1); // Tails
}
break;
case KEY_RIGHTARROW:
if (cv_splitplayers.value > 1)
{
if (++setupm_pselect > cv_splitplayers.value)
setupm_pselect = 1;
S_StartSound(NULL,sfx_menu1); // Tails
}
break;
case KEY_DOWNARROW:
M_NextOpt();
S_StartSound(NULL,sfx_menu1); // Tails
break;
case KEY_UPARROW:
M_PrevOpt();
S_StartSound(NULL,sfx_menu1); // Tails
break;
case KEY_ENTER:
{
S_StartSound(NULL,sfx_menu1); // Tails
currentMenu->lastOn = itemOn;
switch (setupm_pselect)
{
case 2:
M_SetupMultiPlayer2(0);
return;
case 3:
M_SetupMultiPlayer3(0);
return;
case 4:
M_SetupMultiPlayer4(0);
return;
default:
M_SetupMultiPlayer(0);
return;
}
break;
}
case KEY_ESCAPE:
exitmenu = true;
break;
}
if (exitmenu)
{
if (currentMenu->prevMenu)
M_SetupNextMenu (currentMenu->prevMenu);
else
M_ClearMenus(true);
}
}
#ifndef NONET
// Tails 11-19-2002
static void M_ConnectIP(INT32 choice)
{
@ -8026,6 +8051,7 @@ static void M_DrawSetupMultiPlayerMenu(void)
INT32 offx = 8, offy = 8;
patch_t *cursor = W_CachePatchName("K_CHRCUR", PU_CACHE);
patch_t *face;
UINT8 *colmap;
if (col < 0)
col += numskins;
@ -8044,9 +8070,10 @@ static void M_DrawSetupMultiPlayerMenu(void)
offy = 8;
}
face = W_CachePatchName(skins[col].face, PU_CACHE);
V_DrawFixedPatch((x+offx)<<FRACBITS, (my+28+offy)<<FRACBITS, scale, 0, face, R_GetTranslationColormap(col, setupm_fakecolor, 0));
colmap = R_GetTranslationColormap(col, setupm_fakecolor, 0);
V_DrawFixedPatch((x+offx)<<FRACBITS, (my+28+offy)<<FRACBITS, scale, 0, face, colmap);
if (scale == FRACUNIT) // bit of a hack
V_DrawFixedPatch((x-2+offx)<<FRACBITS, (my+26+offy)<<FRACBITS, scale, 0, cursor, R_GetTranslationColormap(col, setupm_fakecolor, 0));
V_DrawFixedPatch((x-2+offx)<<FRACBITS, (my+26+offy)<<FRACBITS, scale, 0, cursor, colmap);
if (++col >= numskins)
col -= numskins;
x += FixedMul(iconwidth<<FRACBITS, 3*scale/2)/FRACUNIT;
@ -8278,7 +8305,6 @@ static void M_SetupMultiPlayer2(INT32 choice)
M_SetupNextMenu(&MP_PlayerSetupDef);
}
#ifndef NOFOURPLAYER
// start the multiplayer setup menu, for third player (splitscreen mode)
static void M_SetupMultiPlayer3(INT32 choice)
{
@ -8340,7 +8366,6 @@ static void M_SetupMultiPlayer4(INT32 choice)
MP_PlayerSetupDef.prevMenu = currentMenu;
M_SetupNextMenu(&MP_PlayerSetupDef);
}
#endif
static boolean M_QuitMultiPlayerMenu(void)
{
@ -8475,7 +8500,6 @@ static void M_Setup2PJoystickMenu(INT32 choice)
M_SetupJoystickMenu(choice);
}
#ifndef NOFOURPLAYER
static void M_Setup3PJoystickMenu(INT32 choice)
{
setupcontrols_thirdplayer = true;
@ -8491,7 +8515,6 @@ static void M_Setup4PJoystickMenu(INT32 choice)
OP_JoystickSetDef.prevMenu = &OP_Joystick4Def;
M_SetupJoystickMenu(choice);
}
#endif
static void M_AssignJoystick(INT32 choice)
{
@ -8574,7 +8597,6 @@ static void M_Setup2PControlsMenu(INT32 choice)
M_SetupNextMenu(&OP_AllControlsDef);
}
#ifndef NOFOURPLAYER
static void M_Setup3PControlsMenu(INT32 choice)
{
(void)choice;
@ -8640,7 +8662,6 @@ static void M_Setup4PControlsMenu(INT32 choice)
M_SetupNextMenu(&OP_AllControlsDef);
}
#endif
#define controlheight 18
@ -8705,9 +8726,11 @@ static void M_DrawControl(void)
"\x86""Press ""\x82""ENTER""\x86"" to change, ""\x82""BACKSPACE""\x86"" to clear"))));
if (i)
V_DrawString(currentMenu->x - 16, y-(skullAnimCounter/5), highlightflags, "\x1A"); // up arrow
V_DrawCharacter(currentMenu->x - 16, y-(skullAnimCounter/5),
'\x1A' | highlightflags, false); // up arrow
if (max != currentMenu->numitems)
V_DrawString(currentMenu->x - 16, y+(SMALLLINEHEIGHT*(controlheight-1))+(skullAnimCounter/5), highlightflags, "\x1B"); // down arrow
V_DrawCharacter(currentMenu->x - 16, y+(SMALLLINEHEIGHT*(controlheight-1))+(skullAnimCounter/5) + (skullAnimCounter/5),
'\x1B' | highlightflags, false); // down arrow
for (; i < max; i++)
{