00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "HUD-Manager.hpp"
00019 #include "Singletons.hpp"
00020
00021 void CHUDManager::init(global_data_pointers pointers, CBitmapFont* bmFont)
00022 {
00023 m_data = pointers;
00024 m_Background->SetImage(sgl::get_imagemgr().get_img("data/gfx/HUD_FLAECHE.png"));
00025 m_Background->SetPosition(SCREEN_X_SIZE - HUD_SIZE_X, 0);
00026 m_Background->SetScale(1.0, SCREEN_Y_SIZE);
00027
00028
00029 }
00030
00031 AHUDElement* CHUDManager::registerHUD(bool* play_Info, std::list<SInfo*>* Infos, CBitmapFont* bmFont)
00032 {
00033 CHUDInfo* element;
00034 element = new CHUDInfo(m_data, bmFont);
00035 element->init(play_Info, Infos);
00036 m_Elemente.push_back(element);
00037 return element;
00038 }
00039
00040 AHUDElement* CHUDManager::registerHUD(int maxValue, const int* ActualValue, HUDType Type, int posX, int posY, int width, int height, int size)
00041 {
00042 AHUDPoll* element;
00043
00044 if (Type == POLL_GRAFIK_HORZ)
00045 {
00046 element = new CHUDPollGrafikHorz(m_data);
00047 element->SetPosition(posX, posY);
00048 element->SetSize(width, height);
00049 element->init(maxValue, ActualValue);
00050 m_Elemente.push_back(element);
00051 }
00052 else if (Type == POLL_GRAFIK_VERT)
00053 {
00054 element = new CHUDPollGrafikVert(m_data);
00055 element->SetPosition(posX, posY);
00056 element->SetSize(width, height);
00057 element->init(maxValue, ActualValue);
00058 m_Elemente.push_back(element);
00059 }
00060 else
00061 return NULL;
00062 return element;
00063 }
00064
00065 AHUDElement* CHUDManager::registerHUD(float maxValue, const float* ActualValue, HUDType Type, int posX, int posY, int width, int height, int size)
00066 {
00067 AHUDPoll* element;
00068
00069 if (Type == POLL_GRAFIK_HORZ)
00070 {
00071 element = new CHUDPollGrafikHorz(m_data);
00072 element->SetPosition(posX, posY);
00073 element->SetSize(width, height);
00074 element->init(maxValue, ActualValue);
00075 m_Elemente.push_back(element);
00076 }
00077 else if (Type == POLL_GRAFIK_VERT)
00078 {
00079 element = new CHUDPollGrafikVert(m_data);
00080 element->SetPosition(posX, posY);
00081 element->SetSize(width, height);
00082 element->init(maxValue, ActualValue);
00083 m_Elemente.push_back(element);
00084 }
00085 else
00086 return NULL;
00087 return element;
00088 }
00089
00090 AHUDElement* CHUDManager::registerHUD(const std::string* data, HUDType Type, int posX, int posY, CBitmapFont* bmFont, int fontsize, int size)
00091 {
00092 CHUDPollText* element(0);
00093 if(Type == POLL_TEXT)
00094 {
00095 element = new CHUDPollText(bmFont, fontsize, size);
00096 element->SetPosition(posX, posY);
00097 element->init(data);
00098 m_Elemente.push_back(element);
00099 return NULL;
00100 }
00101 return element;
00102 }
00103
00104 std::string* CHUDManager::registerHUD(int posX, int posY, CBitmapFont *bmFont, HUDType Type, int size)
00105 {
00106 CHUDSetText* element;
00107 if(Type == SET_TEXT)
00108 {
00109 element = new CHUDSetText(bmFont, size);
00110 element->SetPosition(posX, posY);
00111 std::string* temp = element->init();
00112 m_Elemente.push_back(element);
00113 return temp;
00114 }
00115 return NULL;
00116 }
00117
00118
00119 void CHUDManager::draw()
00120 {
00121 sgl::get_window().Draw(*m_Background);
00122 std::list<AHUDElement*>::iterator iterator;
00123 iterator = m_Elemente.begin();
00124 while (iterator != m_Elemente.end())
00125 {
00126 (*iterator)->draw();
00127 iterator++;
00128 }
00129 }
00130
00131 CHUDManager::~CHUDManager()
00132 {
00133 std::list<AHUDElement*>::iterator iterator = m_Elemente.begin();
00134 while(iterator != m_Elemente.end())
00135 {
00136 delete *iterator;
00137 m_Elemente.erase(iterator++);
00138 }
00139 }