This AI is still in early stages of development.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

Some tricks with the include() function...

 

Including a file if some other file not loaded

You can use this trick to create mods for your mods. A basic approach can be done using just the include() function and nothing else...

Basic approach to loading defaults if alternate not found...
if (include("path/to/mymod.custom.js") === false) { // not found
  include("path/to/mymod.default.js"); // load default settings
}

But, assuming you're starting to use dependencies, you might want a more robust approach...

Use dependency checking to load file and check it initialised...
include("path/to/util.js");
 
Check.paths = ["path/to/"]; // enable autoloading
 
if (!Check.has("mymod.custom.js")) {
	Check.load("mymod.default.js");
}

The obvious problem here is that you might have dependencies that rely on "mymod.default.js", but if "mymod.custom.js" gets loaded instead those dependencies will break.

The solution to this is to provide a fake file in both "mymod.default.js" and "mymod.extend.js" and then use that for dependency checks:

Fake provide in mymod.default.js and mymod.extend.js
// The normal provide() lets you check later which file was loaded...
Check.provide(self);
 
// The fake provide() lets you check that any settings were loaded...
Check.provide({
	file: "settings.loaded",
	ver : self.ver
});

If you're particularly paranoid about having both file somehow get loaded, you can make sure "settings.loaded" isn't loaded during dependency checks at the top of those files...

Make sure settings not already loaded in mymod.default.js and mymod.extend.js...
var dependencies = {
	"Util.js": Check.ANY_VERSION,
	"settings.loaded": Check.NOT_LOADED
}
 
// will throw error if "settings.loaded" already loaded...
Check.required(dependencies, self);
Availability STABLE

Requires:

Dependency Checking

Topics:

 

  • No labels