Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/orxonox/Main.cc @ 2873

Last change on this file since 2873 was 2873, checked in by bknecht, 15 years ago

Doxygen fixes. Please advise me on better places or methods to fix it.

At the moment the Orxonox Doxygen Documentation is called "Bullet Documentation" due to Doxygen code inside the included Bullet files. I commented out this main-page of the documentation as it will most probably solve the problem.
Further I changed the version to 0.0.2 Bellatrix as this is the current version we're working on as far as I know.

Oh yeah, I added a doxygen mainpage comment at the beginning of Main.cc maybe there's a better place for this.

  • Property svn:eol-style set to native
File size: 4.7 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 *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007
24 *      Reto Grieder
25 *   Co-authors:
26 *      ...
27 *
28 */
29 
30 /**
31 @mainpage Orxonox Documentation
32 */
33
34 /**
35 @file
36 @brief Entry point of the program.
37  */
38
39#include "OrxonoxStableHeaders.h"
40
41#include <exception>
42#include <cassert>
43
44#include "OrxonoxConfig.h"
45#include "util/Debug.h"
46#include "util/SignalHandler.h"
47#include "core/ConfigFileManager.h"
48#include "core/CommandLine.h"
49#include "core/CommandExecutor.h"
50#include "core/Identifier.h"
51#include "core/Core.h"
52#include "core/Language.h"
53
54#include "gamestates/GSRoot.h"
55#include "gamestates/GSGraphics.h"
56#include "gamestates/GSStandalone.h"
57#include "gamestates/GSServer.h"
58#include "gamestates/GSClient.h"
59#include "gamestates/GSDedicated.h"
60#include "gamestates/GSGUI.h"
61#include "gamestates/GSIOConsole.h"
62
63#ifdef ORXONOX_PLATFORM_APPLE
64#include <CoreFoundation/CoreFoundation.h>
65
66// This function will locate the path to our application on OS X,
67// unlike windows you can not rely on the curent working directory
68// for locating your configuration files and resources.
69             std::string macBundlePath()
70{
71    char path[1024];
72    CFBundleRef mainBundle = CFBundleGetMainBundle();
73    assert(mainBundle);
74
75    CFURLRef mainBundleURL = CFBundleCopyBundleURL(mainBundle);
76    assert(mainBundleURL);
77
78    CFStringRef cfStringRef = CFURLCopyFileSystemPath( mainBundleURL, kCFURLPOSIXPathStyle);
79    assert(cfStringRef);
80
81    CFStringGetCString(cfStringRef, path, 1024, kCFStringEncodingASCII);
82
83    CFRelease(mainBundleURL);
84    CFRelease(cfStringRef);
85
86    return std::string(path);
87}
88#endif
89
90
91SetCommandLineArgument(settingsFile, "orxonox.ini");
92SetCommandLineArgument(configFileDirectory, "");
93
94int main(int argc, char** argv)
95{
96    using namespace orxonox;
97
98    // Parse command line arguments
99    try
100    {
101        CommandLine::parseAll(argc, argv);
102    }
103    catch (ArgumentException& ex)
104    {
105        COUT(1) << ex.what() << std::endl;
106        COUT(0) << "Usage:" << std::endl << "orxonox " << CommandLine::getUsageInformation() << std::endl;
107    }
108
109    // Do this after parsing the command line to allow customisation
110    Core::postMainInitialisation();
111
112    // create a signal handler (only active for linux)
113    SignalHandler signalHandler;
114    signalHandler.doCatch(argv[0], Core::getLogPathString() + "orxonox_crash.log");
115
116    // Create the ConfigFileManager before creating the GameStates in order to have
117    // setConfigValues() in the constructor (required).
118    ConfigFileManager* configFileManager = new ConfigFileManager();
119    configFileManager->setFilename(ConfigFileType::Settings, CommandLine::getValue("settingsFile").getString());
120    // create the Core settings to configure the output level
121    Language* language = new Language();
122    Core*     core     = new Core();
123
124    // put GameStates in its own scope so we can destroy the identifiers at the end of main().
125    {
126        // create the gamestates
127        GSRoot root;
128        GSGraphics graphics;
129        GSStandalone standalone;
130        GSServer server;
131        GSClient client;
132        GSDedicated dedicated;
133        GSGUI gui;
134        GSIOConsole ioConsole;
135
136        // make the hierarchy
137        root.addChild(&graphics);
138        graphics.addChild(&standalone);
139        graphics.addChild(&server);
140        graphics.addChild(&client);
141        graphics.addChild(&gui);
142        root.addChild(&ioConsole);
143        root.addChild(&dedicated);
144
145        // Here happens the game
146        root.start();
147    }
148
149    // destroy singletons
150    delete core;
151    delete language;
152    delete configFileManager;
153
154    // Clean up class hierarchy stuff (identifiers, xmlport, configvalue, consolecommand)
155    Identifier::destroyAllIdentifiers();
156    // destroy command line arguments
157    CommandLine::destroyAllArguments();
158    // Also delete external console command that don't belong to an Identifier
159    CommandExecutor::destroyExternalCommands();
160
161    return 0;
162}
Note: See TracBrowser for help on using the repository browser.