Working volume sliders!

This commit is contained in:
2015-09-25 01:53:28 +02:00
parent 5f1963b8bc
commit c9854d2b83
2 changed files with 46 additions and 9 deletions
+6 -2
View File
@@ -28,7 +28,11 @@ public:
} }
float Percentage() const { return m_Percentage; } float Percentage() const { return m_Percentage; }
void SetPercentage(const float percentage) { m_Percentage = percentage; } void SetPercentage(const float percentage)
{
m_Percentage = percentage;
m_SliderButton->X = percentage * (Width - m_SliderButton->Width);
}
void SetTextureHover(std::string resourceName) void SetTextureHover(std::string resourceName)
{ {
@@ -43,7 +47,7 @@ public:
m_SliderButton->SetTexturePressed(resourceName); m_SliderButton->SetTexturePressed(resourceName);
} }
void CenterSlider() void AlignVertically()
{ {
m_SliderButton->Y = (Height / 2) - (m_SliderButton->Height / 2); m_SliderButton->Y = (Height / 2) - (m_SliderButton->Height / 2);
} }
+40 -7
View File
@@ -4,6 +4,8 @@
#include "GUI/TextureFrame.h" #include "GUI/TextureFrame.h"
#include "GUI/Button.h" #include "GUI/Button.h"
#include "GUI/Slider.h" #include "GUI/Slider.h"
#include "GUI/ESliderUpdate.h"
#include "Sound/EMasterVolume.h"
namespace dd namespace dd
{ {
@@ -27,21 +29,52 @@ public:
m_TitleSFX->SetTexture("Textures/GUI/Menu/OptionsSFXTitle.png"); m_TitleSFX->SetTexture("Textures/GUI/Menu/OptionsSFXTitle.png");
m_SFXSlider = new GUI::Slider(this, "MainMenuOptionsSFXSlider"); m_SFXSlider = new GUI::Slider(this, "MainMenuOptionsSFXSlider");
m_SFXSlider->X = 66; m_SFXSlider->X = 66;
m_SFXSlider->SetTop(m_TitleSFX->Bottom()); m_SFXSlider->SetTop(m_TitleSFX->Bottom() + 10);
m_SFXSlider->SetTexture("Textures/GUI/Menu/SliderBackground.png"); m_SFXSlider->SetTexture("Textures/GUI/Menu/SliderBackground.png");
m_SFXSlider->SetTextureReleased("Textures/GUI/Menu/SliderHandle.png"); m_SFXSlider->SetTextureReleased("Textures/GUI/Menu/SliderHandle.png");
m_SFXSlider->CenterSlider(); m_SFXSlider->AlignVertically();
m_SFXSlider->SetPercentage(1.f);
m_TitleBGM = new GUI::TextureFrame(this, "MainMenuOptionsBGMTitle"); m_TitleBGM = new GUI::TextureFrame(this, "MainMenuOptionsBGMTitle");
m_TitleBGM->SetTop(m_TitleSFX->Bottom()); m_TitleBGM->SetTop(m_SFXSlider->Bottom() + 20);
m_TitleBGM->SetTexture("Textures/GUI/Menu/OptionsBGMTitle.png"); m_TitleBGM->SetTexture("Textures/GUI/Menu/OptionsBGMTitle.png");
m_BGMSlider = new GUI::Slider(this, "MainMenuOptionsBGMSlider");
m_BGMSlider->X = 66;
m_BGMSlider->SetTop(m_TitleBGM->Bottom() + 10);
m_BGMSlider->SetTexture("Textures/GUI/Menu/SliderBackground.png");
m_BGMSlider->SetTextureReleased("Textures/GUI/Menu/SliderHandle.png");
m_BGMSlider->AlignVertically();
m_BGMSlider->SetPercentage(1.f);
EVENT_SUBSCRIBE_MEMBER(m_ESliderUpdate, &MainMenuOptions::OnSliderUpdate);
} }
private: private:
TextureFrame* m_Title; TextureFrame* m_Title = nullptr;
TextureFrame* m_TitleSFX; TextureFrame* m_TitleSFX = nullptr;
Slider* m_SFXSlider; Slider* m_SFXSlider = nullptr;
TextureFrame* m_TitleBGM; Slider* m_BGMSlider = nullptr;
TextureFrame* m_TitleBGM = nullptr;
EventRelay<Frame, Events::SliderUpdate> m_ESliderUpdate;
bool OnSliderUpdate(const Events::SliderUpdate& event)
{
if (event.Slider == m_SFXSlider) {
Events::MasterVolume e;
e.isAmbient = false;
e.gain = event.Percentage;
EventBroker->Publish(e);
}
if (event.Slider == m_BGMSlider) {
Events::MasterVolume e;
e.isAmbient = true;
e.gain = event.Percentage;
EventBroker->Publish(e);
}
return true;
}
}; };
} }