Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/gui/structree/helper.js
const g_TechnologyPath = "simulation/data/technologies/"; | |||||
const g_AuraPath = "simulation/data/auras/"; | |||||
var g_TemplateData = {}; | var g_TemplateData = {}; | ||||
var g_TechnologyData = {}; | var g_TechnologyData = {}; | ||||
var g_AuraData = {}; | var g_AuraData = {}; | ||||
// Must be defined after g_TechnologyData object is declared. | |||||
const g_AutoResearchTechList = findAllAutoResearchedTechs(); | |||||
function loadTemplate(templateName) | function loadTemplate(templateName) | ||||
{ | { | ||||
if (!(templateName in g_TemplateData)) | if (!(templateName in g_TemplateData)) | ||||
{ | { | ||||
// We need to clone the template because we want to perform some translations. | // We need to clone the template because we want to perform some translations. | ||||
var data = clone(Engine.GetTemplate(templateName)); | var data = clone(Engine.GetTemplate(templateName)); | ||||
translateObjectKeys(data, ["GenericName", "SpecificName", "Tooltip"]); | translateObjectKeys(data, ["GenericName", "SpecificName", "Tooltip"]); | ||||
if (data.Auras) | if (data.Auras) | ||||
for (let auraID of data.Auras._string.split(/\s+/)) | for (let auraID of data.Auras._string.split(/\s+/)) | ||||
loadAuraData(auraID); | loadAuraData(auraID); | ||||
g_TemplateData[templateName] = data; | g_TemplateData[templateName] = data; | ||||
} | } | ||||
return g_TemplateData[templateName]; | return g_TemplateData[templateName]; | ||||
} | } | ||||
function loadTechData(templateName) | function loadTechData(templateName) | ||||
{ | { | ||||
if (!(templateName in g_TechnologyData)) | if (!(templateName in g_TechnologyData)) | ||||
{ | { | ||||
var filename = "simulation/data/technologies/" + templateName + ".json"; | let data = Engine.ReadJSONFile(g_TechnologyPath + templateName + ".json"); | ||||
var data = Engine.ReadJSONFile(filename); | translateObjectKeys(data, ["genericName", "tooltip", "description"]); | ||||
translateObjectKeys(data, ["genericName", "tooltip"]); | |||||
g_TechnologyData[templateName] = data; | g_TechnologyData[templateName] = data; | ||||
} | } | ||||
return g_TechnologyData[templateName]; | return g_TechnologyData[templateName]; | ||||
} | } | ||||
function loadAuraData(templateName) | function loadAuraData(templateName) | ||||
{ | { | ||||
if (!(templateName in g_AuraData)) | if (!(templateName in g_AuraData)) | ||||
{ | { | ||||
let filename = "simulation/data/auras/" + templateName + ".json"; | let data = Engine.ReadJSONFile(g_AuraPath + templateName + ".json"); | ||||
let data = Engine.ReadJSONFile(filename); | |||||
translateObjectKeys(data, ["auraName", "auraDescription"]); | translateObjectKeys(data, ["auraName", "auraDescription"]); | ||||
g_AuraData[templateName] = data; | g_AuraData[templateName] = data; | ||||
} | } | ||||
return g_AuraData[templateName]; | return g_AuraData[templateName]; | ||||
} | } | ||||
function findAllAutoResearchedTechs() | |||||
{ | |||||
let techList = []; | |||||
for (let filename of Engine.BuildDirEntList(g_TechnologyPath, "*.json", true)) | |||||
{ | |||||
// -5 to strip off the file extension | |||||
let templateName = filename.slice(g_TechnologyPath.length, -5); | |||||
let data = loadTechData(templateName); | |||||
if (data && data.autoResearch) | |||||
techList.push(templateName); | |||||
} | |||||
return techList; | |||||
} | |||||
function deriveModifications(techList) | |||||
{ | |||||
let techData = []; | |||||
for (let techName of techList) | |||||
techData.push(GetTechnologyBasicDataHelper(loadTechData(techName), g_SelectedCiv)); | |||||
return DeriveModificationsFromTechnologies(techData); | |||||
} | |||||
/** | /** | ||||
* This is needed because getEntityCostTooltip in tooltip.js needs to get | * This is needed because getEntityCostTooltip in tooltip.js needs to get | ||||
* the template data of the different wallSet pieces. In the session this | * the template data of the different wallSet pieces. In the session this | ||||
* function does some caching, but here we do that in loadTemplate already. | * function does some caching, but here we do that in loadTemplate already. | ||||
*/ | */ | ||||
function GetTemplateData(templateName) | function GetTemplateData(templateName) | ||||
{ | { | ||||
var template = loadTemplate(templateName); | var template = loadTemplate(templateName); | ||||
return GetTemplateDataHelper(template, null, g_AuraData, g_ResourceData); | return GetTemplateDataHelper(template, null, g_AuraData, g_ResourceData, g_CurrentModifiers); | ||||
} | } | ||||
/** | /** | ||||
* Determines and returns the phase in which a given technology can be | * Determines and returns the phase in which a given technology can be | ||||
* first researched. Works recursively through the given tech's | * first researched. Works recursively through the given tech's | ||||
* pre-requisite and superseded techs if necessary. | * pre-requisite and superseded techs if necessary. | ||||
* | * | ||||
* @param {string} techName - The Technology's name | * @param {string} techName - The Technology's name | ||||
▲ Show 20 Lines • Show All 58 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator