# HG changeset patch # User truebrain # Date 2011-11-29 23:27:08 # Node ID 5b2abc88a36ce00db27cfa6eb2f2bdf76f06753d # Parent 8c2a4637defbf3d973dd5d9a3785cf9485b7b2f6 (svn r23368) -Codechange: move FindLibrary down a few layers, so there is no layer violation anymore diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp --- a/src/ai/ai_instance.cpp +++ b/src/ai/ai_instance.cpp @@ -18,6 +18,7 @@ #include "ai_config.hpp" #include "ai_gui.hpp" +#include "ai.hpp" #include "../script/script_fatalerror.hpp" #include "../script/script_suspend.hpp" @@ -240,6 +241,11 @@ int AIInstance::GetSetting(const char *n return AIConfig::GetConfig(_current_company)->GetSetting(name); } +ScriptInfo *AIInstance::FindLibrary(const char *library, int version) +{ + return (ScriptInfo *)AI::FindLibrary(library, version); +} + /** * DoCommand callback function for all commands executed by AIs. * @param result The result of the command. diff --git a/src/ai/ai_instance.hpp b/src/ai/ai_instance.hpp --- a/src/ai/ai_instance.hpp +++ b/src/ai/ai_instance.hpp @@ -27,6 +27,7 @@ public: void Initialize(class AIInfo *info); /* virtual */ int GetSetting(const char *name); + /* virtual */ ScriptInfo *FindLibrary(const char *library, int version); private: const char *versionAPI; ///< Current API used by this script. diff --git a/src/script/api/script_controller.cpp b/src/script/api/script_controller.cpp --- a/src/script/api/script_controller.cpp +++ b/src/script/api/script_controller.cpp @@ -16,7 +16,6 @@ #include "script_controller.hpp" #include "../../ai/ai_instance.hpp" -#include "../../ai/ai.hpp" #include "../script_fatalerror.hpp" #include "../script_info.hpp" #include "../script_suspend.hpp" @@ -94,7 +93,7 @@ ScriptController::~ScriptController() snprintf(library_name, sizeof(library_name), "%s.%d", library, version); strtolower(library_name); - ScriptInfo *lib = (ScriptInfo *)AI::FindLibrary(library, version); + ScriptInfo *lib = ScriptObject::GetActiveInstance()->FindLibrary(library, version); if (lib == NULL) { char error[1024]; snprintf(error, sizeof(error), "couldn't find library '%s' with version %d", library, version); diff --git a/src/script/script_instance.hpp b/src/script/script_instance.hpp --- a/src/script/script_instance.hpp +++ b/src/script/script_instance.hpp @@ -44,6 +44,14 @@ public: virtual int GetSetting(const char *name) = 0; /** + * Find a library. + * @param library The library name to find. + * @param version The version the library should have. + * @return The library if found, NULL otherwise. + */ + virtual class ScriptInfo *FindLibrary(const char *library, int version) = 0; + + /** * A script in multiplayer waits for the server to handle his DoCommand. * It keeps waiting for this until this function is called. */