From e2ca5b53a1c1d7a48b60f80ad0ba2469a44ea1e3 Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sat, 29 Apr 2017 16:40:07 +0100 Subject: [PATCH] Bonk. Thanks be to MI. https://cdn.discordapp.com/attachments/293238104096112641/309777511871545354/srb20006.png --- src/m_menu.c | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 827915b52..56745fa98 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3995,7 +3995,7 @@ static void M_HandleLevelPlatter(INT32 choice) static void M_DrawLevelPlatterHeader(INT32 y, const char *header, boolean headerhighlight) { y += lsheadingheight - 12; - V_DrawString(19, y, (headerhighlight ? V_YELLOWMAP : 0), header); + V_DrawString(19, y, V_ALLOWLOWERCASE|(headerhighlight ? V_YELLOWMAP : 0), header); y += 9; if ((y >= 0) && (y < 200)) { @@ -4530,14 +4530,36 @@ static void M_DrawTemperature(INT32 x, fixed_t t) #undef h #undef NUMCOLOURS -// returns whether to stop addons draw and go to message draw (true), or not (false) +static char *M_AddonsHeaderPath(void) +{ + UINT32 len; + static char header[1024]; + + if (menupath[0] == '.') + strlcpy(header, va("SRB2 folder%s", menupath+1), 1024); + else + strcpy(header, menupath); + + len = strlen(header); + if (len > 35) + { + len = len-35; + header[len] = header[len+1] = header[len+2] = '.'; + } + else + len = 0; + + return header+len; +} + +// returns whether to do message draw static boolean M_AddonsRefresh(void) { if ((refreshdirmenu & REFRESHDIR_NORMAL) && !preparefilemenu(true)) { S_StartSound(NULL, sfx_lose); M_SetupNextMenu(MISC_AddonsDef.prevMenu); - M_StartMessage(va("\x82%s\x80\nThis folder no longer exists!\nAborting to main menu.\n\n(Press a key)\n", menupath),NULL,MM_NOTHING); + 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); return true; } @@ -4583,13 +4605,13 @@ static void M_DrawAddons(void) x = FRACUNIT; V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-8, V_TRANSLUCENT, va("%d%%", (100*x)>>FRACBITS)); - M_DrawTemperature(BASEVIDWIDTH - 10, x); + M_DrawTemperature(BASEVIDWIDTH - 12, x); // DRAW MENU x = currentMenu->x; y = currentMenu->y; - M_DrawLevelPlatterHeader(y - 16, menupath, true); + M_DrawLevelPlatterHeader(y - 16, M_AddonsHeaderPath(), true); // get bottom... max = dir_on[menudepthleft] + 5; @@ -4612,12 +4634,10 @@ static void M_DrawAddons(void) for (; i < max; i++) { - UINT32 flags = 0; + UINT32 flags = V_ALLOWLOWERCASE; if (y > BASEVIDHEIGHT) break; if (dirmenu[i]) { - if ((UINT8)(dirmenu[i][DIR_TYPE]) != EXT_UP) - flags = V_ALLOWLOWERCASE; if (dirmenu[i][DIR_TYPE] & EXT_LOADED) flags |= V_TRANSLUCENT; @@ -4632,7 +4652,7 @@ static void M_DrawAddons(void) V_DrawSmallScaledPatch(x-(16+4), y, 0, addonsp[NUM_EXT+flash]); } -#define charsonside 8 +#define charsonside 14 if (dirmenu[i][DIR_LEN] > (charsonside*2 + 3)) V_DrawString(x, y+4, flags, va("%.*s...%s", charsonside, dirmenu[i]+DIR_STRING, dirmenu[i]+DIR_STRING+dirmenu[i][DIR_LEN]-(charsonside+1))); #undef charsonside @@ -4681,23 +4701,23 @@ static void M_HandleAddons(INT32 choice) switch (dirmenu[dir_on[menudepthleft]][DIR_TYPE]) { case EXT_FOLDER: + strcpy(&menupath[menupathindex[menudepthleft]],dirmenu[dir_on[menudepthleft]]+DIR_STRING); if (menudepthleft) { - strcpy(&menupath[menupathindex[menudepthleft]],dirmenu[dir_on[menudepthleft]]+DIR_STRING); menupathindex[--menudepthleft] = strlen(menupath); menupath[menupathindex[menudepthleft]] = 0; if (!preparefilemenu(false)) { S_StartSound(NULL, sfx_skid); - M_StartMessage(va("\x82%s\x80\nThis folder is empty.\n\n(Press a key)\n", menupath),NULL,MM_NOTHING); + M_StartMessage(va("\x82%s\x80\nThis folder is empty.\n\n(Press a key)\n", M_AddonsHeaderPath()),NULL,MM_NOTHING); menupath[menupathindex[++menudepthleft]] = 0; if (!preparefilemenu(true)) { S_StartSound(NULL, sfx_lose); M_SetupNextMenu(MISC_AddonsDef.prevMenu); - M_StartMessage(va("\x82%s\x80\nThis folder no longer exists!\nAborting to main menu.\n\n(Press a key)\n", menupath),NULL,MM_NOTHING); + 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); return; } } @@ -4711,7 +4731,8 @@ static void M_HandleAddons(INT32 choice) else { S_StartSound(NULL, sfx_lose); - M_StartMessage(va("\x82%s%s\x80\nThis folder is too deep to navigate to!\n\n(Press a key)\n", menupath, dirmenu[dir_on[menudepthleft]]+DIR_STRING),NULL,MM_NOTHING); + M_StartMessage(va("\x82%s\x80\nThis folder is too deep to navigate to!\n\n(Press a key)\n", M_AddonsHeaderPath()),NULL,MM_NOTHING); + menupath[menupathindex[menudepthleft]] = 0; } break; case EXT_UP: