summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortruebrain <truebrain@openttd.org>2011-11-29 23:27:01 +0000
committertruebrain <truebrain@openttd.org>2011-11-29 23:27:01 +0000
commit880f377fa61d8c87dc409f25447515509348bb45 (patch)
tree25d8e5f4bb15d3867b87452d578a605ff957ba06
parent3e6d0261291a1c91bf4f57c06fd9d180c175befc (diff)
downloadopenttd-880f377fa61d8c87dc409f25447515509348bb45.tar.xz
(svn r23367) -Codechange: refactor GetSetting to ScriptInstance, to avoid global variable in script_controller
-rw-r--r--src/ai/ai_instance.cpp5
-rw-r--r--src/ai/ai_instance.hpp2
-rw-r--r--src/script/api/script_controller.cpp5
-rw-r--r--src/script/api/script_object.cpp2
-rw-r--r--src/script/script_instance.hpp7
5 files changed, 17 insertions, 4 deletions
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
@@ -37,6 +37,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.
*/