diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 6f7d88694c..5757703d2e 100644 --- a/src/gamedata/g_mapinfo.cpp +++ b/src/gamedata/g_mapinfo.cpp @@ -1930,20 +1930,32 @@ level_info_t *FMapInfoParser::ParseMapHeader(level_info_t &defaultinfo) } else { - levelinfo->LevelName = sc.String; - - if (HexenHack) + // Workaround to allow localizazion of IWADs which do not have a string label here (e.g. HACX.WAD) + // This checks for a string labelled with the MapName and if that is identical to what got parsed here + // the string table entry will be used. + auto c = GStrings.GetLanguageString(levelinfo->MapName, FStringTable::default_table); + if (c && !strcmp(c, sc.String)) { - // Try to localize Hexen's map names. - int fileno = Wads.GetLumpFile(sc.LumpNum); - auto fn = Wads.GetWadName(fileno); - if (fn && (!stricmp(fn, "HEXEN.WAD") || !stricmp(fn, "HEXDD.WAD"))) + levelinfo->flags |= LEVEL_LOOKUPLEVELNAME; + levelinfo->LevelName = levelinfo->MapName; + } + else + { + levelinfo->LevelName = sc.String; + + if (HexenHack) { - FStringf key("TXT_%.5s_%s", fn, levelinfo->MapName.GetChars()); - if (GStrings.exists(key)) + // Try to localize Hexen's map names. This does not use the above feature to allow these names to be unique. + int fileno = Wads.GetLumpFile(sc.LumpNum); + auto fn = Wads.GetWadName(fileno); + if (fn && (!stricmp(fn, "HEXEN.WAD") || !stricmp(fn, "HEXDD.WAD"))) { - levelinfo->flags |= LEVEL_LOOKUPLEVELNAME; - levelinfo->LevelName = key; + FStringf key("TXT_%.5s_%s", fn, levelinfo->MapName.GetChars()); + if (GStrings.exists(key)) + { + levelinfo->flags |= LEVEL_LOOKUPLEVELNAME; + levelinfo->LevelName = key; + } } } } diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index 0ae8cb99df..9932b9d1dc 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -1120,9 +1120,9 @@ void M_StartupEpisodeMenu(FGameStartup *gs) // center the menu on the screen if the top space is larger than the bottom space int totalheight = posy + AllEpisodes.Size() * ld->mLinespacing - topy; - if (totalheight < 190 || AllEpisodes.Size() == 1) + if (totalheight < CleanHeight-10 || AllEpisodes.Size() == 1) { - int newtop = (200 - totalheight + topy) / 2; + int newtop = (CleanHeight - totalheight + topy) / 2; int topdelta = newtop - topy; if (topdelta < 0) { @@ -1631,9 +1631,9 @@ void M_StartupSkillMenu(FGameStartup *gs) // center the menu on the screen if the top space is larger than the bottom space int totalheight = posy + MenuSkills.Size() * ld->mLinespacing - topy; - if (totalheight < 190 || MenuSkills.Size() == 1) + if (totalheight < CleanHeight-10 || MenuSkills.Size() == 1) { - int newtop = (200 - totalheight + topy) / 2; + int newtop = (CleanHeight - totalheight + topy) / 2; int topdelta = newtop - topy; if (topdelta < 0) { diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 3d99a94442..ae8044ac1b 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -2530,7 +2530,7 @@ OptionMenu "OpenGLOptions" protected OptionMenu "VR3DMenu" protected { - Title "GLPREFMNU_VRMODE" + Title "$GLPREFMNU_VRMODE" Option "$GLMNU_3DMODE", vr_mode, "VRMode" IfOption(Windows) {