Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gui/src/orxonox/Main.cc @ 1688

Last change on this file since 1688 was 1688, checked in by rgrieder, 16 years ago

Modified the GameState hierarchy so that you can get the parent with the actual type by calling getParent().

  • Property svn:eol-style set to native
File size: 3.9 KB
RevLine 
[612]1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
[1293]3 *                    > www.orxonox.net <
[612]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
[1638]24 *      Reto Grieder
[612]25 *   Co-authors:
26 *      ...
27 *
28 */
29
30 /**
[1021]31 @file
32 @brief Entry point of the program. Platform specific code.
[612]33  */
34
[1293]35#include "OrxonoxStableHeaders.h"
[612]36
[1293]37#include <exception>
[1638]38#include <cassert>
[1293]39
[1502]40#include "util/OrxonoxPlatform.h"
[612]41#include "core/SignalHandler.h"
[1638]42#include "core/Debug.h"
[612]43
[1661]44#include "gamestates/GSRoot.h"
45#include "gamestates/GSGraphics.h"
[1670]46#include "gamestates/GSStandalone.h"
47#include "gamestates/GSServer.h"
48#include "gamestates/GSClient.h"
[1661]49#include "gamestates/GSGUI.h"
[1670]50#include "gamestates/GSIO.h"
51#include "gamestates/GSIOConsole.h"
[1661]52
[612]53using namespace orxonox;
[1638]54
[1021]55#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
[612]56#include <CoreFoundation/CoreFoundation.h>
57
58// This function will locate the path to our application on OS X,
59// unlike windows you can not rely on the curent working directory
60// for locating your configuration files and resources.
61             std::string macBundlePath()
62{
[1638]63    char path[1024];
64    CFBundleRef mainBundle = CFBundleGetMainBundle();
65    assert(mainBundle);
[612]66
[1638]67    CFURLRef mainBundleURL = CFBundleCopyBundleURL(mainBundle);
68    assert(mainBundleURL);
[612]69
[1638]70    CFStringRef cfStringRef = CFURLCopyFileSystemPath( mainBundleURL, kCFURLPOSIXPathStyle);
71    assert(cfStringRef);
[612]72
[1638]73    CFStringGetCString(cfStringRef, path, 1024, kCFStringEncodingASCII);
[612]74
[1638]75    CFRelease(mainBundleURL);
76    CFRelease(cfStringRef);
[612]77
[1638]78    return std::string(path);
[612]79}
80#endif
81
[1638]82
[1670]83//#ifdef __cplusplus
84//extern "C" {
85//#endif
[612]86
[1638]87int main(int argc, char** argv)
[622]88{
[1663]89    // create a signal handler (only works for linux)
90    SignalHandler::getInstance()->doCatch(argv[0], "orxonox.log");
91
92
[1660]93    /*GameState* state1 = new GameState("state1");
94    GameState* state2 = new GameState("state2");
95    GameState* state3 = new GameState("state3");
96    GameState* state4 = new GameState("state4");
97    GameState* state5 = new GameState("state5");
98    GameState* state6 = new GameState("state6");
99
100    state1->addChild(state4);
101    state1->addChild(state6);
102    state2->addChild(state3);
103    state2->addChild(state5);
104    state6->addChild(state2);
105
[1661]106    state6->removeChild("state2");
107
[1660]108    state5->requestState("state3");
109    COUT(2) << std::endl;
110    state2->requestState("state2");
111    COUT(2) << std::endl;
112    state2->requestState("state1");
113    COUT(2) << std::endl;
114    state4->requestState("state3");
115    COUT(2) << std::endl;
116    state1->requestState("state4");
117    COUT(2) << std::endl;
118    state1->requestState("state2");
119    COUT(2) << std::endl;
120    state1->requestState("stat");
121    COUT(2) << std::endl;
122    state1->requestState("state5");
123    COUT(2) << std::endl;*/
124
125
[1661]126    GSRoot root;
127    GSGraphics graphics;
[1670]128    GSStandalone standalone;
129    GSServer server;
130    GSClient client;
[1661]131    GSGUI gui;
[1670]132    GSIOConsole ioConsole;
[1660]133
[1661]134    root.addChild(&graphics);
[1670]135    graphics.addChild(&standalone);
136    graphics.addChild(&server);
137    graphics.addChild(&client);
[1661]138    graphics.addChild(&gui);
139
[1688]140    root.addChild(&ioConsole);
[1670]141
[1664]142    root.feedCommandLine(argc, argv);
[1672]143    root.start();
[1661]144
[1638]145    return 0;
[612]146}
147
[1670]148//#ifdef __cplusplus
149//}
150//#endif
Note: See TracBrowser for help on using the repository browser.