Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/network/src/orxonox/Orxonox.h @ 986

Last change on this file since 986 was 984, checked in by dumenim, 17 years ago

some bugfix in GameStateManager.cc, CMakeLists now generates networktest executable, some test functions added

File size: 2.8 KB
RevLine 
[612]1/**
2 @file  Orxonox.h
3 @brief Main Orxonox Class File
4 @author Benjamin Knecht <beni_at_orxonox.net>
5 */
6
[673]7#ifndef _Orxonox_H__
8#define _Orxonox_H__
[612]9
[715]10#include <string>
11
[612]12#include <OgrePrerequisites.h>
[926]13//#include <OIS/OISPrereqs.h>
[612]14
15#include "OrxonoxPrereqs.h"
[777]16#include "audio/AudioPrereqs.h"
[729]17
[612]18#include "GraphicsEngine.h"
[922]19#include "InputEventListener.h"
[612]20
21
22// TODO: Orxonox should maybe derive from BaseObject
23//! Orxonox singleton class
24namespace orxonox {
25
26  enum gameMode{
27    SERVER,
28    CLIENT,
[888]29    STANDALONE
[612]30  };
31
[922]32  class _OrxonoxExport Orxonox : public InputEventListener
[612]33  {
34    public:
[715]35      void init(int argc, char **argv, std::string path);
[612]36      void start();
37      // not sure if this should be private
[929]38      void abortImmediate(/* some error code */);
[917]39      void abortRequest();
[929]40      inline Ogre::SceneManager*  getSceneManager()        { return ogre_->getSceneManager(); };
41      inline GraphicsEngine*      getOgrePointer()         { return ogre_; };
[888]42      inline audio::AudioManager* getAudioManagerPointer() { return auMan_; };
[929]43      inline BulletManager*       getBulletMgr()           { return this->bulletMgr_; }
[612]44
[929]45      static Orxonox* getSingleton();
[934]46      static void destroy();
[929]47
48   private:
49      // don't mess with singletons
[612]50      Orxonox();
[929]51      Orxonox(Orxonox& instance);
52      Orxonox& operator=(const Orxonox& instance);
53      ~Orxonox();
54
[612]55      // init functions
[715]56      void serverInit(std::string path);
57      void clientInit(std::string path);
58      void standaloneInit(std::string path);
[929]59
[612]60      // run functions
[888]61      void serverStart();
62      void clientStart();
63      void standaloneStart();
[926]64
[929]65      void createScene();
[612]66      void setupInputSystem();
[888]67      void startRenderLoop();
[984]68      float calculateEventTime(unsigned long, std::deque<unsigned long>&);
[612]69
[984]70      void eventOccured(InputEvent &evt);
71
[612]72    private:
[717]73      GraphicsEngine*       ogre_;          //!< our dearest graphics engine <3
74      std::string           dataPath_;      //!< path to data
75      audio::AudioManager*  auMan_;         //!< audio manager
76      BulletManager*        bulletMgr_;     //!< Keeps track of the thrown bullets
[929]77      InputHandler*         inputHandler_;  //!< Handles input with key bindings
78      Ogre::Root*           root_;          //!< Holy grail of Ogre
79      Ogre::Timer*          timer_;         //!< Main loop timer
[917]80      // TODO: make this a config-value by creating a config class for orxonox
81      float                 frameSmoothingTime_;
82      // little hack to actually show something dynamic in the HUD
83      HUD*                  orxonoxHUD_;
[926]84      bool                  bAbort_;        //!< aborts the render loop if true
[612]85
86      // this is used to identify the mode (server/client/...) we're in
87      gameMode              mode_;
[715]88      std::string           serverIp_;
[934]89
90      static Orxonox *singletonRef_s;
[612]91  };
92}
[673]93#endif /* _Orxonox_H__ */
Note: See TracBrowser for help on using the repository browser.