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 @@ -3,11 +3,13 @@ "header": { "font": "sans-bold-13" }, "body": { "font": "sans-13" }, "comma": { "font": "sans-12" }, - "nameSpecificBig": { "font": "sans-bold-16" }, - "nameSpecificSmall": { "font": "sans-bold-12" }, - "nameGeneric": { "font": "sans-bold-16" } + "namePrimaryBig": { "font": "sans-bold-16" }, + "namePrimarySmall": { "font": "sans-bold-12" }, + "nameSecondary": { "font": "sans-bold-16" } }; +var g_SpecificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; + var g_AttackTypes = { "Melee": translate("Melee Attack:"), "Ranged": translate("Ranged Attack:"), @@ -750,25 +752,36 @@ 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 primaryName = g_SpecificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + + return sprintf(translate("%(primaryName)s (%(secondaryName)s)"), { + "primaryName": primaryName, + "secondaryName": secondaryName }); } function getEntityNamesFormatted(template) { if (!template.name.specific) - return setStringTags(template.name.generic, g_TooltipTextFormats.nameSpecificBig); + return setStringTags(template.name.generic, g_TooltipTextFormats.namePrimaryBig); + + let primaryName = g_SpecificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + + if (primaryName == secondaryName) + return sprintf(translate("%(primaryName)s"), { + "primaryName": + setStringTags(primaryName[0], g_TooltipTextFormats.namePrimaryBig) + + setStringTags(primaryName.slice(1).toUpperCase(), g_TooltipTextFormats.namePrimarySmall) + }); // 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, - "fontStart": '[font="' + g_TooltipTextFormats.nameGeneric.font + '"]', - "fontEnd": '[/font]' + return sprintf(translate("%(primaryName)s (%(secondaryName)s)"), { + "primaryName": + setStringTags(primaryName[0], g_TooltipTextFormats.namePrimaryBig) + + setStringTags(primaryName.slice(1).toUpperCase(), g_TooltipTextFormats.namePrimarySmall), + "secondaryName": setStringTags(secondaryName, g_TooltipTextFormats.nameSecondary) }); } 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,13 @@ "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", + "callback": "updateDisplayedNames" } ] } 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 @@ -57,7 +57,7 @@ compileTooltip(stru); Engine.GetGUIObjectByName("phase["+i+"]_struct["+s+"]_name").caption = - translate(stru.name.specific); + translate(g_SpecificNamesPrimary ? stru.name.specific : stru.name.generic); setViewerOnPress("phase["+i+"]_struct["+s+"]_icon", stru.name.internal); thisEle.hidden = false; @@ -166,7 +166,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(g_SpecificNamesPrimary ? trainer.name.specific : trainer.name.generic); setViewerOnPress("trainer["+t+"]_icon", trainer.name.internal); thisEle.hidden = false; Index: binaries/data/mods/public/gui/reference/viewer/viewer.js =================================================================== --- binaries/data/mods/public/gui/reference/viewer/viewer.js +++ binaries/data/mods/public/gui/reference/viewer/viewer.js @@ -30,11 +30,11 @@ ]; /** - * Override style so we can get a bigger specific name. + * Override style so we can get a bigger primary name. */ -g_TooltipTextFormats.nameSpecificBig.font = "sans-bold-20"; -g_TooltipTextFormats.nameSpecificSmall.font = "sans-bold-16"; -g_TooltipTextFormats.nameGeneric.font = "sans-bold-16"; +g_TooltipTextFormats.namePrimaryBig.font = "sans-bold-20"; +g_TooltipTextFormats.namePrimarySmall.font = "sans-bold-16"; +g_TooltipTextFormats.nameSecondary.font = "sans-bold-16"; /** * Path to unit rank icons. 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 @@ -63,9 +63,13 @@ let template = GetTemplateData(entState.template); let specificName = template.name.specific; let genericName = template.name.generic; + + let primaryName = g_SpecificNamesPrimary ? specificName : genericName; + let secondaryName = g_SpecificNamesPrimary ? genericName : specificName; + // If packed, add that to the generic name (reduces template clutter) - if (genericName && template.pack && template.pack.state == "packed") - genericName = sprintf(translate("%(genericName)s — Packed"), { "genericName": genericName }); + if (secondaryName && template.pack && template.pack.state == "packed") + secondaryName = sprintf(translate("%(secondaryName)s — Packed"), { "secondaryName": secondaryName }); let playerState = g_Players[entState.player]; let civName = g_CivData[playerState.civ].Name; @@ -263,13 +267,13 @@ 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 + + Engine.GetGUIObjectByName("primary").caption = primaryName; + Engine.GetGUIObjectByName("secondary").caption = primaryName == secondaryName ? "" : + sprintf(translate("(%(secondaryName)s)"), { + "secondaryName": secondaryName }); let isGaia = playerState.civ == "gaia"; @@ -298,8 +302,7 @@ let iconTooltips = []; - if (genericName) - iconTooltips.push("[font=\"sans-bold-16\"]" + genericName + "[/font]"); + iconTooltips.push(setStringTags(primaryName, g_TooltipTextFormats.namePrimaryBig)); iconTooltips = iconTooltips.concat([ getVisibleEntityClassesFormatted, Index: binaries/data/mods/public/gui/session/selection_panels.js =================================================================== --- binaries/data/mods/public/gui/session/selection_panels.js +++ binaries/data/mods/public/gui/session/selection_panels.js @@ -1059,15 +1059,20 @@ let tooltip; if (!progress) { + let primaryName = g_SpecificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + let tooltips = []; if (data.item.tooltip) - tooltips.push(sprintf(translate("Upgrade into a %(name)s. %(tooltip)s"), { - "name": template.name.generic, + tooltips.push(sprintf(translate("Upgrade into a %(primaryName)s (%(secondaryName)s). %(tooltip)s"), { + "primaryName": primaryName, + "secondaryName": secondaryName, "tooltip": translate(data.item.tooltip) })); else - tooltips.push(sprintf(translate("Upgrade into a %(name)s."), { - "name": template.name.generic + tooltips.push(sprintf(translate("Upgrade into a %(primaryName)s (%(secondaryName)s)."), { + "primaryName": primaryName, + "secondaryName": secondaryName })); tooltips.push( 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 @@ -93,11 +93,11 @@ - - + + - - + + 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 @@ -368,6 +368,14 @@ } /** + * Updates the primary/secondary names in the simulation and GUI. + */ +function updateDisplayedNames() +{ + g_SpecificNamesPrimary = Engine.ConfigDB_GetValue("user", "gui.session.specificNamesPrimary") != "false"; +} + +/** * Updates the displayed colors of players in the simulation and GUI. */ function updateDisplayedPlayerColors() @@ -1052,7 +1060,10 @@ function createPanelEntityTooltip(panelEntState, template) { - let getPanelEntNameTooltip = panelEntState => "[font=\"sans-bold-16\"]" + template.name.specific + "[/font]"; + let primaryName = g_SpecificNamesPrimary ? template.name.specific : template.name.generic; + let secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + + let getPanelEntNameTooltip = panelEntState => setStringTags(primaryName || secondaryName, g_TooltipTextFormats.nameSecondary); return [ getPanelEntNameTooltip, Index: binaries/data/mods/public/gui/session/styles.xml =================================================================== --- binaries/data/mods/public/gui/session/styles.xml +++ binaries/data/mods/public/gui/session/styles.xml @@ -156,7 +156,7 @@ ghost="true" /> -