Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/doc/src/orxonox/Main.cc @ 7346

Last change on this file since 7346 was 7346, checked in by rgrieder, 14 years ago

Added "doc_internal" target. It generates additional documentation from the executable.
That enables to gather information at run time (e.g. SetConsoleCommand, SetCommandLineArgument, registerNetworkFunction, etc.) and then write useful Doxygen documentation to one file.
Currently there is no implementation, just a stub in src/orxonox/Main.cc that can be extended.

  • Property svn:eol-style set to native
File size: 3.9 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@file
32@brief
33    The main function of Orxonox (but not the entry point of the program!)
34*/
35
36#include "OrxonoxPrereqs.h"
37
38#include "core/CommandLineParser.h"
39#include "core/Game.h"
40#include "core/LuaState.h"
41#include "ToluaBindOrxonox.h"
42#include "ToluaBindNetwork.h"
43#include "Main.h"
44
45DeclareToluaInterface(Orxonox);
46DeclareToluaInterface(Network);
47
48namespace orxonox
49{
50    //! @cmdarg
51    SetCommandLineSwitch(console).information("Start in console mode (text IO only)");
52    //! @cmdarg
53    SetCommandLineSwitch(server).information("Start in server mode");
54    //! @cmdarg
55    SetCommandLineSwitch(client).information("Start in client mode");
56    //! @cmdarg
57    SetCommandLineSwitch(dedicated).information("Start in dedicated server mode");
58    //! @cmdarg
59    SetCommandLineSwitch(standalone).information("Start in standalone mode");
60    //! @cmdarg
61    SetCommandLineSwitch(dedicatedClient).information("Start in dedicated client mode");
62
63    //! @cmdarg
64    SetCommandLineArgument(generateDoc, "Internal.dox")
65        .information("Generates a Doxygen file from things like SetConsoleCommand");
66
67    /**
68    @brief
69        Starting point of orxonox (however not the entry point of the program!)
70    */
71    int main(const std::string& strCmdLine)
72    {
73        Game* game = new Game(strCmdLine);
74
75        if (CommandLineParser::existsArgument("generateDoc"))
76        {
77            // Generate additional documentation written to ONE file
78            std::string filename;
79            CommandLineParser::getValue("generateDoc", &filename);
80        }
81        else
82        {
83            game->setStateHierarchy(
84            "root"
85            " graphics"
86            "  mainMenu"
87            "  standalone,server,client"
88            "   level"
89            " server,client"
90            "  level"
91            );
92
93            game->requestState("root");
94
95            // Some development hacks (not really, but in the future, this calls won't make sense anymore)
96            if (CommandLineParser::getValue("standalone").getBool())
97                Game::getInstance().requestStates("graphics, standalone, level");
98            else if (CommandLineParser::getValue("server").getBool())
99                Game::getInstance().requestStates("graphics, server, level");
100            else if (CommandLineParser::getValue("client").getBool())
101                Game::getInstance().requestStates("graphics, client, level");
102            else if (CommandLineParser::getValue("dedicated").getBool())
103                Game::getInstance().requestStates("server, level");
104            else if (CommandLineParser::getValue("dedicatedClient").getBool())
105                Game::getInstance().requestStates("client, level");
106            else
107            {
108                if (!CommandLineParser::getValue("console").getBool())
109                    Game::getInstance().requestStates("graphics, mainMenu");
110            }
111
112            game->run();
113        }
114
115        delete game;
116
117        return 0;
118    }
119}
Note: See TracBrowser for help on using the repository browser.