From c35e0d733629f90c4018562ba06d257fb15eae66 Mon Sep 17 00:00:00 2001 From: Andrew Lanzone Date: Tue, 3 Jun 2025 21:57:43 -0700 Subject: [PATCH] Add menu click sounds to some menus when activated by the controller --- apps/openmw/mwgui/alchemywindow.cpp | 6 ++++-- apps/openmw/mwgui/dialogue.cpp | 4 ++++ apps/openmw/mwgui/inventorywindow.cpp | 2 ++ apps/openmw/mwgui/levelupdialog.cpp | 1 + apps/openmw/mwgui/recharge.cpp | 3 +++ apps/openmw/mwgui/repair.cpp | 3 +++ apps/openmw/mwgui/savegamedialog.cpp | 2 ++ apps/openmw/mwgui/settingswindow.cpp | 4 ++-- apps/openmw/mwgui/spellcreationdialog.cpp | 6 ++++++ apps/openmw/mwgui/textinput.cpp | 1 + apps/openmw/mwgui/tradewindow.cpp | 2 ++ apps/openmw/mwgui/travelwindow.cpp | 3 +++ apps/openmw/mwgui/waitdialog.cpp | 6 ++++++ 13 files changed, 39 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwgui/alchemywindow.cpp b/apps/openmw/mwgui/alchemywindow.cpp index 270b0f1cfe..f79abf11c5 100644 --- a/apps/openmw/mwgui/alchemywindow.cpp +++ b/apps/openmw/mwgui/alchemywindow.cpp @@ -557,15 +557,16 @@ namespace MWGui if (isFilterListOpen) { // When the filter list combo box is open, send all inputs to it. - if (arg.button == SDL_CONTROLLER_BUTTON_A) + if (arg.button == SDL_CONTROLLER_BUTTON_A || arg.button == SDL_CONTROLLER_BUTTON_Y) { // Select the highlighted entry in the combo box and close it. int index = mFilterValue->getIndexSelected(); mFilterValue->setIndexSelected(index); onFilterChanged(mFilterValue, index); MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mNameEdit); // Close list + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } - else if (arg.button == SDL_CONTROLLER_BUTTON_B || arg.button == SDL_CONTROLLER_BUTTON_Y) + else if (arg.button == SDL_CONTROLLER_BUTTON_B) { // Close the list without selecting anything mFilterValue->clearIndexSelected(); @@ -610,6 +611,7 @@ namespace MWGui MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mFilterValue); MWBase::Environment::get().getWindowManager()->injectKeyPress(MyGUI::KeyCode::ArrowDown, 0, false); } + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_LEFTSHOULDER) onDecreaseButtonTriggered(); diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index c928e6a7cf..d409cd8856 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -177,7 +177,10 @@ namespace MWGui bool PersuasionDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) { if (arg.button == SDL_CONTROLLER_BUTTON_A) + { onPersuade(mButtons[mControllerFocus]); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } else if (arg.button == SDL_CONTROLLER_BUTTON_B) onCancel(mCancelButton); else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP) @@ -960,6 +963,7 @@ namespace MWGui onGoodbyeActivated(); else onSelectListItem(mTopicsList->getItemNameAt(mControllerFocus), mControllerFocus); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) { diff --git a/apps/openmw/mwgui/inventorywindow.cpp b/apps/openmw/mwgui/inventorywindow.cpp index c68fd0fbc7..c943611820 100644 --- a/apps/openmw/mwgui/inventorywindow.cpp +++ b/apps/openmw/mwgui/inventorywindow.cpp @@ -1001,6 +1001,7 @@ namespace MWGui onFilterChanged(mFilterApparel); else if (mFilterMisc->getStateSelected()) onFilterChanged(mFilterMagic); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) { @@ -1014,6 +1015,7 @@ namespace MWGui onFilterChanged(mFilterMisc); else if (mFilterMisc->getStateSelected()) onFilterChanged(mFilterAll); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else { diff --git a/apps/openmw/mwgui/levelupdialog.cpp b/apps/openmw/mwgui/levelupdialog.cpp index 3ed3e3b6fc..de79e2a8b3 100644 --- a/apps/openmw/mwgui/levelupdialog.cpp +++ b/apps/openmw/mwgui/levelupdialog.cpp @@ -388,6 +388,7 @@ namespace MWGui { if (mControllerFocus >= 0 && mControllerFocus < mAttributeButtons.size()) onAttributeClicked(mAttributeButtons[mControllerFocus]); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Item Gold Up")); } else if (arg.button == SDL_CONTROLLER_BUTTON_X) { diff --git a/apps/openmw/mwgui/recharge.cpp b/apps/openmw/mwgui/recharge.cpp index 7fe1be9266..bf71972d0d 100644 --- a/apps/openmw/mwgui/recharge.cpp +++ b/apps/openmw/mwgui/recharge.cpp @@ -144,7 +144,10 @@ namespace MWGui { if ((arg.button == SDL_CONTROLLER_BUTTON_A && !mGemBox->getVisible()) || arg.button == SDL_CONTROLLER_BUTTON_Y) + { onSelectItem(mGemIcon); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } else if (arg.button == SDL_CONTROLLER_BUTTON_B) onCancel(mCancelButton); else diff --git a/apps/openmw/mwgui/repair.cpp b/apps/openmw/mwgui/repair.cpp index 32ddf58702..c1241f53f5 100644 --- a/apps/openmw/mwgui/repair.cpp +++ b/apps/openmw/mwgui/repair.cpp @@ -158,7 +158,10 @@ namespace MWGui { if ((arg.button == SDL_CONTROLLER_BUTTON_A && !mToolBox->getVisible()) || arg.button == SDL_CONTROLLER_BUTTON_Y) + { onSelectItem(mToolIcon); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } else if (arg.button == SDL_CONTROLLER_BUTTON_B) onCancel(mCancelButton); else diff --git a/apps/openmw/mwgui/savegamedialog.cpp b/apps/openmw/mwgui/savegamedialog.cpp index 0f6bfefb54..7e9067b81a 100644 --- a/apps/openmw/mwgui/savegamedialog.cpp +++ b/apps/openmw/mwgui/savegamedialog.cpp @@ -535,6 +535,7 @@ namespace MWGui onOkButtonClicked(mOkButton); else onCancelButtonClicked(mCancelButton); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) { @@ -546,6 +547,7 @@ namespace MWGui index = wrap(index + 1, mCharacterSelection->getItemCount()); mCharacterSelection->setIndexSelected(index); onCharacterSelected(mCharacterSelection, index); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP) { diff --git a/apps/openmw/mwgui/settingswindow.cpp b/apps/openmw/mwgui/settingswindow.cpp index 70f2ab8ff3..89cdb6694a 100644 --- a/apps/openmw/mwgui/settingswindow.cpp +++ b/apps/openmw/mwgui/settingswindow.cpp @@ -1146,7 +1146,7 @@ namespace MWGui uint32_t index = mSettingsTab->getIndexSelected(); index = wrap(index - 1, mSettingsTab->getItemCount()); mSettingsTab->setIndexSelected(index); - + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); return true; } else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) @@ -1154,7 +1154,7 @@ namespace MWGui uint32_t index = mSettingsTab->getIndexSelected(); index = wrap(index + 1, mSettingsTab->getItemCount()); mSettingsTab->setIndexSelected(index); - + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); return true; } diff --git a/apps/openmw/mwgui/spellcreationdialog.cpp b/apps/openmw/mwgui/spellcreationdialog.cpp index cc54fb0ceb..103fa3df1d 100644 --- a/apps/openmw/mwgui/spellcreationdialog.cpp +++ b/apps/openmw/mwgui/spellcreationdialog.cpp @@ -401,11 +401,15 @@ namespace MWGui onOkButtonClicked(mOkButton); else if (button == mDeleteButton) onDeleteButtonClicked(mDeleteButton); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) onCancelButtonClicked(mCancelButton); else if (arg.button == SDL_CONTROLLER_BUTTON_X) + { onOkButtonClicked(mOkButton); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP) { if (mControllerFocus == 0) @@ -1036,10 +1040,12 @@ namespace MWGui if (!mRightColumn && mAvailableFocus >= 0 && mAvailableFocus < mAvailableButtons.size()) { onAvailableEffectClicked(mAvailableButtons[mAvailableFocus]); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (mRightColumn && mEffectFocus >= 0 && mEffectFocus < mEffectButtons.size()) { onEditEffect(mEffectButtons[mEffectFocus].second); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } } else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP) diff --git a/apps/openmw/mwgui/textinput.cpp b/apps/openmw/mwgui/textinput.cpp index 6ef8f1ef8e..7612cf4c67 100644 --- a/apps/openmw/mwgui/textinput.cpp +++ b/apps/openmw/mwgui/textinput.cpp @@ -90,6 +90,7 @@ namespace MWGui if (arg.button == SDL_CONTROLLER_BUTTON_A) { onOkClicked(nullptr); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); return true; } diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index ca0924396e..fbbd98cc31 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -717,6 +717,7 @@ namespace MWGui onFilterChanged(mFilterApparel); else if (mFilterMisc->getStateSelected()) onFilterChanged(mFilterMagic); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) { @@ -730,6 +731,7 @@ namespace MWGui onFilterChanged(mFilterMisc); else if (mFilterMisc->getStateSelected()) onFilterChanged(mFilterAll); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); } else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSTICK || arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP || diff --git a/apps/openmw/mwgui/travelwindow.cpp b/apps/openmw/mwgui/travelwindow.cpp index d205fcba31..48717b0825 100644 --- a/apps/openmw/mwgui/travelwindow.cpp +++ b/apps/openmw/mwgui/travelwindow.cpp @@ -259,7 +259,10 @@ namespace MWGui if (arg.button == SDL_CONTROLLER_BUTTON_A) { if (mControllerFocus >= 0 && mControllerFocus < mDestinationButtons.size()) + { onTravelButtonClick(mDestinationButtons[mControllerFocus]); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } } else if (arg.button == SDL_CONTROLLER_BUTTON_B) { diff --git a/apps/openmw/mwgui/waitdialog.cpp b/apps/openmw/mwgui/waitdialog.cpp index 8df47e7d58..e2932caf46 100644 --- a/apps/openmw/mwgui/waitdialog.cpp +++ b/apps/openmw/mwgui/waitdialog.cpp @@ -339,11 +339,17 @@ namespace MWGui bool WaitDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) { if (arg.button == SDL_CONTROLLER_BUTTON_A) + { onWaitButtonClicked(mWaitButton); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } else if (arg.button == SDL_CONTROLLER_BUTTON_B) onCancelButtonClicked(mCancelButton); else if (arg.button == SDL_CONTROLLER_BUTTON_X && mUntilHealedButton->getVisible()) + { onUntilHealedButtonClicked(mUntilHealedButton); + MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); + } else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT) MWBase::Environment::get().getWindowManager()->injectKeyPress(MyGUI::KeyCode::ArrowDown, 0, false); else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT)