diff --git a/include/Game/HUD.h b/include/Game/HUD.h index 6c8d695..605ef3d 100644 --- a/include/Game/HUD.h +++ b/include/Game/HUD.h @@ -9,6 +9,8 @@ #include "Game/FPSCounter.h" #include "Game/EGameOver.h" #include "Game/EClusterClear.h" +#include "Game/EKrakenAttack.h" +#include "GUI/Slider.h" namespace dd { @@ -45,9 +47,17 @@ public: m_FPSCounter = new GUI::FPSCounter(this, "FPSCounter"); + m_KrakenAttackSlider = new Slider(this, "KrakenSlider"); + m_KrakenAttackSlider->SetTexture("Textures/GUI/Menu/SliderBackground.png"); + m_KrakenAttackSlider->SetTextureReleased("Textures/GUI/Menu/SliderHandle.png"); + m_KrakenAttackSlider->SetLeft(Width / 2 - m_KrakenAttackSlider->Width / 2); + m_KrakenAttackSlider->Y = 800; + m_KrakenAttackSlider->Hide(); + EVENT_SUBSCRIBE_MEMBER(m_EScore, &HUD::OnScore); EVENT_SUBSCRIBE_MEMBER(m_EGameOver, &HUD::OnGameOver); EVENT_SUBSCRIBE_MEMBER(m_ClusterClear, &HUD::OnClusterClear); + EVENT_SUBSCRIBE_MEMBER(m_KrakenAttack, &HUD::OnKrakenAttack); } private: @@ -59,10 +69,12 @@ private: FPSCounter* m_FPSCounter = nullptr; TextureFrame* m_GameOverFrame = nullptr; TextureFrame* m_ClusterClearFrame = nullptr; + Slider* m_KrakenAttackSlider = nullptr; EventRelay m_EScore; EventRelay m_EGameOver; EventRelay m_ClusterClear; + EventRelay m_KrakenAttack; bool OnScore(const Events::ScoreEvent& event) { @@ -83,6 +95,19 @@ private: m_ClusterClearFrame->SetTexture("Textures/GUI/HUD/WinScreen.png"); return true; } + + bool OnKrakenAttack(const Events::KrakenAttack& event) + { + + if (event.ChargeUpdate >= 1.f) { + m_KrakenAttackSlider->Hide(); + } else { + m_KrakenAttackSlider->Show(); + m_KrakenAttackSlider->SetPercentage(event.ChargeUpdate); + } + + return true; + } }; }