From 2efc227ad96d179cdcb8b350a2be3e7378bb559a Mon Sep 17 00:00:00 2001 From: fgenesis Date: Sat, 9 Jul 2016 19:42:33 +0200 Subject: [PATCH] Improve input menu a bit, accept Esc in the designated field, remove "Mic" section from config --- Aquaria/AquariaMenuItem.cpp | 12 +++++++++--- Aquaria/AquariaMenuItem.h | 6 +++--- Aquaria/InGameMenu.cpp | 22 +++++++++++----------- Aquaria/InGameMenu.h | 4 ++-- Aquaria/UserSettings.cpp | 14 -------------- Aquaria/UserSettings.h | 4 +--- 6 files changed, 26 insertions(+), 36 deletions(-) diff --git a/Aquaria/AquariaMenuItem.cpp b/Aquaria/AquariaMenuItem.cpp index de4bb05..047eb6c 100644 --- a/Aquaria/AquariaMenuItem.cpp +++ b/Aquaria/AquariaMenuItem.cpp @@ -480,6 +480,7 @@ AquariaKeyConfig::AquariaKeyConfig(const std::string &actionInputName, InputSetT keyDown = false; + acceptEsc = false; toggleEnterKey(false); } @@ -621,8 +622,6 @@ void AquariaKeyConfig::onUpdate(float dt) { if (i != KEY_ESCAPE) { - - if (i >= KEY_0 && i <= KEY_9) { *value = i-KEY_0; @@ -649,7 +648,9 @@ void AquariaKeyConfig::onUpdate(float dt) { if (core->getKeyState(i)) { - if (i != KEY_ESCAPE) + if(*k == i) // clear key if pressed again + *k = 0; + else if(acceptEsc || i != KEY_ESCAPE) { if (i == KEY_DELETE || i == KEY_BACKSPACE) *k = 0; @@ -750,6 +751,11 @@ void AquariaKeyConfig::onUpdate(float dt) inLoop = false; } +void AquariaKeyConfig::setAcceptEsc(bool a) +{ + acceptEsc = a; +} + AquariaMenuItem::AquariaMenuItem() : Quad(), ActionMapper(), AquariaGuiElement() { quad = glow = 0; diff --git a/Aquaria/AquariaMenuItem.h b/Aquaria/AquariaMenuItem.h index dea87dd..a544528 100644 --- a/Aquaria/AquariaMenuItem.h +++ b/Aquaria/AquariaMenuItem.h @@ -170,6 +170,8 @@ public: static AquariaKeyConfig *waitingForInput; + void setAcceptEsc(bool a); + protected: void toggleEnterKey(int on); @@ -181,11 +183,9 @@ protected: std::string actionInputName; InputSetType inputSetType; int inputIdx; - - - TTFText *keyConfigFont; Quad *bg; + bool acceptEsc; }; class AquariaComboBox; diff --git a/Aquaria/InGameMenu.cpp b/Aquaria/InGameMenu.cpp index a150232..2c95ae7 100644 --- a/Aquaria/InGameMenu.cpp +++ b/Aquaria/InGameMenu.cpp @@ -1490,7 +1490,7 @@ void InGameMenu::hide(bool effects, bool cancel) } -void InGameMenu::addKeyConfigLine(RenderObject *group, const std::string &label, const std::string &actionInputName, int y) +void InGameMenu::addKeyConfigLine(RenderObject *group, const std::string &label, const std::string &actionInputName, int y, bool acceptEsc) { TTFText *lb = new TTFText(&dsq->fontArialSmallest); lb->setText(label); @@ -1500,10 +1500,12 @@ void InGameMenu::addKeyConfigLine(RenderObject *group, const std::string &label, AquariaKeyConfig *k1 = new AquariaKeyConfig(actionInputName, INPUTSET_KEY, 0); k1->position = Vector(350,y); group->addChild(k1, PM_POINTER); + k1->setAcceptEsc(acceptEsc); AquariaKeyConfig *k2 = new AquariaKeyConfig(actionInputName, INPUTSET_KEY, 1); k2->position = Vector(475,y); group->addChild(k2, PM_POINTER); + k2->setAcceptEsc(acceptEsc); AquariaKeyConfig *j1 = new AquariaKeyConfig(actionInputName, INPUTSET_JOY, 0); j1->position = Vector(600,y); @@ -1763,8 +1765,6 @@ void InGameMenu::create() flipInputButtonsCheck->position = Vector(checkx,checky); options->addChild(flipInputButtonsCheck, PM_POINTER); - micInputCheck = 0; - toolTipsCheck = new AquariaCheckBox(); toolTipsCheck->setValue(dsq->user.control.toolTipsOn); toolTipsCheck->position = Vector(checkx,checky+1*checkd); @@ -1965,7 +1965,7 @@ void InGameMenu::create() addKeyConfigLine(group_keyConfig, SB(2113), "Roll", 260+offy); addKeyConfigLine(group_keyConfig, SB(2114), "Revert", 280+offy); addKeyConfigLine(group_keyConfig, SB(2115), "WorldMap", 300+offy); - addKeyConfigLine(group_keyConfig, SB(2116), "Escape", 320+offy); + addKeyConfigLine(group_keyConfig, SB(2116), "Escape", 320+offy, true); AquariaKeyConfig* s1x = addAxesConfigLine(group_keyConfig, SB(2117), "s1ax", 340+offy, 0); AquariaKeyConfig* s1y = addAxesConfigLine(group_keyConfig, SB(2118), "s1ay", 340+offy, 130); @@ -3686,9 +3686,6 @@ void InGameMenu::toggleOptionsMenu(bool f, bool skipBackup, bool isKeyConfig) if (ripplesCheck) ripplesCheck->setValue(core->afterEffectManager!=0); - if (micInputCheck) - micInputCheck->setValue(dsq->user.audio.micOn); - if (resBox) { std::ostringstream os; @@ -3802,9 +3799,6 @@ void InGameMenu::updateOptionsMenu(float dt) dsq->user.audio.sfxvol = sfxslider->getValue(); dsq->user.audio.musvol = musslider->getValue(); - if (micInputCheck) - dsq->user.audio.micOn = micInputCheck->getValue(); - dsq->user.control.flipInputButtons = flipInputButtonsCheck->getValue(); dsq->user.control.toolTipsOn = toolTipsCheck->getValue(); dsq->user.control.autoAim = autoAimCheck->getValue(); @@ -3832,15 +3826,18 @@ void InGameMenu::updateOptionsMenu(float dt) } } + bool apply = false; optsfxdly += dt; if (sfxslider->hadInput()) { dsq->sound->playSfx("denied"); + apply = true; } else if (voxslider->hadInput()) { if (!dsq->sound->isPlayingVoice()) dsq->voice("naija_somethingfamiliar"); + apply = true; } else if (optsfxdly > 0.6f) { @@ -3849,6 +3846,7 @@ void InGameMenu::updateOptionsMenu(float dt) { dsq->sound->playSfx("denied"); dsq->loops.updateVolume(); + apply = true; } if (voxslider->isGrabbed()) { @@ -3856,10 +3854,12 @@ void InGameMenu::updateOptionsMenu(float dt) { dsq->voice("naija_somethingfamiliar"); } + apply = true; } } - dsq->user.apply(); + if(apply) + dsq->user.apply(); } void InGameMenu::update(float dt) diff --git a/Aquaria/InGameMenu.h b/Aquaria/InGameMenu.h index ac31542..7083a98 100644 --- a/Aquaria/InGameMenu.h +++ b/Aquaria/InGameMenu.h @@ -188,14 +188,14 @@ private: void onKeyConfig(); - void addKeyConfigLine(RenderObject *group, const std::string &label, const std::string &actionInputName, int y); + void addKeyConfigLine(RenderObject *group, const std::string &label, const std::string &actionInputName, int y, bool acceptEsc = false); AquariaKeyConfig *addAxesConfigLine(RenderObject *group, const std::string &label, const std::string &actionInputName, int y, int offx); void onOptionsSave(); void onOptionsCancel(); AquariaSlider *sfxslider, *musslider, *voxslider; - AquariaCheckBox *autoAimCheck, *targetingCheck, *toolTipsCheck, *flipInputButtonsCheck, *micInputCheck, *blurEffectsCheck; + AquariaCheckBox *autoAimCheck, *targetingCheck, *toolTipsCheck, *flipInputButtonsCheck, *blurEffectsCheck; AquariaCheckBox *subtitlesCheck, *fullscreenCheck, *ripplesCheck; AquariaComboBox *resBox; Quad *songBubbles, *energyIdol, *liCrystal; diff --git a/Aquaria/UserSettings.cpp b/Aquaria/UserSettings.cpp index cf661fe..0bcf1ff 100644 --- a/Aquaria/UserSettings.cpp +++ b/Aquaria/UserSettings.cpp @@ -68,13 +68,6 @@ void UserSettings::save() XMLElement *xml_audio = doc.NewElement("Audio"); { - XMLElement *xml_microphone = doc.NewElement("Mic"); - { - xml_microphone->SetAttribute("on", audio.micOn); - xml_microphone->SetAttribute("octave", audio.octave); - } - xml_audio->InsertEndChild(xml_microphone); - XMLElement *xml_volume = doc.NewElement("Volume"); { xml_volume->SetAttribute("sfx", double(audio.sfxvol)); @@ -372,13 +365,6 @@ void UserSettings::load(bool doApply, const std::string &overrideFile) XMLElement *xml_audio = doc.FirstChildElement("Audio"); if (xml_audio) { - XMLElement *xml_microphone = xml_audio->FirstChildElement("Mic"); - if (xml_microphone) - { - audio.micOn = xml_microphone->IntAttribute("on"); - audio.octave = xml_microphone->IntAttribute("octave"); - } - XMLElement *xml_volume = xml_audio->FirstChildElement("Volume"); if (xml_volume) { diff --git a/Aquaria/UserSettings.h b/Aquaria/UserSettings.h index d4b9c31..7b9dbc7 100644 --- a/Aquaria/UserSettings.h +++ b/Aquaria/UserSettings.h @@ -46,9 +46,7 @@ public: struct Audio { - Audio() { micOn = 0; octave=0; musvol=voxvol=sfxvol=1.0; subtitles=false; prebuffer=false;} - int micOn; - int octave; + Audio() { musvol=voxvol=sfxvol=1.0; subtitles=false; prebuffer=false;} float voxvol, sfxvol, musvol; int subtitles; std::string deviceName;