From 880f377fa61d8c87dc409f25447515509348bb45 Mon Sep 17 00:00:00 2001 From: truebrain Date: Tue, 29 Nov 2011 23:27:01 +0000 Subject: (svn r23367) -Codechange: refactor GetSetting to ScriptInstance, to avoid global variable in script_controller --- src/ai/ai_instance.cpp | 5 +++++ src/ai/ai_instance.hpp | 2 ++ src/script/api/script_controller.cpp | 5 +---- src/script/api/script_object.cpp | 2 ++ src/script/script_instance.hpp | 7 +++++++ 5 files changed, 17 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp index 2df8c2e44..a360d516c 100644 --- a/src/ai/ai_instance.cpp +++ b/src/ai/ai_instance.cpp @@ -235,6 +235,11 @@ void AIInstance::LoadDummyScript() Script_CreateDummy(this->engine->GetVM(), STR_ERROR_AI_NO_AI_FOUND, "AI"); } +int AIInstance::GetSetting(const char *name) +{ + return AIConfig::GetConfig(_current_company)->GetSetting(name); +} + /** * 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 index 886b716ae..01c472b03 100644 --- a/src/ai/ai_instance.hpp +++ b/src/ai/ai_instance.hpp @@ -26,6 +26,8 @@ public: */ void Initialize(class AIInfo *info); + /* virtual */ int GetSetting(const char *name); + 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 index 0638a6651..7fe174756 100644 --- a/src/script/api/script_controller.cpp +++ b/src/script/api/script_controller.cpp @@ -11,14 +11,11 @@ #include "../../stdafx.h" #include "../../string_func.h" -#include "../../company_base.h" -#include "../../company_func.h" #include "../../script/squirrel.hpp" #include "../../rev.h" #include "script_controller.hpp" #include "../../ai/ai_instance.hpp" -#include "../../ai/ai_config.hpp" #include "../../ai/ai.hpp" #include "../script_fatalerror.hpp" #include "../script_info.hpp" @@ -78,7 +75,7 @@ ScriptController::~ScriptController() /* static */ int ScriptController::GetSetting(const char *name) { - return AIConfig::GetConfig(_current_company)->GetSetting(name); + return ScriptObject::GetActiveInstance()->GetSetting(name); } /* static */ uint ScriptController::GetVersion() diff --git a/src/script/api/script_object.cpp b/src/script/api/script_object.cpp index d5b512152..894668d4d 100644 --- a/src/script/api/script_object.cpp +++ b/src/script/api/script_object.cpp @@ -12,10 +12,12 @@ #include "../../stdafx.h" #include "../../script/squirrel.hpp" #include "../../command_func.h" +#include "../../company_func.h" #include "../../network/network.h" #include "../../tunnelbridge.h" #include "../script_storage.hpp" +#include "../../ai/ai_config.hpp" #include "../../ai/ai_instance.hpp" #include "../script_fatalerror.hpp" #include "../script_suspend.hpp" diff --git a/src/script/script_instance.hpp b/src/script/script_instance.hpp index b84a36496..122cc5808 100644 --- a/src/script/script_instance.hpp +++ b/src/script/script_instance.hpp @@ -36,6 +36,13 @@ public: */ void Initialize(const char *main_script, const char *instance_name); + /** + * Get the value of a setting of the current instance. + * @param name The name of the setting. + * @return the value for the setting, or -1 if the setting is not known. + */ + virtual int GetSetting(const char *name) = 0; + /** * A script in multiplayer waits for the server to handle his DoCommand. * It keeps waiting for this until this function is called. -- cgit v1.2.3-54-g00ecf