From 2f09cdce4c10a4e921b0a65cbfbfa986c92b2416 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Thu, 8 Oct 2015 21:52:22 +0200 Subject: [PATCH] Loading frame --- include/Game/GUI/LoadingFrame.h | 67 +++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 include/Game/GUI/LoadingFrame.h diff --git a/include/Game/GUI/LoadingFrame.h b/include/Game/GUI/LoadingFrame.h new file mode 100644 index 0000000..e39ef18 --- /dev/null +++ b/include/Game/GUI/LoadingFrame.h @@ -0,0 +1,67 @@ +#ifndef GAME_GUI_LOADINGFRAME_H__ +#define GAME_GUI_LOADINGFRAME_H__ + +#include "GUI/TextureFrame.h" +#include "GUI/Slider.h" +#include "Core/ResourceManager.h" +#include "Game/GUI/ELoadingFrameComplete.h" + +namespace dd +{ +namespace GUI +{ + +class LoadingFrame : public TextureFrame +{ +public: + LoadingFrame(Frame* parent, std::string name) + : TextureFrame(parent, name) + { + m_Slider = new GUI::Slider(this, "LoadingFrameSlider"); + //m_SFXSlider->X = 0; + m_Slider->Y = 453; + //m_SFXSlider->SetTop(m_TitleSFX->Bottom() + 10); + m_Slider->SetTexture("Textures/GUI/Menu/SliderBackground.png"); + m_Slider->SetTextureReleased("Textures/GUI/Menu/SliderHandle.png"); + m_Slider->AlignVertically(); + m_Slider->SetPercentage(1.f); + m_Slider->X = Width / 2.f - m_Slider->Width / 2.f; + } + + void AddTexturePreload(std::string resourceName) + { + m_Items.push_back(resourceName); + } + + void Preload() + { + m_Preloading = true; + } + + void Update(double dt) override + { + if (m_Preloading) { + ResourceManager::Preload(m_Items[m_CurrentItem]); + m_Slider->SetPercentage((m_CurrentItem + 1) / (float)m_Items.size()); + m_CurrentItem++; + if (m_CurrentItem >= m_Items.size()) { + m_Preloading = false; + dd::Events::LoadingFrameComplete e; + e.FrameName = Name(); + e.Frame = this; + EventBroker->Publish(e); + } + } + } + +private: + bool m_Preloading = false; + int m_CurrentItem = 0; + std::vector m_Items; + GUI::Slider* m_Slider = nullptr; +}; + +} +} + +#endif \ No newline at end of file