Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/playability/src/story_entities/game_world.h @ 10109

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

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

File size: 3.7 KB
Line 
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
9
10#include "story_entity.h"
11#include "game_world_data.h"
12#include "playable.h"
13#include "script_manager.h"
14
15namespace OrxShell { class Shell; };
16class WorldEntity;
17class GameRules;
18
19
20/** How many frames time values to keep
21 * The higher the value the smoother the result is...
22 * Don't make it 0 or less :)
23 */
24#define TICK_SMOOTH_VALUE 10
25
26//! The game world
27/**
28 *  this class initializes everything that should be displayed inside of the current level.
29 *  it is the main driving factor during gameplay.
30 */
31class GameWorld : public StoryEntity
32{
33  ObjectListDeclaration(GameWorld);
34
35public:
36  GameWorld ();
37  virtual ~GameWorld ();
38
39  virtual void loadParams(const TiXmlElement* root);
40
41  /* functions from story-entity */
42  virtual ErrorMessage init();
43  virtual ErrorMessage loadData();
44  virtual ErrorMessage unloadData();
45
46  virtual bool start();
47  virtual bool stop();
48  virtual bool pause();
49  virtual bool resume();
50  virtual void run();
51
52  void setPlaymode(Playable::Playmode playmode);
53  void setPlaymode(const std::string& playmode);
54  /**  this returns the current game time @returns elapsed game time     */
55  inline double getGameTime() { return this->gameTime; }
56  /** sets the game speed @param speed speed of the Game */
57  inline void setSpeed(float speed) { this->speed = speed; };
58  /**  returns the track path of this world @returns the track path */
59
60
61  void setSoundtrack(const std::string& soundTrack);
62  void togglePNodeVisibility();
63  void toggleBVVisibility(int level);
64
65  inline void setSky(WorldEntity* sky) { this->dataTank->sky = sky; }
66
67
68protected:
69  /* world - running functions */
70  virtual void synchronize();
71  virtual void handleInput();
72  virtual void tick(ObjectManager::EntityList worldEntity, float dt);
73  virtual void tick();
74  virtual void update();
75  virtual void checkGameRules();
76  virtual void collisionDetection();
77  virtual void collisionReaction();
78
79  void applyCameraSettings();
80  void drawEntityList(const ObjectManager::EntityList& drawList ) const;
81  virtual void renderPassReflection();
82  virtual void renderPassRefraction();
83  virtual void renderPassAll();
84
85
86  virtual void display();
87
88
89private:
90  void displayLoadScreen();
91  void releaseLoadScreen();
92
93
94protected:
95  GameWorldData*      dataTank;                     //!< reference to the GameWorld Data Tank
96  TiXmlElement*       dataXML;                      //!< The XML-Element this World has been loaded with.
97
98  bool                showPNodes;                   //!< if the PNodes should be visible.
99  bool                showBV;                       //!< if the Bounding Volumes should be visible.
100  int                 showBVLevel;                  //!< the depth level of the displayed bounding volumes
101
102  /* world timing */
103  double              lastFrame;                    //!< last time of frame (in MiliSeconds)
104  Uint32              cycle;                        //!< The cycle we are in (starts with 0 and rises with every frame)
105  float               dtS;                          //!< The time needed for caluculations in seconds
106  float               speed;                        //!< how fast the game flows
107  double              gameTime;                     //!< this is where the game time is saved
108  double              frameTimes[TICK_SMOOTH_VALUE];//!< The time used for the last TICK_SMOOTH_VALUE's frames.
109
110  GameRules*          gameRules;                    //!< Pointer to the data structure containig the game rules
111
112private:
113  /* external modules interfaces */
114  ScriptManager       scriptManager;
115  OrxShell::Shell*    shell;
116};
117
118#endif /* _GAME_WORLD_H */
Note: See TracBrowser for help on using the repository browser.