Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem3/src/core/Core.h @ 2690

Last change on this file since 2690 was 2690, checked in by rgrieder, 15 years ago
  • Moved def_keybindings to media repository in folder defaultConfig
  • If you have a better name for that folder, you're welcome
  • the "def_" prefix has been removed
  • ConfigFileManager now looks for a file in media/defaultConfig with the same name if the config file does not exist yet
  • No file gets written while only loading
  • Removed hacky GCC 3 warning code for each library and instead just put "Wno-sign-compare" to the GCC 3 flags (that will remove all boost::filesystem warnings)
  • ogre.cfg still remains on tardis for the development build (not install though)
  • Property svn:eol-style set to native
File size: 5.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 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      Reto Grieder
26 *
27 */
28
29/**
30    @file
31    @brief Declaration of the Core class.
32
33    The Core class is a singleton, only used to configure some variables
34    in the core through the config-file.
35*/
36
37#ifndef _Core_H__
38#define _Core_H__
39
40#include "CorePrereqs.h"
41
42#include <cassert>
43#include "OrxonoxClass.h"
44#include "util/OutputHandler.h"
45
46// Only allow main to access setDevBuild, so we need a forward declaration
47int main(int, char**);
48
49namespace orxonox
50{
51    //! The Core class is a singleton, only used to configure some config-values.
52    class _CoreExport Core : public OrxonoxClass
53    {
54        friend int ::main(int, char**); // sets isDevBuild_s
55
56        public:
57            Core();
58            ~Core();
59            void setConfigValues();
60
61            static Core& getInstance() { assert(Core::singletonRef_s); return *Core::singletonRef_s; }
62
63            static int   getSoftDebugLevel(OutputHandler::OutputDevice device = OutputHandler::LD_All);
64            static void  setSoftDebugLevel(OutputHandler::OutputDevice device, int level);
65            static const std::string& getLanguage();
66            static void  resetLanguage();
67
68            static bool isDevBuild() { return Core::isDevBuild_s; }
69
70            static void tsetMediaPath(const std::string& path)
71            { assert(singletonRef_s); singletonRef_s->_tsetMediaPath(path); }
72            static const std::string& getMediaPath()  { return mediaPath_s; }
73            static const std::string& getConfigPath() { return configPath_s; }
74            static const std::string& getLogPath()    { return logPath_s; }
75
76            // fast access global variables.
77            static bool showsGraphics() { return bShowsGraphics_s; }
78            static bool hasServer()     { return bHasServer_s; }
79            static bool isClient()      { return bIsClient_s; }
80            static bool isStandalone()  { return bIsStandalone_s; }
81            static bool isMaster()      { return bIsMaster_s; }
82            static void setShowsGraphics(bool val) { bShowsGraphics_s = val; updateIsMaster(); }
83            static void setHasServer    (bool val) { bHasServer_s     = val; updateIsMaster(); }
84            static void setIsClient     (bool val) { bIsClient_s      = val; updateIsMaster(); }
85            static void setIsStandalone (bool val) { bIsStandalone_s  = val; updateIsMaster(); }
86            static void updateIsMaster  ()         { bIsMaster_s      = (bHasServer_s || bIsStandalone_s); }
87
88        private:
89            Core(const Core&);
90            void resetLanguageIntern();
91            void initializeRandomNumberGenerator();
92            void debugLevelChanged();
93            void languageChanged();
94            void mediaPathChanged();
95            void _tsetMediaPath(const std::string& path);
96
97            static void createDirectories();
98            static void checkDevBuild();
99
100            int softDebugLevel_;                            //!< The debug level
101            int softDebugLevelConsole_;                     //!< The debug level for the console
102            int softDebugLevelLogfile_;                     //!< The debug level for the logfile
103            int softDebugLevelShell_;                       //!< The debug level for the ingame shell
104            std::string language_;                          //!< The language
105            bool bInitializeRandomNumberGenerator_;         //!< If true, srand(time(0)) is called
106
107            static bool bShowsGraphics_s;                   //!< global variable that tells whether to show graphics
108            static bool bHasServer_s;                       //!< global variable that tells whether this is a server
109            static bool bIsClient_s;
110            static bool bIsStandalone_s;
111            static bool bIsMaster_s;
112
113            static bool isDevBuild_s;                       //!< True for builds in the build directory (not installed)
114            static std::string configPath_s;                //!< Path to the config file folder
115            static std::string logPath_s;                   //!< Path to the log file folder
116            static std::string mediaPath_s;                 //!< Path to the data/media file folder
117
118            static Core* singletonRef_s;
119    };
120}
121
122#endif /* _Core_H__ */
Note: See TracBrowser for help on using the repository browser.