Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

Fixed install target:

  • log and config file go a to separate folder each
  • The SignalHandler crash log is now "orxonox_crash.log" to avoid opening the file twice which might result in problems
  • moved tcl scripts to media/tcl8.#/ as a temporary solution. I've also created a ticket to fix this.
  • UPDATE YOUR MEDIA REPOSITORY
  • orxonox.log pre-main gets written to either %TEMP% (windows) or /tmp (Unix) and when the path was set, the content is copied.
  • removed Settings class and moved media path to Core
  • media, log and config path are now all in Core where only the media path can be configured via ini file or command line
  • Core::isDevBuild() tells whether we are running in the build or the installation directory (determined by the presence of "orxonox_dev_build.kepp_me" in the binary dir)
  • renamed Settings::getDataPath to Core::getMediaPath
  • 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 const std::string& getMediaPath()
71            { assert(singletonRef_s); return singletonRef_s->mediaPath_; }
72            static void tsetMediaPath(const std::string& path)
73            { assert(singletonRef_s); singletonRef_s->_tsetMediaPath(path); }
74            static const std::string& getConfigPath() { return configPath_s; }
75            static const std::string& getLogPath()    { return logPath_s; }
76
77            // fast access global variables.
78            static bool showsGraphics() { return bShowsGraphics_s; }
79            static bool hasServer()     { return bHasServer_s; }
80            static bool isClient()      { return bIsClient_s; }
81            static bool isStandalone()  { return bIsStandalone_s; }
82            static bool isMaster()      { return bIsMaster_s; }
83            static void setShowsGraphics(bool val) { bShowsGraphics_s = val; updateIsMaster(); }
84            static void setHasServer    (bool val) { bHasServer_s     = val; updateIsMaster(); }
85            static void setIsClient     (bool val) { bIsClient_s      = val; updateIsMaster(); }
86            static void setIsStandalone (bool val) { bIsStandalone_s  = val; updateIsMaster(); }
87            static void updateIsMaster  ()         { bIsMaster_s      = (bHasServer_s || bIsStandalone_s); }
88
89        private:
90            Core(const Core&);
91            void resetLanguageIntern();
92            void initializeRandomNumberGenerator();
93            void debugLevelChanged();
94            void languageChanged();
95            void mediaPathChanged();
96            void _tsetMediaPath(const std::string& path);
97
98            static void setDevBuild();
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            std::string mediaPath_;                         //!< Path to the data/media file folder
107
108            static bool bShowsGraphics_s;                   //!< global variable that tells whether to show graphics
109            static bool bHasServer_s;                       //!< global variable that tells whether this is a server
110            static bool bIsClient_s;
111            static bool bIsStandalone_s;
112            static bool bIsMaster_s;
113
114            static bool isDevBuild_s;                       //!< True for builds in the build directory (not installed)
115            static std::string configPath_s;                //!< Path to the config file folder
116            static std::string logPath_s;                   //!< Path to the log 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.