author | truebrain |
Sun, 15 Jun 2008 22:37:35 +0000 | |
branch | noai |
changeset 10972 | 986675d19245 |
parent 10852 | f02afc46afa8 |
permissions | -rw-r--r-- |
10852
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
1 |
/* $Id$ */ |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
2 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
3 |
/** @file ai_gamesettings.hpp Everything to read game settings. */ |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
4 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
5 |
#ifndef AI_GAMESETTINGS_HPP |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
6 |
#define AI_GAMESETTINGS_HPP |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
7 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
8 |
#include "ai_object.hpp" |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
9 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
10 |
/** |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
11 |
* Class that handles all game settings related functions. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
12 |
* |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
13 |
* @note AIGameSettings::IsValid and AIGameSettings::GetValue are functions |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
14 |
* that rely on the settings as OpenTTD stores them in savegame and |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
15 |
* openttd.cfg. No guarantees can be given on the long term validity, |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
16 |
* consistency and stability of the names, values and value ranges. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
17 |
* Using these settings can be dangerous and could cause issues in |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
18 |
* future versions. To make sure that a setting still exists in the |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
19 |
* current version you have to run AIGameSettings::IsValid before |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
20 |
* accessing it. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
21 |
* |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
22 |
* @note The names of the setting for AIGameSettings::IsValid and |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
23 |
* AIGameSettings::GetValue are the same ones as those that are shown by |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
24 |
* the list_patches command in the in-game console. Settings that are |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
25 |
* string based are NOT supported and AIGAmeSettings::IsValid will return |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
26 |
* false for them. These settings will not be supported either because |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
27 |
* they have no relevance for the AI (default player names, server IPs, |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
28 |
* etc.). |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
29 |
*/ |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
30 |
class AIGameSettings : public AIObject { |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
31 |
public: |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
32 |
static const char *GetClassName() { return "AIGameSettings"; } |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
33 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
34 |
/** |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
35 |
* Is the given game setting a valid setting for this instance of OpenTTD? |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
36 |
* @param setting The setting to check for existence. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
37 |
* @warning Results of this function are not governed by the API. This means |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
38 |
* that a setting that previously existed can be gone or has |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
39 |
* changed it's name. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
40 |
* @note Results achieved in the past offer no gurantee for the future. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
41 |
* @return True if and only if the setting is valid. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
42 |
*/ |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
43 |
static bool IsValid(const char *setting); |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
44 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
45 |
/** |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
46 |
* Gets the value of the game setting. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
47 |
* @param setting The setting to get the value of. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
48 |
* @pre IsValid(setting). |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
49 |
* @warning Results of this function are not governed by the API. This means |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
50 |
* that the value of settings may be out of the expected range. It |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
51 |
* also means that a setting that previously existed can be gone or |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
52 |
* has changed it's name/characteristics. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
53 |
* @note Results achieved in the past offer no gurantee for the future. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
54 |
* @return The value for the setting. |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
55 |
*/ |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
56 |
static int32 GetValue(const char *setting); |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
57 |
}; |
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
58 |
|
f02afc46afa8
(svn r13403) [NoAI] -Add: wrapper to read the game settings directly without *any* promises on the results being stable in the future when OpenTTD changes the semantics.
rubidium
parents:
diff
changeset
|
59 |
#endif /* AI_GAMESETTINGS_HPP */ |