Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/heathaze/src/story_entities/story_entity.h @ 9940

Last change on this file since 9940 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: 4.1 KB
Line 
1/*!
2 * @file story_entity.h
3 *  holds the base class of everything that is playable - that is part of the story
4 */
5
6
7#ifndef _STORY_ENTITY_H
8#define _STORY_ENTITY_H
9
10#include "base_object.h"
11#include "story_def.h"
12#include "error.h"
13
14
15typedef enum StoryEntityState
16{
17  SE_STATE_RUN     = 0,
18  SE_STATE_STOP,
19  SE_STATE_PAUSE,
20
21  SE_STATE_NUM
22};
23
24
25//! A class that represents something to play in orxonox. it is a container for worlds, movies, mission briefings, etc...
26class StoryEntity : virtual public BaseObject
27{
28  ObjectListDeclaration(StoryEntity);
29
30public:
31  StoryEntity ();
32  virtual ~StoryEntity ();
33
34  virtual void loadParams(const TiXmlElement* root);
35
36  /* initialisation and loading */
37  /** initializes a Story Entity to the needed values */
38  virtual ErrorMessage init() { return ErrorMessage(); };
39  /** called to load the data into the StoryEntity*/
40  virtual ErrorMessage loadData() { return ErrorMessage(); };
41  /** function that unloads the data from the StoryEntity */
42  virtual ErrorMessage unloadData() { return ErrorMessage(); };
43
44  /* running, stopping and pausing */
45  /** starts the Entity. Starts the main cycle */
46  virtual bool start() = 0;
47  /**  Stops the entity. */
48  virtual bool stop() = 0;
49  /** pauses the Entity, you can resume the game by calling the resume() function */
50  virtual bool pause() = 0;
51  /** resumes a paused StoryEntity */
52  virtual bool resume() = 0;
53  /** function that is been called when the StoryEntity is started via start() */
54  virtual void run() = 0;
55
56  /* properties interface */
57  /** returns the state of this StoryEntity */
58  StoryEntityState getState();
59
60  /** sets the story id of the current entity, this enables it to be identified in a global context.  @param storyID the story id */
61  inline void setStoryID(int storyID) { this->storyID = storyID; }
62  /** sets the story id of the current entity, this enables it to be identified in a  global context. @returns  the story id  */
63  inline int getStoryID() { return this->storyID; }
64
65  void setLoadFile(const std::string& fileName);
66  /** @returns the Filename this StoryEntity was loaded with */
67  const std::string& getLoadFile() const { return this->loadFile; }
68
69  void setNextStoryID(int nextStoryID);
70  /**  gets the story id of the current entity @returns story id */
71  inline int getNextStoryID() const { return this->nextStoryID; }
72  inline void setDescription(const std::string& description);
73  /** @returns the description of this StoryEntity */
74  inline const std::string& getDescription() { return this->description; }
75
76  void grabWorldInfo();
77  /** toggle the menu visibility: SimpleMenu specific */
78  inline void addToGameMenu(bool toggle) { this->bMenuEntry = toggle; }
79  /** @returns true if the GameWorld should be contained in the SimpleMenu: SimpleMenu specific */
80  inline bool isContainedInMenu() { return this->bMenuEntry; }
81  /** sets the menu item image of this StoryEntity @param name name */
82  inline void setMenuItemImage(const std::string& image);
83  /** @returns the menu item image of this StoryEntity */
84  inline const std::string& getMenuItemImage() { return this->menuItemImage; }
85  inline void setMenuScreenshoot(const std::string& image);
86  /** @returns the menu screenshoot of this StoryEntity */
87  inline const std::string& getMenuScreenshoot() { return this->menuScreenshoot; }
88
89protected:
90  bool          bInit;             //!< if the entity is initialized, this has to be true.
91  bool          bRunning;          //!< is true if the entity is running
92  bool          bPaused;           //!< is true if the entity is paused
93
94
95private:
96  int           storyID;          //!< this is the number of this entity, identifying it in a list/tree...
97  int           nextStoryID;      //!< if this entity has finished, this entity shall be called
98  std::string   loadFile;         //!< The file from which this world is loaded
99
100  std::string   description;      //!< the description of the StoryEntity
101  std::string   menuItemImage;    //!< the item image of the StoryEntity
102  std::string   menuScreenshoot;  //!< the screenshoot of the StoryEntity
103  bool          bMenuEntry;       //!< If true, this GameWorld apears in the SimpleMenu: SimpleMenu specific
104};
105
106#endif /* _STORY_ENTITY_H */
Note: See TracBrowser for help on using the repository browser.