Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/resource/src/core/Core.h @ 3343

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

Expanded Core class by loadGraphics and unloadGraphics which don't do anything at the moment.

  • Property svn:eol-style set to native
File size: 4.2 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 *      Reto Grieder
25 *   Co-authors:
26 *      ...
27 *
28 */
29
30/**
31@file
32@brief
33    Declaration of the Core class.
34@details
35    The Core class is a singleton, only used to configure some variables
36    in the core through the config-file.
37*/
38
39#ifndef _Core_H__
40#define _Core_H__
41
42#include "CorePrereqs.h"
43
44#include <cassert>
45#include "util/OutputHandler.h"
46
47namespace orxonox
48{
49    class CoreConfiguration;
50
51    /**
52    @brief
53        The Core class is a singleton used to configure the program basics.
54    @details
55        The class provides information about the media, config and log path.
56        It determines those by the use of platform specific functions.
57    */
58    class _CoreExport Core
59    {
60        public:
61            /**
62            @brief
63                Determines the executable path, checks for build directory runs, creates
64                the output directories and sets up the other core library singletons.
65            @throws
66                GeneralException
67            */
68            Core(const std::string& cmdLine);
69            ~Core();
70
71            void setConfigValues();
72
73            void update(const Clock& time);
74
75            void loadGraphics();
76            void unloadGraphics();
77
78            static Core& getInstance() { assert(Core::singletonRef_s); return *Core::singletonRef_s; }
79
80            static int   getSoftDebugLevel(OutputHandler::OutputDevice device = OutputHandler::LD_All);
81            static void  setSoftDebugLevel(OutputHandler::OutputDevice device, int level);
82            static const std::string& getLanguage();
83            static void  resetLanguage();
84
85            static void tsetMediaPath(const std::string& path);
86            //! Returns the path to the config files as boost::filesystem::path
87            static const boost::filesystem::path& getMediaPath();
88            //! Returns the path to the config files as boost::filesystem::path
89            static const boost::filesystem::path& getConfigPath();
90            //! Returns the path to the log files as boost::filesystem::path
91            static const boost::filesystem::path& getLogPath();
92            //! Returns the path to the data files as std::string
93            static std::string getMediaPathString();
94            //! Returns the path to the config files as std::string
95            static std::string getConfigPathString();
96            //! Returns the path to the log files as std::string
97            static std::string getLogPathString();
98
99        private:
100            Core(const Core&); //!< Don't use (undefined symbol)
101
102            void checkDevBuild();
103            void setExecutablePath();
104            void createDirectories();
105            void setThreadAffinity(int limitToCPU);
106
107            // Singletons
108            ConfigFileManager*    configFileManager_;
109            Language*             languageInstance_;
110            LuaBind*              luaBind_;
111            Shell*                shell_;
112            SignalHandler*        signalHandler_;
113            TclBind*              tclBind_;
114            TclThreadManager*     tclThreadManager_;
115
116            bool                  isDevBuild_;          //!< True for builds in the build directory (not installed)
117            bool                  bGraphicsLoaded_;
118            CoreConfiguration*    configuration_;
119
120            static Core* singletonRef_s;
121    };
122}
123
124#endif /* _Core_H__ */
Note: See TracBrowser for help on using the repository browser.