diff --git a/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayEntityState.js b/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayEntityState.js index 909572b766..b298884ec0 100644 --- a/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayEntityState.js +++ b/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayEntityState.js @@ -38,7 +38,7 @@ class DeveloperOverlayEntityState const entState = GetEntityState(selection[0]); if (entState) { - const template = GetTemplateData(entState.template); + const template = GetTemplateData(entState.template, entState.player); text += "\n\nentity: {\n"; for (const k in entState) text += " " + k + ":" + uneval(entState[k]) + "\n"; diff --git a/binaries/data/mods/public/gui/session/input.js b/binaries/data/mods/public/gui/session/input.js index be8b6d4e23..6dbca62723 100644 --- a/binaries/data/mods/public/gui/session/input.js +++ b/binaries/data/mods/public/gui/session/input.js @@ -1555,7 +1555,7 @@ function getEntityLimitAndCount(playerState, entType) }; if (!playerState.entityLimits) return ret; - const template = GetTemplateData(entType); + const template = GetTemplateData(entType, playerState.id); let entCategory; let matchLimit; if (template.trainingRestrictions) diff --git a/binaries/data/mods/public/gui/session/selection.js b/binaries/data/mods/public/gui/session/selection.js index 855a84956c..7a03c670cd 100644 --- a/binaries/data/mods/public/gui/session/selection.js +++ b/binaries/data/mods/public/gui/session/selection.js @@ -83,7 +83,7 @@ EntityGroups.prototype.add = function(ents) continue; var templateName = entState.template; - var key = GetTemplateData(templateName).selectionGroupName || templateName; + var key = GetTemplateData(templateName, entState.player).selectionGroupName || templateName; // Group the ents by player and template if (entState.player !== undefined) diff --git a/binaries/data/mods/public/gui/session/selection_panels.js b/binaries/data/mods/public/gui/session/selection_panels.js index 8ffd6a8402..a157f5a261 100644 --- a/binaries/data/mods/public/gui/session/selection_panels.js +++ b/binaries/data/mods/public/gui/session/selection_panels.js @@ -344,7 +344,7 @@ g_SelectionPanels.Garrison = { { const entState = GetEntityState(data.item.ents[0]); - const template = GetTemplateData(entState.template); + const template = GetTemplateData(entState.template, entState.player); if (!template) return false; @@ -566,7 +566,7 @@ g_SelectionPanels.Queue = { // Differentiate between units and techs let template; if (queuedItem.unitTemplate) - template = GetTemplateData(queuedItem.unitTemplate); + template = GetTemplateData(queuedItem.unitTemplate, data.player); else if (queuedItem.technologyTemplate) template = GetTechnologyData(queuedItem.technologyTemplate, GetSimState().players[data.player].civ); else @@ -1048,7 +1048,8 @@ g_SelectionPanels.Research = { { showTemplateDetails( t, - GetTemplateData(baseData.unitEntStates.find(state => state.id == baseData.item.researchFacilityId).template).nativeCiv); + GetTemplateData(baseData.unitEntStates.find(state => state.id == baseData.item.researchFacilityId).template, state.player).nativeCiv + ); }); button.onPressRight = showTemplateFunc(techName); @@ -1113,7 +1114,7 @@ g_SelectionPanels.Selection = { "setupButton": function(data) { const entState = GetEntityState(data.item.ents[0]); - const template = GetTemplateData(entState.template); + const template = GetTemplateData(entState.template, entState.player); if (!template) return false; @@ -1340,7 +1341,7 @@ g_SelectionPanels.Upgrade = { }, "setupButton": function(data) { - const template = GetTemplateData(data.item.entity); + const template = GetTemplateData(data.item.entity, data.player); if (!template) return false; @@ -1421,7 +1422,7 @@ g_SelectionPanels.Upgrade = { }; if (!requirementsMet || limits.canBeAddedCount == 0 && - !upgradableEntStates.some(state => hasSameRestrictionCategory(data.item.entity, state.template))) + !upgradableEntStates.some(state => hasSameRestrictionCategory(data.item.entity, state.template, state.player))) { data.button.enabled = false; modifier = "color:0 0 0 127:grayscale:"; diff --git a/binaries/data/mods/public/gui/session/selection_panels_helpers.js b/binaries/data/mods/public/gui/session/selection_panels_helpers.js index 99b055e54a..a2a84d87d9 100644 --- a/binaries/data/mods/public/gui/session/selection_panels_helpers.js +++ b/binaries/data/mods/public/gui/session/selection_panels_helpers.js @@ -19,10 +19,10 @@ function canMoveSelectionIntoFormation(formationTemplate) return g_canMoveIntoFormation[formationTemplate]; } -function hasSameRestrictionCategory(templateName1, templateName2) +function hasSameRestrictionCategory(templateName1, templateName2, player) { - const template1 = GetTemplateData(templateName1); - const template2 = GetTemplateData(templateName2); + const template1 = GetTemplateData(templateName1, player); + const template2 = GetTemplateData(templateName2, player); if (template1.trainingRestrictions && template2.trainingRestrictions) return template1.trainingRestrictions.category == template2.trainingRestrictions.category; diff --git a/binaries/data/mods/public/gui/session/session.js b/binaries/data/mods/public/gui/session/session.js index 523f0668c1..47a8039801 100644 --- a/binaries/data/mods/public/gui/session/session.js +++ b/binaries/data/mods/public/gui/session/session.js @@ -443,6 +443,7 @@ function updatePlayerData() playerData.push({ "name": playerState.name, + "id": i, "civ": playerState.civ, "color": { "r": playerState.color.r * 255, @@ -727,7 +728,8 @@ function updateGroups() // Determine the sum of the costs of a given template const getCostSum = (ent) => { - const cost = GetTemplateData(GetEntityState(ent).template).cost; + const entState = GetEntityState(ent); + const cost = GetTemplateData(entState.template, entState.player).cost; return cost ? Object.keys(cost).map(key => cost[key]).reduce((sum, cur) => sum + cur) : 0; };