UGDK
|
00001 #ifndef UGDK_BASE_ENGINE_H_ 00002 #define UGDK_BASE_ENGINE_H_ 00003 00004 #include <vector> 00005 #include <list> 00006 #include <string> 00007 #include <ugdk/action.h> 00008 #include <ugdk/audio.h> 00009 #include <ugdk/graphic.h> 00010 #include <ugdk/input.h> 00011 #include <ugdk/time.h> 00012 #include <ugdk/util.h> 00013 #include <ugdk/base/types.h> 00014 #include <ugdk/base/configuration.h> 00015 #include <ugdk/math/vector2D.h> 00016 00017 namespace ugdk { 00018 namespace base { 00019 class ResourceManager; 00020 } 00021 00022 class PathManager; 00023 00025 00028 class Engine { 00029 public: 00030 00032 static Engine* reference() { return reference_ ? reference_ : reference_ = new Engine; } 00033 00035 00037 AudioManager *audio_manager() { return audio_manager_; } 00038 00040 00042 graphic::VideoManager *video_manager() { return video_manager_; } 00043 00045 00047 graphic::TextManager *text_manager() { return text_manager_; } 00048 00050 00052 input::InputManager *input_manager() { return input_manager_; } 00054 00056 time::TimeManager *time_handler() { return time_manager_; } 00058 00060 PathManager *path_manager() { return path_manager_; } 00062 00064 base::ResourceManager *resource_manager() { return resource_manager_; } 00065 00067 00069 LanguageManager* language_manager() { return language_manager_; } 00070 00072 Vector2D window_size(); 00073 00078 00079 00082 bool Initialize(const Configuration& configuration); 00083 00085 bool Initialize() { 00086 Configuration defaults; 00087 return Initialize(defaults); 00088 } 00089 00091 void Run(); 00092 00094 void Release(); 00095 00102 00103 00105 void PushScene(action::Scene* scene); 00107 action::Scene* CurrentScene() const; 00109 void PopScene(); 00113 00114 uint32 current_fps() const { return reported_fps_; } 00115 00116 // Saida do motor 00118 void quit() { quit_ = true; } 00119 00120 ~Engine() { reference_ = NULL; } 00121 00122 private: 00123 void DeleteFinishedScenes(); 00124 static Engine * reference_; 00125 00126 AudioManager * audio_manager_; 00127 graphic::VideoManager * video_manager_; 00128 graphic:: TextManager * text_manager_; 00129 input:: InputManager * input_manager_; 00130 time:: TimeManager * time_manager_; 00131 PathManager * path_manager_; 00132 base::ResourceManager *resource_manager_; 00133 LanguageManager *language_manager_; 00134 00135 bool quit_; 00136 std::list<action::Scene*> scene_list_; 00137 uint32 reported_fps_, frames_since_reset_, last_fps_report_; 00138 00139 Engine() : 00140 audio_manager_(NULL), 00141 video_manager_(NULL), 00142 text_manager_(NULL), 00143 input_manager_(NULL), 00144 time_manager_(NULL), 00145 path_manager_(NULL), 00146 resource_manager_(NULL), 00147 language_manager_(NULL) {} 00148 }; 00149 00150 } // namespace ugdk 00151 00152 #endif 00153