Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Mar 19, 2009, 4:59:30 PM (15 years ago)
Author:
rgrieder
Message:

Added new class: Game
It represents basic operation related to the running game like start and stop or managing the new GameStates.
And since only three lines were left in Main.cc I thought I could move that to the very beginning of 'Game'.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/gui/src/core/RootGameState.cc

    r2710 r2805  
    3232#include "util/Exception.h"
    3333#include "Clock.h"
    34 #include "CommandLine.h"
    3534
    3635namespace orxonox
    3736{
    38     SetCommandLineArgument(state, "gui").shortcut("s");
    39 
    4037    RootGameState::RootGameState(const std::string& name)
    4138        : GameState<GameStateBase>(name)
     
    119116        this->stateRequest_ = name;
    120117    }
    121 
    122     /**
    123     @brief
    124         Main loop of the orxonox game.
    125         Starts the game. The little 'while' denotes the main loop.
    126         Whenever the root state is selected, the game ends.
    127     @param name
    128         State to start with (usually main menu or specified by command line)
    129     @note
    130         We use the Ogre::Timer to measure time since it uses the most precise
    131         method an a platform (however the windows timer lacks time when under
    132         heavy kernel load!).
    133     */
    134     void RootGameState::start()
    135     {
    136         // Don't catch errors when having a debugger in msvc
    137 #if !defined(ORXONOX_COMPILER_MSVC) || defined(NDEBUG)
    138         try
    139         {
    140 #endif
    141             // start global orxonox time
    142             Clock clock;
    143 
    144             this->activate();
    145 
    146             // get initial state from command line
    147             gotoState(CommandLine::getValue("state"));
    148 
    149             while (this->activeChild_)
    150             {
    151                 clock.capture();
    152 
    153                 this->tick(clock);
    154 
    155                 if (this->stateRequest_ != "")
    156                     gotoState(stateRequest_);
    157             }
    158 
    159             this->deactivate();
    160 #if !defined(ORXONOX_COMPILER_MSVC) || defined(NDEBUG)
    161         }
    162         // Note: These are all unhandled exceptions that should not have made its way here!
    163         // almost complete game catch block to display the messages appropriately.
    164         catch (std::exception& ex)
    165         {
    166             COUT(0) << ex.what() << std::endl;
    167             COUT(0) << "Program aborted." << std::endl;
    168             abort();
    169         }
    170         // anything that doesn't inherit from std::exception
    171         catch (...)
    172         {
    173             COUT(0) << "An unidentifiable exception has occured. Program aborted." << std::endl;
    174             abort();
    175         }
    176 #endif
    177     }
    178118}
Note: See TracChangeset for help on using the changeset viewer.