UGDK
src/ugdk/base/engine.h
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines