feat(service_menu): triggers L2/R2 navegables + so al rebind
El menu de servei nomes processava AXIS_MOTION dels sticks i descartava els triggers. Com SDL3 mai emet button events per a L2/R2 (nomes axis), rebindar FIRE o ACCEL a un trigger feia que no funcionaren al menu, fins i tot estant correctament al joc per via del poll de Input::checkTriggerInput. Afegim edge-detect dels dos triggers al handleGamepadAxis i, quan creuen el llindar, mirem si el codi virtual (100=L2, 101=R2) coincideix amb el binding de FIRE → activateCurrent, o ACCEL → popPage. Estat held per trigger per evitar repeticions mentre es mante premut. DefineInputs ara reprodueix el so accept del menu en cada captura valida, que estava silent i no donava feedback al rebind. Tambe extraiem processStickX/Y i processTriggerEdge per mantenir handleGamepadAxis com a dispatcher i sota el llindar de complexitat cognitiva del clang-tidy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
#include "core/input/define_inputs.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
#include <format>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "core/audio/audio.hpp"
|
||||
#include "core/defaults/service_menu.hpp"
|
||||
#include "core/input/input.hpp"
|
||||
#include "core/locale/locale.hpp"
|
||||
@@ -168,6 +168,9 @@ namespace System {
|
||||
}
|
||||
sequence_[index_].captured = code;
|
||||
++index_;
|
||||
if (auto* audio = Audio::get(); audio != nullptr) {
|
||||
audio->playSound(Defaults::ServiceMenu::ACCEPT_SOUND, Audio::Group::INTERFACE);
|
||||
}
|
||||
if (index_ >= sequence_.size()) {
|
||||
persistAndComplete();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user