Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/GuiInterface.js
Show First 20 Lines • Show All 289 Lines • ▼ Show 20 Lines | ret.upgrade = { | ||||
"progress": cmpUpgrade.GetProgress(), | "progress": cmpUpgrade.GetProgress(), | ||||
"template": cmpUpgrade.GetUpgradingTo() | "template": cmpUpgrade.GetUpgradingTo() | ||||
}; | }; | ||||
let cmpProductionQueue = Engine.QueryInterface(ent, IID_ProductionQueue); | let cmpProductionQueue = Engine.QueryInterface(ent, IID_ProductionQueue); | ||||
if (cmpProductionQueue) | if (cmpProductionQueue) | ||||
ret.production = { | ret.production = { | ||||
"entities": cmpProductionQueue.GetEntitiesList(), | "entities": cmpProductionQueue.GetEntitiesList(), | ||||
"groups": cmpProductionQueue.GetGroupsList(), | |||||
"technologies": cmpProductionQueue.GetTechnologiesList(), | "technologies": cmpProductionQueue.GetTechnologiesList(), | ||||
"techCostMultiplier": cmpProductionQueue.GetTechCostMultiplier(), | "techCostMultiplier": cmpProductionQueue.GetTechCostMultiplier(), | ||||
"queue": cmpProductionQueue.GetQueue() | "queue": cmpProductionQueue.GetQueue() | ||||
}; | }; | ||||
let cmpTrader = Engine.QueryInterface(ent, IID_Trader); | let cmpTrader = Engine.QueryInterface(ent, IID_Trader); | ||||
if (cmpTrader) | if (cmpTrader) | ||||
ret.trader = { | ret.trader = { | ||||
▲ Show 20 Lines • Show All 246 Lines • ▼ Show 20 Lines | GuiInterface.prototype.GetTemplateData = function(player, templateName) | ||||
let auraNames = template.Auras._string.split(/\s+/); | let auraNames = template.Auras._string.split(/\s+/); | ||||
for (let name of auraNames) | for (let name of auraNames) | ||||
aurasTemplate[name] = AuraTemplates.Get(name); | aurasTemplate[name] = AuraTemplates.Get(name); | ||||
return GetTemplateDataHelper(template, player, aurasTemplate, Resources); | return GetTemplateDataHelper(template, player, aurasTemplate, Resources); | ||||
}; | }; | ||||
/* | |||||
* Calculate the and pass the data of a group. | |||||
* @param {object} group - The group to check. | |||||
* @return {object} - A object with e.g. maximum tech-requirements, resource costs etc. | |||||
*/ | |||||
GuiInterface.prototype.GetGroupTemplateData = function(player, templateName) | |||||
{ | |||||
let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); | |||||
let template = cmpTemplateManager.GetTemplate(templateName); | |||||
if (!template || !template.ProductionQueue || | |||||
!template.ProductionQueue.Composition || !template.ProductionQueue.Composition.Entries) | |||||
return null; | |||||
template = template.ProductionQueue.Composition; | |||||
let ret = { | |||||
"Name": template.Name, | |||||
"Tooltip": template.Tooltip, | |||||
"MutuallyExclusive": template.MutuallyExclusive, | |||||
"Icon": template.Icon, | |||||
"Entries" : {} | |||||
}; | |||||
for (let entry in template.Entries) | |||||
ret.Entries[entry] = { | |||||
"data": template.Entries[entry], | |||||
"templateData": this.GetTemplateData(player, template.Entries[entry].Template) | |||||
}; | |||||
warn(uneval(ret)); | |||||
return ret; | |||||
/* | |||||
getTrainingStatus on selection_panels.js? | |||||
let maxNeededResources = "ToDo"; | |||||
let maxAmount = 0; | |||||
let limits = "ToDo"; | |||||
let requiredTechs = []; | |||||
let entriesToRecruit = Object.keys(group.Entries); | |||||
let weightedListOfTemplates = []; | |||||
let recruitableTemplates = []; | |||||
for (let entry in entriesToRecruit) | |||||
{ | |||||
requiredTechs.push(group.Entries[entry].templateData.requiredTechnology); | |||||
recruitableTemplates.push(group.Entries[entry].data.Template); | |||||
// Limits | |||||
} | |||||
if (group.MutuallyExclusive && entriesToRecruit.length > 1) | |||||
{ | |||||
for (let entry in entriesToRecruit) | |||||
{ | |||||
let entTemplateName = group.Entries[entry].data.Template; | |||||
maxAmount = Math.max(+(group.Entries[entry].data.Amount || 1), maxAmount); | |||||
// Resources | |||||
// Construct something of a weighted list. | |||||
let chance = +(group.Entries[entry].data.Chance || 1); | |||||
for (let i = 0; i < chance; i++) | |||||
weightedListOfTemplates.push(entTemplateName); | |||||
} | |||||
} | |||||
else | |||||
for (let entry in entriesToRecruit) | |||||
{ | |||||
let entTemplateName = group.Entries[entry].data.Template; | |||||
maxAmount += +(group.Entries[entry].data.Amount || 1); | |||||
} | |||||
data = { | |||||
"GenericName": group.GenericName, | |||||
"SpecificName": group.SpecificName, | |||||
"Tooltip": group.Tooltip, | |||||
"technologies": requiredTechs, | |||||
"resources": maxNeededResources, | |||||
"maxAmount": maxAmount, | |||||
"icon": group.Icon, | |||||
"weightedListOfTemplates": weightedListOfTemplates, | |||||
"recruitableTemplates": recruitableTemplates | |||||
}; | |||||
warn(uneval(data)); | |||||
return data; | |||||
*/ | |||||
}; | |||||
GuiInterface.prototype.IsTechnologyResearched = function(player, data) | GuiInterface.prototype.IsTechnologyResearched = function(player, data) | ||||
{ | { | ||||
if (!data.tech) | if (!data.tech) | ||||
return true; | return true; | ||||
let cmpTechnologyManager = QueryPlayerIDInterface(data.player || player, IID_TechnologyManager); | let cmpTechnologyManager = QueryPlayerIDInterface(data.player || player, IID_TechnologyManager); | ||||
if (!cmpTechnologyManager) | if (!cmpTechnologyManager) | ||||
▲ Show 20 Lines • Show All 1,346 Lines • ▼ Show 20 Lines | let exposedFunctions = { | ||||
"GetSimulationState": 1, | "GetSimulationState": 1, | ||||
"GetExtendedSimulationState": 1, | "GetExtendedSimulationState": 1, | ||||
"GetRenamedEntities": 1, | "GetRenamedEntities": 1, | ||||
"ClearRenamedEntities": 1, | "ClearRenamedEntities": 1, | ||||
"GetEntityState": 1, | "GetEntityState": 1, | ||||
"GetMultipleEntityStates": 1, | "GetMultipleEntityStates": 1, | ||||
"GetAverageRangeForBuildings": 1, | "GetAverageRangeForBuildings": 1, | ||||
"GetTemplateData": 1, | "GetTemplateData": 1, | ||||
"GetGroupTemplateData": 1, | |||||
"IsTechnologyResearched": 1, | "IsTechnologyResearched": 1, | ||||
"CheckTechnologyRequirements": 1, | "CheckTechnologyRequirements": 1, | ||||
"GetStartedResearch": 1, | "GetStartedResearch": 1, | ||||
"GetBattleState": 1, | "GetBattleState": 1, | ||||
"GetIncomingAttacks": 1, | "GetIncomingAttacks": 1, | ||||
"GetNeededResources": 1, | "GetNeededResources": 1, | ||||
"GetNotifications": 1, | "GetNotifications": 1, | ||||
"GetTimeNotifications": 1, | "GetTimeNotifications": 1, | ||||
▲ Show 20 Lines • Show All 51 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator