Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/story_entities/game_world.h @ 7131

Last change on this file since 7131 was 7131, checked in by bensch, 18 years ago

orxonox/trunk: framerate calculation is much more 'accurate' meaning, if it is falling from one value into another one, the rate will be averanged to the middle.

File size: 3.0 KB
RevLine 
[6352]1/*!
2 * @file game_world.h
3 *  container for all game worlds (singleplayers, multiplayers..)
4 */
5
6#ifndef _GAME_WORLD_H
7#define _GAME_WORLD_H
8
[6402]9
[6352]10#include "story_entity.h"
[6498]11#include "game_world_data.h"
[6352]12
13class Shell;
[6402]14class WorldEntity;
[6352]15
[7131]16/** How many frames time values to keep
17 * The higher the value the smoother the result is...
18 * Don't make it 0 or less :)
19 */
20#define TICK_SMOOTH_VALUE 10
[6402]21
[6352]22//! The game world
23/**
24 *  this class initializes everything that should be displayed inside of the current level.
25 *  it is the main driving factor during gameplay.
26 */
27class GameWorld : public StoryEntity
28{
29
30  public:
[6989]31    GameWorld ();
[6352]32    virtual ~GameWorld ();
33
[6512]34    virtual void loadParams(const TiXmlElement* root);
[6352]35
[6370]36    /* functions from story-entity */
37    virtual ErrorMessage init();
[6372]38    virtual ErrorMessage loadData();
[6387]39    virtual ErrorMessage unloadData();
[6352]40
[6387]41    virtual bool start();
42    virtual bool stop();
43    virtual bool pause();
44    virtual bool resume();
45    virtual void run();
[6352]46
[6366]47    /**  this returns the current game time @returns elapsed game time     */
48    inline double getGameTime() { return this->gameTime; }
49    /** sets the game speed @param speed speed of the Game */
[6352]50    inline void setSpeed(float speed) { this->speed = speed; };
[6366]51    /**  returns the track path of this world @returns the track path */
[6352]52
[7004]53    static void togglePNodeVisibility();
54    static void toggleBVVisibility();
[6352]55
56
[6835]57
[6839]58
[6498]59    inline void setSky(WorldEntity* sky) { this->dataTank->sky = sky; }
60
61
[6352]62  protected:
63    /* world - running functions */
[6386]64    virtual void synchronize();
65    virtual void handleInput();
66    virtual void tick(std::list<WorldEntity*> worldEntity, float dt);
67    virtual void tick();
68    virtual void update();
69    virtual void collide();
70    virtual void draw();
71    virtual void display();
[6352]72
73
[6386]74  private:
75    void displayLoadScreen();
76    void releaseLoadScreen();
77
78
[6352]79  protected:
[6407]80    GameWorldData*      dataTank;                     //!< reference to the GameWorld Data Tank
[6845]81    TiXmlElement*       dataXML;                      //!< The XML-Element this World has been loaded with.
[6352]82
[6387]83    bool                showPNodes;                   //!< if the PNodes should be visible.
84    bool                showBV;                       //!< if the Bounding Volumes should be visible.
[6352]85
86    /* world timing */
[7131]87    Uint32              lastFrame;                    //!< last time of frame (in MiliSeconds)
[6402]88    Uint32              cycle;                        //!< The cycle we are in (starts with 0 and rises with every frame)
89    float               dtS;                          //!< The time needed for caluculations in seconds
90    float               speed;                        //!< how fast the game flows
91    double              gameTime;                     //!< this is where the game time is saved
[7131]92    Uint32              frameTimes[TICK_SMOOTH_VALUE];//!< The time used for the last TICK_SMOOTH_VALUE's frames.
[6352]93
[7131]94
[6352]95    /* external modules interfaces */
[6387]96    Shell*              shell;
97};
[6352]98
99#endif /* _GAME_WORLD_H */
Note: See TracBrowser for help on using the repository browser.