Index: binaries/data/config/default.cfg =================================================================== --- binaries/data/config/default.cfg +++ binaries/data/config/default.cfg @@ -372,6 +372,7 @@ rankabovestatusbar = true ; Show rank icons above status bars experiencestatusbar = true ; Show an experience status bar above each selected unit respoptooltipsort = 0 ; Sorting players in the resources and population tooltip by value (0 - no sort, -1 - ascending, 1 - descending) +specificNamesPrimary = true ; Whether the specific names are show as default, as opposed to the generic names. [gui.session.minimap] blinkduration = 1.7 ; The blink duration while pinging Index: binaries/data/mods/public/gui/common/tooltips.js =================================================================== --- binaries/data/mods/public/gui/common/tooltips.js +++ binaries/data/mods/public/gui/common/tooltips.js @@ -750,9 +750,13 @@ if (template.name.specific == template.name.generic) return template.name.specific; - return sprintf(translate("%(specificName)s (%(genericName)s)"), { - "specificName": template.name.specific, - "genericName": template.name.generic + let specificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; + let primaryName = specificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = specificNamesPrimary ? template.name.generic : template.name.specific; + + return sprintf(translate("%(primaryName)s (%(secondaryName)s)"), { + "primaryName": primaryName, + "secondaryName": secondaryName }); } @@ -761,12 +765,23 @@ if (!template.name.specific) return setStringTags(template.name.generic, g_TooltipTextFormats.nameSpecificBig); + let specificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; + let primaryName = specificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = specificNamesPrimary ? template.name.generic : template.name.specific; + + if (primaryName == secondaryName) + return sprintf(translate("%(primaryName)s"), { + "primaryName": + setStringTags(primaryName[0], g_TooltipTextFormats.nameSpecificBig) + + setStringTags(primaryName.slice(1).toUpperCase(), g_TooltipTextFormats.nameSpecificSmall) + }); + // Translation: Example: "Epibátēs Athēnaîos [font="sans-bold-16"](Athenian Marine)[/font]" - return sprintf(translate("%(specificName)s %(fontStart)s(%(genericName)s)%(fontEnd)s"), { - "specificName": - setStringTags(template.name.specific[0], g_TooltipTextFormats.nameSpecificBig) + - setStringTags(template.name.specific.slice(1).toUpperCase(), g_TooltipTextFormats.nameSpecificSmall), - "genericName": template.name.generic, + return sprintf(translate("%(primaryName)s %(fontStart)s(%(secondaryName)s)%(fontEnd)s"), { + "primaryName": + setStringTags(primaryName[0], g_TooltipTextFormats.nameSpecificBig) + + setStringTags(primaryName.slice(1).toUpperCase(), g_TooltipTextFormats.nameSpecificSmall), + "secondaryName": secondaryName, "fontStart": '[font="' + g_TooltipTextFormats.nameGeneric.font + '"]', "fontEnd": '[/font]' }); Index: binaries/data/mods/public/gui/options/options.json =================================================================== --- binaries/data/mods/public/gui/options/options.json +++ binaries/data/mods/public/gui/options/options.json @@ -540,6 +540,12 @@ "tooltip": "Color of enemies when diplomacy colors are enabled.", "config": "gui.session.diplomacycolors.enemy", "callback": "updateDisplayedPlayerColors" + }, + { + "type": "boolean", + "label": "Specific names primary", + "tooltip": "Whether specific names are shown as primary names.", + "config": "gui.session.specificNamesPrimary" } ] } Index: binaries/data/mods/public/gui/reference/structree/draw.js =================================================================== --- binaries/data/mods/public/gui/reference/structree/draw.js +++ binaries/data/mods/public/gui/reference/structree/draw.js @@ -15,6 +15,8 @@ */ function draw() { + let specificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; + // Set basic state (positioning of elements mainly), but only once if (!Object.keys(g_DrawLimits).length) predraw(); @@ -57,7 +59,7 @@ compileTooltip(stru); Engine.GetGUIObjectByName("phase["+i+"]_struct["+s+"]_name").caption = - translate(stru.name.specific); + translate(specificNamesPrimary ? stru.name.specific : stru.name.generic); setViewerOnPress("phase["+i+"]_struct["+s+"]_icon", stru.name.internal); thisEle.hidden = false; @@ -166,7 +168,7 @@ trainer = g_ParsedData.units[trainer]; Engine.GetGUIObjectByName("trainer["+t+"]_icon").sprite = "stretched:session/portraits/"+trainer.icon; Engine.GetGUIObjectByName("trainer["+t+"]_icon").tooltip = compileTooltip(trainer); - Engine.GetGUIObjectByName("trainer["+t+"]_name").caption = translate(trainer.name.specific); + Engine.GetGUIObjectByName("trainer["+t+"]_name").caption = translate(specificNamesPrimary ? trainer.name.specific : trainer.name.generic); setViewerOnPress("trainer["+t+"]_icon", trainer.name.internal); thisEle.hidden = false; Index: binaries/data/mods/public/gui/session/selection_details.js =================================================================== --- binaries/data/mods/public/gui/session/selection_details.js +++ binaries/data/mods/public/gui/session/selection_details.js @@ -263,13 +263,16 @@ resourceCarryingIcon.hidden = true; resourceCarryingText.hidden = true; } - - Engine.GetGUIObjectByName("specific").caption = specificName; Engine.GetGUIObjectByName("player").caption = playerName; Engine.GetGUIObjectByName("playerColorBackground").sprite = "color:" + playerColor; - Engine.GetGUIObjectByName("generic").caption = genericName == specificName ? "" : - sprintf(translate("(%(genericName)s)"), { - "genericName": genericName + + let specificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; + let primaryName = specificNamesPrimary ? specificName : genericName; + let secondaryName = specificNamesPrimary ? genericName : specificName; + Engine.GetGUIObjectByName("main").caption = primaryName; + Engine.GetGUIObjectByName("secondary").caption = genericName == specificName ? "" : + sprintf(translate("(%(secondaryName)s)"), { + "secondaryName": secondaryName }); let isGaia = playerState.civ == "gaia"; Index: binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml =================================================================== --- binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml +++ binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml @@ -94,10 +94,10 @@ - + - + Index: binaries/data/mods/public/gui/session/session.js =================================================================== --- binaries/data/mods/public/gui/session/session.js +++ binaries/data/mods/public/gui/session/session.js @@ -1052,7 +1052,11 @@ function createPanelEntityTooltip(panelEntState, template) { - let getPanelEntNameTooltip = panelEntState => "[font=\"sans-bold-16\"]" + template.name.specific + "[/font]"; + let specificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; + let primaryName = specificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = specificNamesPrimary ? template.name.generic : template.name.specific; + + let getPanelEntNameTooltip = panelEntState => "[font=\"sans-bold-16\"]" + primaryName || secondaryName + "[/font]"; return [ getPanelEntNameTooltip,