changeset 18523:5b23a8d50e5f draft

(svn r23367) -Codechange: refactor GetSetting to ScriptInstance, to avoid global variable in script_controller
author truebrain <truebrain@openttd.org>
date Tue, 29 Nov 2011 23:27:01 +0000
parents cdb63d735c0e
children e09c9fec19e8
files src/ai/ai_instance.cpp src/ai/ai_instance.hpp src/script/api/script_controller.cpp src/script/api/script_object.cpp src/script/script_instance.hpp
diffstat 5 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/ai_instance.cpp
+++ b/src/ai/ai_instance.cpp
@@ -235,6 +235,11 @@
 	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.
--- a/src/ai/ai_instance.hpp
+++ b/src/ai/ai_instance.hpp
@@ -26,6 +26,8 @@
 	 */
 	void Initialize(class AIInfo *info);
 
+	/* virtual */ int GetSetting(const char *name);
+
 private:
 	const char *versionAPI; ///< Current API used by this script.
 
--- 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 @@
 
 /* static */ int ScriptController::GetSetting(const char *name)
 {
-	return AIConfig::GetConfig(_current_company)->GetSetting(name);
+	return ScriptObject::GetActiveInstance()->GetSetting(name);
 }
 
 /* static */ uint ScriptController::GetVersion()
--- 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"
--- a/src/script/script_instance.hpp
+++ b/src/script/script_instance.hpp
@@ -37,6 +37,13 @@
 	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.
 	 */