Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gamestate/src/libraries/core/CorePrereqs.h @ 6666

Last change on this file since 6666 was 6432, checked in by rgrieder, 15 years ago

Changed the way config values associated with general settings (ConfigFileType::Settings) are handled:

  • ConfigFileManager only handles config files listed in the ConfigFileType enum (normal enum again)
  • ConfigFileManager only takes care of ConfigFiles and returns a pointer to the right one, just two functions left. —> use like: ConfigFileManager::getInstance().getConfigFile(myType)→doSomething();
  • Moved all code (except for the argument completion functions) relating to ConfigFileType::Settings to a new class: SettingsConfigFile, which is a Singleton (it doesn't make sense to have multiple instances unless you start coding a lot more)
  • SettingsConfigFile handles config value containers according to their section and entry in the ini file, not according to class and variables names. (In most cases it will be class and variable names though)
  • SettingsConfigFile supports:
    • clear() (removes any file entries not associated to a config value container)
    • updateConfigValues() (does exactly that through the identifier)
    • config, tconfig and getConfig
    • commands listed above are exported to tolua, and tconfig, config and getConfig were given shortcuts in Lua (e.g. orxonox.config)
  • If you need to organise ConfigFiles yourself, just do it without the ConfigFileManager, like the KeyBinder does.
  • All getValue() functions have been split into getOrCreateValue() and getValue(), which is const
  • Removed obsolete config value management code in the Identifier (it still stores and destroys them and provides access to them)

All of that leads to one HUGE advantage:
"config OutputHandler softDebugLevelInGameConsole"
works now :D (any further implications are up to the reader…)
(it didn't work before because the actual config value container is in the InGameConsole singleton)

  • Property svn:eol-style set to native
File size: 7.1 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Reto Grieder
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30@file
31@brief
32    Shared library macros, enums, constants and forward declarations for the core library
33*/
34
35#ifndef _CorePrereqs_H__
36#define _CorePrereqs_H__
37
38#include "OrxonoxConfig.h"
39
40//-----------------------------------------------------------------------
41// Shared library settings
42//-----------------------------------------------------------------------
43
44#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined( CORE_STATIC_BUILD )
45#  ifdef CORE_SHARED_BUILD
46#    define _CoreExport __declspec(dllexport)
47#  else
48#    if defined( __MINGW32__ )
49#      define _CoreExport
50#    else
51#      define _CoreExport __declspec(dllimport)
52#    endif
53#  endif
54#elif defined ( ORXONOX_GCC_VISIBILITY )
55#  define _CoreExport  __attribute__ ((visibility("default")))
56#else
57#  define _CoreExport
58#endif
59
60//-----------------------------------------------------------------------
61// Constants
62//-----------------------------------------------------------------------
63
64namespace orxonox
65{
66    static const uint32_t OBJECTID_UNKNOWN = static_cast<uint32_t>(-1);
67}
68
69//-----------------------------------------------------------------------
70// Enums
71//-----------------------------------------------------------------------
72
73namespace orxonox
74{
75    namespace XMLPort
76    {
77        enum Mode
78        {
79            NOP,
80            LoadObject,
81            SaveObject,
82            ExpandObject
83        };
84    }
85
86    namespace ConfigFileType
87    {
88        enum Value
89        {
90            Settings,
91            JoyStickCalibration,
92            CommandHistory
93            // Don't forget to adjust the array size in the ConfigFileManager when adding a new entry here!
94        };
95    }
96
97    namespace KeybindMode
98    {
99        enum Value
100        {
101            OnPress,
102            OnHold,
103            OnRelease,
104            None
105        };
106    };
107}
108
109//-----------------------------------------------------------------------
110// Forward declarations
111//-----------------------------------------------------------------------
112
113namespace orxonox
114{
115    typedef std::string LanguageEntryLabel;
116
117    class ArgumentCompleter;
118    class ArgumentCompletionListElement;
119    class BaseObject;
120    template <class T>
121    class ClassFactory;
122    template <class T>
123    class ClassIdentifier;
124    class ClassTreeMask;
125    class ClassTreeMaskIterator;
126    class ClassTreeMaskNode;
127    class ClassTreeMaskObjectIterator;
128    class CommandEvaluation;
129    class CommandLineParser;
130    class CommandLineArgument;
131    class ConfigFile;
132    class ConfigFileEntry;
133    class ConfigFileEntryComment;
134    class ConfigFileEntryValue;
135    class ConfigFileManager;
136    class ConfigFileSection;
137    class ConfigValueContainer;
138    class ConsoleCommand;
139    class Core;
140    class DynLib;
141    class DynLibManager;
142    struct Event;
143    class EventState;
144    class Executor;
145    template <class T>
146    class ExecutorMember;
147    class ExecutorStatic;
148    class Factory;
149    class Functor;
150    template <class T>
151    class FunctorMember;
152    class FunctorStatic;
153    class Game;
154    class GameState;
155    struct GameStateInfo;
156    struct GameStateTreeNode;
157    class GraphicsManager;
158    class GUIManager;
159    class Identifier;
160    class IOConsole;
161    class IRC;
162    template <class T>
163    class Iterator;
164    class Language;
165    class LuaState;
166    class MemoryArchive;
167    class MemoryArchiveFactory;
168    class MetaObjectList;
169    class MetaObjectListElement;
170    class Namespace;
171    class NamespaceNode;
172    template <class T>
173    class ObjectList;
174    class ObjectListBase;
175    class ObjectListBaseElement;
176    template <class T>
177    class ObjectListElement;
178    template <class T>
179    class ObjectListIterator;
180    class OgreWindowEventListener;
181    class OrxonoxClass;
182    class PathConfig;
183    struct ResourceInfo;
184    class SettingsConfigFile;
185    class Shell;
186    class ShellListener;
187    template <class T>
188    class SmartPtr;
189    template <class T>
190    class SubclassIdentifier;
191    class TclBind;
192    struct TclInterpreterBundle;
193    template <class T>
194    class TclThreadList;
195    class TclThreadManager;
196    class Template;
197    class Thread;
198    class ThreadPool;
199    template <class T>
200    class WeakPtr;
201    class WindowEventListener;
202    class XMLFile;
203    class XMLNameListener;
204    template <class T, class O>
205    class XMLPortClassObjectContainer;
206    template <class T>
207    class XMLPortClassParamContainer;
208    class XMLPortObjectContainer;
209    class XMLPortParamContainer;
210
211    // Input
212    class BaseCommand;
213    class BufferedParamCommand;
214    class Button;
215    class HalfAxis;
216    class InputBuffer;
217    class InputDevice;
218    template <class Traits>
219    class InputDeviceTemplated;
220    class InputHandler;
221    class InputManager;
222    class InputState;
223    struct InputStatePriority;
224    class JoyStickQuantityListener;
225    class JoyStick;
226    class KeyBinder;
227    class KeyBinderManager;
228    class Keyboard;
229    class KeyDetector;
230    class KeyEvent;
231    class Mouse;
232    class ParamCommand;
233    class SimpleCommand;
234}
235
236// CppTcl
237namespace Tcl
238{
239    class interpreter;
240    class object;
241}
242
243// Boost
244namespace boost
245{
246    namespace filesystem
247    {
248        struct path_traits;
249        template <class String, class Traits> class basic_path;
250        typedef basic_path<std::string, path_traits> path;
251    }
252    class thread;
253    class mutex;
254    class shared_mutex;
255    class condition_variable;
256}
257
258// Ogre
259namespace Ogre
260{
261    class DataStream;
262    template <class T> class SharedPtr;
263    typedef SharedPtr<DataStream> DataStreamPtr;
264}
265namespace orxonox
266{
267    // Import the Ogre::DataStream
268    using Ogre::DataStream;
269    using Ogre::DataStreamPtr;
270}
271
272// CEGUI
273namespace CEGUI
274{
275    class DefaultLogger;
276    class Logger;
277    class LuaScriptModule;
278
279    class OgreCEGUIRenderer;
280    class OgreCEGUIResourceProvider;
281    class OgreCEGUITexture;
282}
283
284// Lua
285struct lua_State;
286
287// TinyXML and TinyXML++
288class TiXmlString;
289class TiXmlOutStream;
290class TiXmlNode;
291class TiXmlHandle;
292class TiXmlDocument;
293class TiXmlElement;
294class TiXmlComment;
295class TiXmlUnknown;
296class TiXmlAttribute;
297class TiXmlText;
298class TiXmlDeclaration;
299class TiXmlParsingData;
300namespace ticpp
301{
302    class Document;
303    class Element;
304    class Declaration;
305    class StylesheetReference;
306    class Text;
307    class Comment;
308    class Attribute;
309}
310namespace orxonox
311{
312    using ticpp::Element;
313}
314
315#endif /* _CorePrereqs_H__ */
Note: See TracBrowser for help on using the repository browser.