1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-16 18:01:40 +00:00

Add mute setting (toggled by the mute key and in the volume menu) (#6415)

* Add mute setting (toggled by the mute key and in the volume menu)
This commit is contained in:
DTA7 2017-09-26 08:17:50 +02:00 committed by Loïc Blot
parent 6f1c907204
commit 9eb163ab4f
4 changed files with 70 additions and 34 deletions

View file

@ -33,6 +33,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
const int ID_soundText = 263;
const int ID_soundExitButton = 264;
const int ID_soundSlider = 265;
const int ID_soundMuteButton = 266;
GUIVolumeChange::GUIVolumeChange(gui::IGUIEnvironment* env,
gui::IGUIElement* parent, s32 id,
@ -85,7 +86,7 @@ void GUIVolumeChange::regenerateGui(v2u32 screensize)
*/
{
core::rect<s32> rect(0, 0, 160, 20);
rect = rect + v2s32(size.X / 2 - 80, size.Y / 2 - 35);
rect = rect + v2s32(size.X / 2 - 80, size.Y / 2 - 70);
const wchar_t *text = wgettext("Sound Volume: ");
core::stringw volume_text = text;
@ -105,12 +106,20 @@ void GUIVolumeChange::regenerateGui(v2u32 screensize)
}
{
core::rect<s32> rect(0, 0, 300, 20);
rect = rect + v2s32(size.X/2-150, size.Y/2);
rect = rect + v2s32(size.X / 2 - 150, size.Y / 2);
gui::IGUIScrollBar *e = Environment->addScrollBar(true,
rect, this, ID_soundSlider);
e->setMax(100);
e->setPos(volume);
}
{
core::rect<s32> rect(0, 0, 160, 20);
rect = rect + v2s32(size.X / 2 - 80, size.Y / 2 - 35);
const wchar_t *text = wgettext("Muted");
Environment->addCheckBox(g_settings->getBool("mute_sound"), rect, this,
ID_soundMuteButton, text);
delete[] text;
}
}
void GUIVolumeChange::drawMenu()
@ -136,29 +145,50 @@ bool GUIVolumeChange::OnEvent(const SEvent& event)
quitMenu();
return true;
}
}
} else if (event.EventType == EET_GUI_EVENT) {
if (event.GUIEvent.EventType == gui::EGET_CHECKBOX_CHANGED) {
gui::IGUIElement *e = getElementFromId(ID_soundMuteButton);
if (e != NULL && e->getType() == gui::EGUIET_CHECK_BOX) {
g_settings->setBool("mute_sound", ((gui::IGUICheckBox*)e)->isChecked());
}
if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) {
if (event.GUIEvent.Caller->getID() == ID_soundExitButton) {
quitMenu();
Environment->setFocus(this);
return true;
}
}
if (event.GUIEvent.EventType == gui::EGET_SCROLL_BAR_CHANGED) {
if (event.GUIEvent.Caller->getID() == ID_soundSlider) {
s32 pos = ((gui::IGUIScrollBar*)event.GUIEvent.Caller)->getPos();
g_settings->setFloat("sound_volume", (float) pos / 100);
gui::IGUIElement *e = getElementFromId(ID_soundText);
const wchar_t *text = wgettext("Sound Volume: ");
core::stringw volume_text = text;
delete [] text;
volume_text += core::stringw(pos) + core::stringw("%");
e->setText(volume_text.c_str());
return true;
if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) {
if (event.GUIEvent.Caller->getID() == ID_soundExitButton) {
quitMenu();
return true;
}
Environment->setFocus(this);
}
if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST
&& isVisible()) {
if (!canTakeFocus(event.GUIEvent.Element)) {
dstream << "GUIMainMenu: Not allowing focus change."
<< std::endl;
// Returning true disables focus change
return true;
}
}
if (event.GUIEvent.EventType == gui::EGET_SCROLL_BAR_CHANGED) {
if (event.GUIEvent.Caller->getID() == ID_soundSlider) {
s32 pos = ((gui::IGUIScrollBar*)event.GUIEvent.Caller)->getPos();
g_settings->setFloat("sound_volume", (float) pos / 100);
gui::IGUIElement *e = getElementFromId(ID_soundText);
const wchar_t *text = wgettext("Sound Volume: ");
core::stringw volume_text = text;
delete [] text;
volume_text += core::stringw(pos) + core::stringw("%");
e->setText(volume_text.c_str());
return true;
}
}
}
return Parent ? Parent->OnEvent(event) : false;