Working volume sliders!
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user