Index: ps/trunk/binaries/data/config/default.cfg =================================================================== --- ps/trunk/binaries/data/config/default.cfg +++ ps/trunk/binaries/data/config/default.cfg @@ -410,6 +410,7 @@ disjointcontrolgroups = "true" ; Whether control groups are disjoint sets or entities can be in multiple control groups at the same time. defaultformation = "special/formations/box" ; For walking orders, automatically put units into this formation if they don't have one already. formationwalkonly = "true" ; Formations are disabled when giving gather/attack/... orders. +howtoshownames = 0 ; Whether the specific names are show as default, as opposed to the generic names. And whether the secondary names are shown. (0 - show both; specific names primary, 1 - show both; generic names primary, 2 - show only specific names, 3 - show only generic names) [gui.session.minimap] blinkduration = 1.7 ; The blink duration while pinging Index: ps/trunk/binaries/data/mods/public/gui/common/tooltips.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/common/tooltips.js +++ ps/trunk/binaries/data/mods/public/gui/common/tooltips.js @@ -3,11 +3,22 @@ "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.howtoshownames") == 0 || Engine.ConfigDB_GetValue("user", "gui.session.howtoshownames") == 2; +var g_ShowSecondaryNames = Engine.ConfigDB_GetValue("user", "gui.session.howtoshownames") == 0 || Engine.ConfigDB_GetValue("user", "gui.session.howtoshownames") == 1; + +function initDisplayedNames() +{ + registerConfigChangeHandler(changes => { + if (changes.has("gui.session.howtoshownames")) + updateDisplayedNames(); + }); +} + /** * String of four spaces to be used as indentation in gui strings. */ @@ -1046,9 +1057,18 @@ 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; + if (g_ShowSecondaryNames) + secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + + if (secondaryName) + return sprintf(translate("%(primaryName)s (%(secondaryName)s)"), { + "primaryName": primaryName, + "secondaryName": secondaryName + }); + return sprintf(translate("%(primaryName)s"), { + "primaryName": primaryName }); } @@ -1056,24 +1076,37 @@ 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; + if (g_ShowSecondaryNames) + secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + + if (!secondaryName || 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": getEntitySpecificNameFormatted(template), - "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) }); } -function getEntitySpecificNameFormatted(template) +function getEntityPrimaryNameFormatted(template) { - if (!template.name.specific) - return setStringTags(template.name.generic, g_TooltipTextFormats.nameSpecificBig); + let primaryName = g_SpecificNamesPrimary ? template.name.specific : template.name.generic; + if (!primaryName) + return setStringTags(g_SpecificNamesPrimary ? template.name.generic : template.name.specific, g_TooltipTextFormats.namePrimaryBig); - return setStringTags(template.name.specific[0], g_TooltipTextFormats.nameSpecificBig) + - setStringTags(template.name.specific.slice(1).toUpperCase(), g_TooltipTextFormats.nameSpecificSmall); + return setStringTags(primaryName[0], g_TooltipTextFormats.namePrimaryBig) + + setStringTags(primaryName.slice(1).toUpperCase(), g_TooltipTextFormats.namePrimarySmall); } function getVisibleEntityClassesFormatted(template) Index: ps/trunk/binaries/data/mods/public/gui/options/options.json =================================================================== --- ps/trunk/binaries/data/mods/public/gui/options/options.json +++ ps/trunk/binaries/data/mods/public/gui/options/options.json @@ -81,6 +81,34 @@ "label": "Chat timestamp", "tooltip": "Display the time at which a chat message was posted.", "config": "chat.timestamp" + }, + { + "type": "dropdown", + "label": "Naming of entities.", + "tooltip": "How to show entity names.", + "config": "gui.session.howtoshownames", + "list": [ + { + "value": 0, + "label": "Specific primary.", + "tooltip": "Show specific names as primary and generic names as secondary." + }, + { + "value": 1, + "label": "Generic primary.", + "tooltip": "Show generic names as primary and specific names as secondary." + }, + { + "value": 2, + "label": "Only Specific.", + "tooltip": "Show only specific names for units." + }, + { + "value": 3, + "label": "Only Generic.", + "tooltip": "Show only generic names for units." + } + ] } ] }, Index: ps/trunk/binaries/data/mods/public/gui/reference/catafalque/Emblem.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/reference/catafalque/Emblem.js +++ ps/trunk/binaries/data/mods/public/gui/reference/catafalque/Emblem.js @@ -21,7 +21,7 @@ this.EmblemImage.sprite = "stretched:" + civData.Emblem; this.EmblemImage.tooltip = getAurasTooltip(template); - this.EmblemCaption.caption = getEntitySpecificNameFormatted(template); + this.EmblemCaption.caption = getEntityPrimaryNameFormatted(template); this.Emblem.hidden = false; return true; } Index: ps/trunk/binaries/data/mods/public/gui/reference/structree/Boxes/EntityBox.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/reference/structree/Boxes/EntityBox.js +++ ps/trunk/binaries/data/mods/public/gui/reference/structree/Boxes/EntityBox.js @@ -26,7 +26,9 @@ this.gui.hidden = false; let caption = this.gui.children[0]; - caption.caption = translate(this.template.name.specific); + caption.caption = g_SpecificNamesPrimary ? + translate(this.template.name.specific) : + translate(this.template.name.generic); let icon = this.gui.children[1]; icon.sprite = "stretched:" + this.page.IconPath + this.template.icon; Index: ps/trunk/binaries/data/mods/public/gui/reference/structree/Sections/Trainer/TrainerSection.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/reference/structree/Sections/Trainer/TrainerSection.xml +++ ps/trunk/binaries/data/mods/public/gui/reference/structree/Sections/Trainer/TrainerSection.xml @@ -13,7 +13,7 @@ - + Index: ps/trunk/binaries/data/mods/public/gui/reference/structree/Sections/Tree/TreeSection.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/reference/structree/Sections/Tree/TreeSection.xml +++ ps/trunk/binaries/data/mods/public/gui/reference/structree/Sections/Tree/TreeSection.xml @@ -18,7 +18,7 @@ - + Index: ps/trunk/binaries/data/mods/public/gui/reference/structree/styles.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/reference/structree/styles.xml +++ ps/trunk/binaries/data/mods/public/gui/reference/structree/styles.xml @@ -4,7 +4,7 @@ sprite="ModernDarkBoxGold" /> -