diff options
author | yexo <yexo@openttd.org> | 2012-08-13 19:22:26 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2012-08-13 19:22:26 +0000 |
commit | 54aa43c81b4adbaaf1eaab03062fa871d85fbeab (patch) | |
tree | 7f7ca92995edd09bd9dc41499d1aae60d8869bc3 /src/script/script_instance.cpp | |
parent | 51921552536d2fbc56c8cdaf682da038e26a168c (diff) | |
download | openttd-54aa43c81b4adbaaf1eaab03062fa871d85fbeab.tar.xz |
(svn r24468) -Add [FS#5219]: API compatibility scripts for Goal Scripts (Hirundo)
Diffstat (limited to 'src/script/script_instance.cpp')
-rw-r--r-- | src/script/script_instance.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 5b515c52f..95fcf6f0d 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -27,6 +27,7 @@ #include "../company_base.h" #include "../company_func.h" +#include "../fileio_func.h" ScriptStorage::~ScriptStorage() { @@ -104,6 +105,28 @@ void ScriptInstance::RegisterAPI() squirrel_register_std(this->engine); } +bool ScriptInstance::LoadCompatibilityScripts(const char *api_version, Subdirectory dir) +{ + char script_name[32]; + seprintf(script_name, lastof(script_name), "compat_%s.nut", api_version); + char buf[MAX_PATH]; + Searchpath sp; + FOR_ALL_SEARCHPATHS(sp) { + FioAppendDirectory(buf, MAX_PATH, sp, dir); + ttd_strlcat(buf, script_name, MAX_PATH); + if (!FileExists(buf)) continue; + + if (this->engine->LoadScript(buf)) return true; + + ScriptLog::Error("Failed to load API compatibility script"); + DEBUG(script, 0, "Error compiling / running API compatibility script: %s", buf); + return false; + } + + ScriptLog::Warning("API compatibility script not found"); + return true; +} + ScriptInstance::~ScriptInstance() { ScriptObject::ActiveInstance active(this); |