UGDK  0.4.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
engine.h
Go to the documentation of this file.
1 #ifndef UGDK_BASE_ENGINE_H_
2 #define UGDK_BASE_ENGINE_H_
3 
4 #include <vector>
5 #include <list>
6 #include <string>
7 #include <ugdk/action.h>
8 #include <ugdk/audio.h>
9 #include <ugdk/graphic.h>
10 #include <ugdk/input.h>
11 #include <ugdk/time.h>
12 #include <ugdk/util.h>
13 #include <ugdk/base/types.h>
15 #include <ugdk/math/vector2D.h>
16 
17 namespace ugdk {
18 namespace base {
19 class ResourceManager;
20 }
21 
22 class PathManager;
23 
25 
28 class Engine {
29  public:
30 
32  static Engine* reference() { return reference_ ? reference_ : reference_ = new Engine; }
33 
35 
37  AudioManager *audio_manager() { return audio_manager_; }
38 
40 
42  graphic::VideoManager *video_manager() { return video_manager_; }
43 
45 
47  graphic::TextManager *text_manager() { return text_manager_; }
48 
50 
52  input::InputManager *input_manager() { return input_manager_; }
54 
56  time::TimeManager *time_handler() { return time_manager_; }
58 
60  PathManager *path_manager() { return path_manager_; }
62 
64  base::ResourceManager *resource_manager() { return resource_manager_; }
65 
67 
69  LanguageManager* language_manager() { return language_manager_; }
70 
73 
78 
79 
82  bool Initialize(const Configuration& configuration);
83 
85  bool Initialize() {
86  Configuration defaults;
87  return Initialize(defaults);
88  }
89 
91  void Run();
92 
94  void Release();
95 
102 
103 
105  void PushScene(action::Scene* scene);
107  action::Scene* CurrentScene() const;
109  void PopScene();
113 
114  uint32 current_fps() const { return reported_fps_; }
115 
116  // Saida do motor
118  void quit() { quit_ = true; }
119 
120  ~Engine() { reference_ = NULL; }
121 
122  private:
123  void DeleteFinishedScenes();
124  static Engine * reference_;
125 
126  AudioManager * audio_manager_;
127  graphic::VideoManager * video_manager_;
128  graphic:: TextManager * text_manager_;
129  input:: InputManager * input_manager_;
130  time:: TimeManager * time_manager_;
131  PathManager * path_manager_;
132  base::ResourceManager *resource_manager_;
133  LanguageManager *language_manager_;
134 
135  bool quit_;
136  std::list<action::Scene*> scene_list_;
137  uint32 reported_fps_, frames_since_reset_, last_fps_report_;
138 
139  Engine() :
140  audio_manager_(NULL),
141  video_manager_(NULL),
142  text_manager_(NULL),
143  input_manager_(NULL),
144  time_manager_(NULL),
145  path_manager_(NULL),
146  resource_manager_(NULL),
147  language_manager_(NULL) {}
148 };
149 
150 } // namespace ugdk
151 
152 #endif
153