1
0
forked from mirrors/0ad

Add a couple of string manipulation functions to globalscripts.

(And use them where appropriate.)

This was SVN commit r21101.
This commit is contained in:
s0600204
2018-02-02 01:37:39 +00:00
parent 36e42fedbf
commit db1ec0f7f7
5 changed files with 24 additions and 6 deletions
@@ -528,3 +528,12 @@ function calculateCarriedResources(carriedResources, tradingGoods)
return resources;
}
/**
* Remove filter prefix (mirage, corpse, etc) from template name.
*
* ie. filter|dir/to/template -> dir/to/template
*/
function removeFiltersFromTemplateName(templateName)
{
return templateName.split("|").pop();
}
@@ -58,7 +58,17 @@ function heapsPermute(array, cloneFunc, callback)
*/
function basename(path)
{
return path.slice(path.lastIndexOf("/") + 1);
return path.split("/").pop();
}
/**
* Returns the directories of a given path.
*
* ie. a/b/c/file.ext -> a/b/c
*/
function dirname(path)
{
return path.split("/").slice(0, -1).join("/");
}
/**
@@ -31,7 +31,7 @@ function setBiome(biomeID)
loadBiomeFile(biomeID);
Engine.LoadLibrary("rmbiome/" + biomeID.slice(0, biomeID.lastIndexOf("/")));
Engine.LoadLibrary("rmbiome/" + dirname(biomeID));
let setupBiomeFunc = global["setupBiome_" + basename(biomeID)];
if (setupBiomeFunc)
setupBiomeFunc();
@@ -233,7 +233,7 @@ BuildRestrictions.prototype.CheckPlacement = function()
let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
let templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
let template = cmpTemplateManager.GetTemplate(templateName.substr(templateName.lastIndexOf("|") + 1));
let template = cmpTemplateManager.GetTemplate(removeFiltersFromTemplateName(templateName));
// Check distance restriction
if (this.template.Distance)
@@ -35,9 +35,8 @@ SkirmishReplacer.prototype.ReplaceEntities = function()
var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
var templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
let specialFilterPos = templateName.lastIndexOf("|") + 1;
let specialFilters = templateName.substr(0, specialFilterPos);
templateName = templateName.substr(specialFilterPos);
let specialFilters = templateName.split("|").splice(0, -1).join("|");
templateName = removeFiltersFromTemplateName(templateName);
if (templateName in replacementEntities)
templateName = replacementEntities[templateName];