summaryrefslogtreecommitdiff
path: root/src/ai/ai_config.hpp
diff options
context:
space:
mode:
authortruebrain <truebrain@openttd.org>2011-11-29 23:26:35 +0000
committertruebrain <truebrain@openttd.org>2011-11-29 23:26:35 +0000
commit34d7f01cccfbb4dcd09f0b68ded513f495fa69ed (patch)
treef7d152f88f52d5c883538a5218138fa3a256dc1e /src/ai/ai_config.hpp
parentc38c16773ca0bc5c928486b18318eb5b147f8ff0 (diff)
downloadopenttd-34d7f01cccfbb4dcd09f0b68ded513f495fa69ed.tar.xz
(svn r23364) -Codechange: refactor AIConfig, moving it mostly to Scriptconfig
Diffstat (limited to 'src/ai/ai_config.hpp')
-rw-r--r--src/ai/ai_config.hpp141
1 files changed, 18 insertions, 123 deletions
diff --git a/src/ai/ai_config.hpp b/src/ai/ai_config.hpp
index 3ed06d346..1e738d14b 100644
--- a/src/ai/ai_config.hpp
+++ b/src/ai/ai_config.hpp
@@ -11,48 +11,28 @@
#ifndef AI_CONFIG_HPP
#define AI_CONFIG_HPP
-#ifdef ENABLE_AI
-#include <map>
-#include "ai_info.hpp"
-#include "../core/string_compare_type.hpp"
-#include "../company_type.h"
-
-/**
- * AI settings for one company slot.
- */
-class AIConfig {
-private:
- /** List with name=>value pairs of all AI-specific settings */
- typedef std::map<const char *, int, StringCompare> SettingValueList;
+#include "../script/script_config.hpp"
+class AIConfig : public ScriptConfig {
public:
+ /**
+ * Get the config of a company.
+ */
+ static AIConfig *GetConfig(CompanyID company, ScriptSettingSource source = SSS_DEFAULT);
+
AIConfig() :
- name(NULL),
- version(-1),
- info(NULL),
- config_list(NULL),
- is_random_ai(false)
+ ScriptConfig()
{}
- /**
- * Create a new AI config that is a copy of an existing config.
- * @param config The object to copy.
- */
- AIConfig(const AIConfig *config);
+ AIConfig(const AIConfig *config) :
+ ScriptConfig(config)
+ {}
- /** Delete an AI configuration. */
- ~AIConfig();
+ class AIInfo *GetInfo() const;
- /**
- * Set another AI to be loaded in this slot.
- * @param name The name of the AI.
- * @param version The version of the AI to load, or -1 of latest.
- * @param force_exact_match If true try to find the exact same version
- * as specified. If false any compatible version is ok.
- * @param is_random Is the AI chosen randomly?
- */
- void ChangeAI(const char *name, int version = -1, bool force_exact_match = false, bool is_random = false);
+ /* virtual */ int GetSetting(const char *name) const;
+ /* virtual */ void SetSetting(const char *name, int value);
/**
* When ever the AI Scanner is reloaded, all infos become invalid. This
@@ -64,95 +44,10 @@ public:
*/
bool ResetInfo(bool force_exact_match);
- /**
- * Get the AIInfo linked to this AIConfig.
- */
- class AIInfo *GetInfo() const;
-
- /**
- * Get the config list for this AIConfig.
- */
- const AIConfigItemList *GetConfigList();
-
- /**
- * Where to get the config from, either default (depends on current game
- * mode) or force either newgame or normal
- */
- enum AISettingSource {
- AISS_DEFAULT, ///< Get the AI config from the current game mode
- AISS_FORCE_NEWGAME, ///< Get the newgame AI config
- AISS_FORCE_GAME, ///< Get the AI config from the current game
- };
-
- /**
- * Get the config of a company.
- */
- static AIConfig *GetConfig(CompanyID company, AISettingSource source = AISS_DEFAULT);
-
- /**
- * Get the value of a setting for this config. It might fallback to his
- * 'info' to find the default value (if not set or if not-custom difficulty
- * level).
- * @return The (default) value of the setting, or -1 if the setting was not
- * found.
- */
- int GetSetting(const char *name) const;
-
- /**
- * Set the value of a setting for this config.
- */
- void SetSetting(const char *name, int value);
-
- /**
- * Reset all settings to their default value.
- */
- void ResetSettings();
-
- /**
- * Randomize all settings the AI requested to be randomized.
- */
- void AddRandomDeviation();
-
- /**
- * Is this config attached to an AI?
- */
- bool HasAI() const;
-
- /**
- * Is the current AI a randomly chosen AI?
- */
- bool IsRandomAI() const;
-
- /**
- * Get the name of the AI.
- */
- const char *GetName() const;
-
- /**
- * Get the version of the AI.
- */
- int GetVersion() const;
-
- /**
- * Convert a string which is stored in the config file or savegames to
- * custom settings of this AI.
- */
- void StringToSettings(const char *value);
-
- /**
- * Convert the custom settings to a string that can be stored in the config
- * file or savegames.
- */
- void SettingsToString(char *string, size_t size) const;
-
-private:
- const char *name; ///< Name of the AI
- int version; ///< Version of the AI
- class AIInfo *info; ///< AIInfo object for related to this AI version
- SettingValueList settings; ///< List with all setting=>value pairs that are configure for this AI
- AIConfigItemList *config_list; ///< List with all settings defined by this AI
- bool is_random_ai; ///< True if the AI in this slot was randomly chosen.
+protected:
+ /* virtual */ void PushExtraConfigList();
+ /* virtual */ void ClearConfigList();
+ /* virtual */ ScriptInfo *FindInfo(const char *name, int version, bool force_exact_match);
};
-#endif /* ENABLE_AI */
#endif /* AI_CONFIG_HPP */