diff --git a/src/k_menu.h b/src/k_menu.h index 063bb5a5b..3adbf25de 100644 --- a/src/k_menu.h +++ b/src/k_menu.h @@ -650,6 +650,7 @@ struct setup_player_t UINT16 color; UINT8 mdepth; boolean hitlag; + boolean showextra; // Hack, save player 1's original device even if they init charsel with keyboard. // If they play ALONE, allow them to retain that original device, otherwise, ignore this. diff --git a/src/k_menudraw.c b/src/k_menudraw.c index b71179ede..735f82134 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -1366,16 +1366,19 @@ static void M_DrawCharSelectPreview(UINT8 num) M_DrawCharSelectCircle(p, x+32, y+64); } - V_DrawScaledPatch(x+9, y+2, 0, W_CachePatchName("FILEBACK", PU_CACHE)); - V_DrawScaledPatch(x, y+2, 0, W_CachePatchName(va("CHARSEL%c", letter), PU_CACHE)); - if (p->mdepth > CSSTEP_PROFILE) + if (p->showextra == false) { - profile_t *pr = PR_GetProfile(p->profilen); - V_DrawCenteredFileString(x+16+18, y+2, 0, pr->profilename); - } - else - { - V_DrawFileString(x+16, y+2, 0, "PLAYER"); + V_DrawScaledPatch(x+9, y+2, 0, W_CachePatchName("FILEBACK", PU_CACHE)); + V_DrawScaledPatch(x, y+2, 0, W_CachePatchName(va("CHARSEL%c", letter), PU_CACHE)); + if (p->mdepth > CSSTEP_PROFILE) + { + profile_t *pr = PR_GetProfile(p->profilen); + V_DrawCenteredFileString(x+16+18, y+2, 0, pr->profilename); + } + else + { + V_DrawFileString(x+16, y+2, 0, "PLAYER"); + } } if (p->mdepth >= CSSTEP_FOLLOWER) @@ -1474,6 +1477,82 @@ static void M_DrawCharSelectPreview(UINT8 num) V_DrawThinString(xpos+16, cy, (p->changeselect == i ? highlightflags : 0)|V_6WIDTHSPACE, choices[i]); } } + + if (p->showextra == true) + { + switch (p->mdepth) + { + case CSSTEP_CHARS: // Character Select grid + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("Speed %u - Weight %u", p->gridx+1, p->gridy+1)); + break; + case CSSTEP_ALTS: // Select clone + case CSSTEP_READY: + if (p->clonenum < setup_chargrid[p->gridx][p->gridy].numskins + && setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum] < numskins) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, + skins[setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum]].name); + } + else + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD CLONENUM %u", p->clonenum)); + } + break; + case CSSTEP_COLORS: // Select color + if (p->color < numskincolors) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, skincolors[p->color].name); + } + else + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD COLOR %u", p->color)); + } + break; + case CSSTEP_FOLLOWERCATEGORY: + if (p->followercategory == -1) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "None"); + } + else + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, + followercategories[setup_followercategories[p->followercategory][1]].name); + } + break; + case CSSTEP_FOLLOWER: + if (p->followern == -1) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "None"); + } + else + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, + followers[p->followern].name); + } + break; + case CSSTEP_FOLLOWERCOLORS: + if (p->followercolor == FOLLOWERCOLOR_MATCH) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "Match"); + } + else if (p->followercolor == FOLLOWERCOLOR_OPPOSITE) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "Opposite"); + } + else if (p->followercolor < numskincolors) + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, skincolors[p->followercolor].name); + } + else + { + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD FOLLOWERCOLOR %u", p->followercolor)); + } + break; + default: + V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "[extrainfo mode]"); + break; + } + } } static void M_DrawCharSelectExplosions(boolean charsel, INT16 basex, INT16 basey) diff --git a/src/menus/play-char-select.c b/src/menus/play-char-select.c index 19160c5c7..a6ac59d1a 100644 --- a/src/menus/play-char-select.c +++ b/src/menus/play-char-select.c @@ -905,16 +905,6 @@ static boolean M_HandleCharacterGrid(setup_player_t *p, UINT8 num) if (num == 0 && setup_numplayers == 1 && setup_maxpage && !forceskin) // ONLY one player. { if (M_MenuButtonPressed(num, MBT_L)) - { - if (setup_page == 0) - setup_page = setup_maxpage; - else - setup_page--; - - S_StartSound(NULL, sfx_s3k63); - M_SetMenuDelay(num); - } - else if (M_MenuButtonPressed(num, MBT_R)) { if (setup_page == setup_maxpage) setup_page = 0; @@ -1295,6 +1285,11 @@ boolean M_CharacterSelectHandler(INT32 choice) if (i > 0 && setup_player[i-1].mdepth < CSSTEP_READY) continue; } + + if (M_MenuButtonPressed(i, MBT_R)) + { + p->showextra ^= true; + } } switch (p->mdepth)