forked from 0ad/0ad
leper
932dbc7221
Taken from https://github.com/s0600204/0ad-structree-mod with some improvements from my fork. On small resolutions some buildings might not be fully visible (see #3038). This was SVN commit r16276.
90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
var g_TemplateData = {};
|
|
var g_TechnologyData = {};
|
|
|
|
function loadTemplate(templateName)
|
|
{
|
|
if (!(templateName in g_TemplateData))
|
|
{
|
|
// We need to clone the template because we want to perform some translations.
|
|
var data = clone(Engine.GetTemplate(templateName));
|
|
translateObjectKeys(data, ["GenericName", "Tooltip"]);
|
|
|
|
g_TemplateData[templateName] = data;
|
|
}
|
|
|
|
return g_TemplateData[templateName];
|
|
}
|
|
|
|
function loadTechData(templateName)
|
|
{
|
|
if (!(templateName in g_TechnologyData))
|
|
{
|
|
var filename = "simulation/data/technologies/" + templateName + ".json";
|
|
var data = Engine.ReadJSONFile(filename);
|
|
translateObjectKeys(data, ["genericName", "tooltip"]);
|
|
|
|
g_TechnologyData[templateName] = data;
|
|
}
|
|
|
|
return g_TechnologyData[templateName];
|
|
}
|
|
|
|
/**
|
|
* Fetch a value from an entity's template
|
|
*
|
|
* @param templateName The template to retreive the value from
|
|
* @param keypath The path to the value to be fetched. "Identity/GenericName"
|
|
* is equivalent to {"Identity":{"GenericName":"FOOBAR"}}
|
|
*
|
|
* @return The content requested at the key-path defined, or a blank array if
|
|
* not found
|
|
*/
|
|
function fetchValue(templateName, keypath)
|
|
{
|
|
var keys = keypath.split("/");
|
|
var template = loadTemplate(templateName);
|
|
|
|
let k = 0;
|
|
for (; k < keys.length-1; ++k)
|
|
{
|
|
if (template[keys[k]] === undefined)
|
|
return [];
|
|
|
|
template = template[keys[k]];
|
|
}
|
|
if (template[keys[k]] === undefined)
|
|
return [];
|
|
|
|
return template[keys[k]];
|
|
}
|
|
|
|
/**
|
|
* Fetch tokens from an entity's template
|
|
* @return An array containing all tokens if found, else an empty array
|
|
* @see fetchValue
|
|
*/
|
|
function fetchTokens(templateName, keypath)
|
|
{
|
|
var val = fetchValue(templateName, keypath);
|
|
if (!("_string" in val))
|
|
return [];
|
|
|
|
return val._string.split(" ");
|
|
}
|
|
|
|
function depath(path)
|
|
{
|
|
return path.slice(path.lastIndexOf("/")+1);
|
|
}
|
|
|
|
/**
|
|
* This is needed because getEntityCostTooltip in tooltip.js needs to get
|
|
* 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 GetTemplateData(templateName)
|
|
{
|
|
var template = loadTemplate(templateName);
|
|
return GetTemplateDataHelper(template);
|
|
}
|