diff --git a/binaries/data/mods/public/gui/session/PanelEntity.js b/binaries/data/mods/public/gui/session/PanelEntity.js index f290bff402..abb64fca33 100644 --- a/binaries/data/mods/public/gui/session/PanelEntity.js +++ b/binaries/data/mods/public/gui/session/PanelEntity.js @@ -30,8 +30,7 @@ class PanelEntity this.panelEntButton.hidden = false; const entityState = GetEntityState(entityID); - const template = GetTemplateData(entityState.templateName); - this.nameTooltip = setStringTags(g_SpecificNamesPrimary ? template.name.specific : template.name.generic, this.NameTags) + "\n"; + this.nameTooltip = setStringTags(g_SpecificNamesPrimary ? entityState.name.specific : entityState.name.generic, this.NameTags) + "\n"; Engine.GetGUIObjectByName("panelEntityHealthSection[" + buttonID + "]").hidden = !entityState.hitpoints; @@ -45,7 +44,7 @@ class PanelEntity } Engine.GetGUIObjectByName("panelEntityImage[" + buttonID + "]").sprite = - "stretched:" + this.PortraitDirectory + template.icon; + "stretched:" + this.PortraitDirectory + entityState.icon; } destroy() diff --git a/binaries/data/mods/public/gui/session/selection.js b/binaries/data/mods/public/gui/session/selection.js index 276e2ac6d2..4f9fa2268f 100644 --- a/binaries/data/mods/public/gui/session/selection.js +++ b/binaries/data/mods/public/gui/session/selection.js @@ -74,7 +74,7 @@ EntityGroups.prototype.add = function(ents) { if (this.ents[ent]) continue; - var entState = GetEntityState(ent); + const entState = GetEntityState(ent); // When this function is called during group rebuild, deleted // entities will not yet have been removed, so entities might @@ -82,8 +82,7 @@ EntityGroups.prototype.add = function(ents) if (!entState) continue; - var templateName = entState.templateName; - var key = GetTemplateData(templateName, entState.player).selectionGroupName || templateName; + let key = entState.selectionGroupName || entState.templateName; // Group the ents by player and template if (entState.player !== undefined) diff --git a/binaries/data/mods/public/gui/session/selection_details.js b/binaries/data/mods/public/gui/session/selection_details.js index f5faa5fab1..a87380dfb3 100644 --- a/binaries/data/mods/public/gui/session/selection_details.js +++ b/binaries/data/mods/public/gui/session/selection_details.js @@ -48,15 +48,13 @@ function updateGarrisonHealthBar(entState, selection) // Fills out information that most entities have function displaySingle(entState) { - const template = GetTemplateData(entState.templateName); - - const primaryName = g_SpecificNamesPrimary ? template.name.specific : template.name.generic; + const primaryName = g_SpecificNamesPrimary ? entState.name.specific : entState.name.generic; let secondaryName; if (g_ShowSecondaryNames) - secondaryName = g_SpecificNamesPrimary ? template.name.generic : template.name.specific; + secondaryName = g_SpecificNamesPrimary ? entState.name.generic : entState.name.specific; // If packed, add that to the generic name (reduces template clutter). - if (template.pack && template.pack.state == "packed") + if (entState.pack?.state === "packed") { if (secondaryName && g_ShowSecondaryNames) secondaryName = sprintf(translate("%(secondaryName)s — Packed"), { "secondaryName": secondaryName }); @@ -327,8 +325,8 @@ function displaySingle(entState) } // TODO: we should require all entities to have icons - Engine.GetGUIObjectByName("icon").sprite = template.icon ? ("stretched:session/portraits/" + template.icon) : "BackgroundBlack"; - if (template.icon) + Engine.GetGUIObjectByName("icon").sprite = entState.icon ? ("stretched:session/portraits/" + entState.icon) : "BackgroundBlack"; + if (entState.icon) { const iconBorder = Engine.GetGUIObjectByName("iconBorder"); @@ -373,7 +371,7 @@ function displaySingle(entState) getAurasTooltip, getEntityTooltip, getTreasureTooltip - ].map(func => func(template))); + ].map(func => func(entState))); const leftClickTooltip = hasClass(entState, "Unit") ? getFollowOnLeftClickTooltip() : getFocusOnLeftClickTooltip(); iconTooltips.push(leftClickTooltip + " " + getTemplateViewerOnRightClickTooltip()); diff --git a/binaries/data/mods/public/gui/session/selection_panels.js b/binaries/data/mods/public/gui/session/selection_panels.js index 70d9c7b3e0..0ed9f31a94 100644 --- a/binaries/data/mods/public/gui/session/selection_panels.js +++ b/binaries/data/mods/public/gui/session/selection_panels.js @@ -343,14 +343,12 @@ g_SelectionPanels.Garrison = { "setupButton": function(data) { const entState = GetEntityState(data.item.ents[0]); - - const template = GetTemplateData(entState.templateName, entState.player); - if (!template) + if (!entState) return false; data.button.onPress = function() { - unloadTemplate(template.selectionGroupName || entState.templateName, entState.player); + unloadTemplate(entState.selectionGroupName || entState.templateName, entState.player); }; data.countDisplay.caption = data.item.ents.length > 1 ? data.item.ents.length : ""; @@ -360,9 +358,9 @@ g_SelectionPanels.Garrison = { data.button.enabled = canUngarrison; data.button.tooltip = (canUngarrison ? - sprintf(translate("Unload %(name)s"), { "name": getEntityNames(template) }) + "\n" + + sprintf(translate("Unload %(name)s"), { "name": getEntityNames(entState) }) + "\n" + translate("Single-click to unload 1. Shift-click to unload all of this type.") : - getEntityNames(template)) + "\n" + + getEntityNames(entState)) + "\n" + sprintf(translate("Player: %(playername)s"), { "playername": g_Players[entState.player].name }); @@ -374,7 +372,7 @@ g_SelectionPanels.Garrison = { // also appear disabled to the owner of the structure. data.icon.sprite = (canUngarrison || g_IsObserver ? "" : "grayscale:") + - "stretched:session/portraits/" + template.icon; + "stretched:session/portraits/" + entState.icon; setPanelObjectPosition(data.button, data.i, data.rowLength); @@ -1048,7 +1046,7 @@ g_SelectionPanels.Research = { { showTemplateDetails( t, - GetTemplateData(baseData.unitEntStates.find(state => state.id == baseData.item.researchFacilityId).templateName, state.player).nativeCiv + baseData.unitEntStates.find(state => state.id == baseData.item.researchFacilityId).nativeCiv ); }); @@ -1114,8 +1112,7 @@ g_SelectionPanels.Selection = { "setupButton": function(data) { const entState = GetEntityState(data.item.ents[0]); - const template = GetTemplateData(entState.templateName, entState.player); - if (!template) + if (!entState) return false; for (const ent of data.item.ents) @@ -1152,7 +1149,7 @@ g_SelectionPanels.Selection = { } const unitOwner = GetEntityState(data.item.ents[0]).player; - let tooltip = getEntityNames(template); + let tooltip = getEntityNames(entState); if (data.carried) tooltip += "\n" + Object.keys(data.carried).map(res => resourceIcon(res) + data.carried[res] @@ -1177,8 +1174,8 @@ g_SelectionPanels.Selection = { }; data.button.onPressRight = function() { removeFromSelectionGroup(data.item.key); }; - if (template.icon) - data.icon.sprite = "stretched:session/portraits/" + template.icon; + if (entState.icon) + data.icon.sprite = "stretched:session/portraits/" + entState.icon; setPanelObjectPosition(data.button, data.i, data.rowLength); return true; diff --git a/binaries/data/mods/public/gui/session/session.js b/binaries/data/mods/public/gui/session/session.js index c92624ae60..c89e84c80f 100644 --- a/binaries/data/mods/public/gui/session/session.js +++ b/binaries/data/mods/public/gui/session/session.js @@ -818,8 +818,7 @@ function updateGroups() // Determine the sum of the costs of a given template const getCostSum = (ent) => { - const entState = GetEntityState(ent); - const cost = GetTemplateData(entState.templateName, entState.player).cost; + const cost = GetEntityState(ent).cost; return cost ? Object.keys(cost).map(key => cost[key]).reduce((sum, cur) => sum + cur) : 0; }; @@ -836,12 +835,12 @@ function updateGroups() // Choose the icon of the most common template (or the most costly if it's not unique) if (g_Groups.groups[i].getTotalCount() > 0) { - const icon = GetTemplateData(GetEntityState(g_Groups.groups[i].getEntsGrouped().reduce((pre, cur) => + const icon = GetEntityState(g_Groups.groups[i].getEntsGrouped().reduce((pre, cur) => { if (pre.ents.length == cur.ents.length) return getCostSum(pre.ents[0]) > getCostSum(cur.ents[0]) ? pre : cur; return pre.ents.length > cur.ents.length ? pre : cur; - }).ents[0]).templateName).icon; + }).ents[0]).icon; Engine.GetGUIObjectByName("unitGroupIcon[" + i + "]").sprite = icon ? ("stretched:session/portraits/" + icon) : "groupsIcon"; diff --git a/binaries/data/mods/public/gui/session/unit_actions.js b/binaries/data/mods/public/gui/session/unit_actions.js index 043f078aff..6d5a9ee68d 100644 --- a/binaries/data/mods/public/gui/session/unit_actions.js +++ b/binaries/data/mods/public/gui/session/unit_actions.js @@ -1250,7 +1250,7 @@ var g_UnitActions = let trader; if (entState.trainer?.entities?.length) for (let i = 0; i < entState.trainer.entities.length; ++i) - if ((trader = GetTemplateData(entState.trainer.entities[i]).trader)) + if ((trader = entState.trainer.entities[i].trader)) break; const traderData = {