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'.

Location:
code/branches/gui/src/core
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • code/branches/gui/src/core/Clock.h

    r2171 r2805  
    4545    class _CoreExport Clock
    4646    {
    47         friend class RootGameState;
    48 
    4947    public:
    5048        Clock();
    5149        ~Clock();
     50
     51        void capture();
    5252
    5353        unsigned long long getMicroseconds()   const { return tickTime_; }
     
    6363    private:
    6464        Clock(const Clock& instance);
    65         void capture();
    6665
    6766        Ogre::Timer*       timer_;
  • code/branches/gui/src/core/GameState.h

    r1755 r2805  
    6565        template <class ParentType>
    6666        friend class GameState;
     67        // Hack
     68        friend class Game;
    6769
    6870    public:
  • 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}
  • code/branches/gui/src/core/RootGameState.h

    r2662 r2805  
    3737    class _CoreExport RootGameState : public GameState<GameStateBase>
    3838    {
     39        // Hack!
     40        friend class Game;
     41
    3942    public:
    4043        RootGameState(const std::string& name);
     
    4245
    4346        void requestState(const std::string& name);
    44         void start();
    4547
    4648    private:
Note: See TracChangeset for help on using the changeset viewer.