summaryrefslogtreecommitdiff
path: root/src/yuzu/configuration/configure_vibration.cpp
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2024-12-31 16:19:25 +1000
committerZephyron <zephyron@citron-emu.org>2024-12-31 16:19:25 +1000
commit9427e27e24a7135880ee2881c3c44988e174b41a (patch)
tree83f0062a35be144f6b162eaa823c5b3c7620146e /src/yuzu/configuration/configure_vibration.cpp
parentb35ae725d20960411e8588b11c12a2d55f86c9d0 (diff)
chore: update project branding to citron
Diffstat (limited to 'src/yuzu/configuration/configure_vibration.cpp')
-rw-r--r--src/yuzu/configuration/configure_vibration.cpp133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/yuzu/configuration/configure_vibration.cpp b/src/yuzu/configuration/configure_vibration.cpp
deleted file mode 100644
index 6b1f4527b..000000000
--- a/src/yuzu/configuration/configure_vibration.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "common/settings.h"
-#include "hid_core/frontend/emulated_controller.h"
-#include "hid_core/hid_core.h"
-#include "hid_core/hid_types.h"
-#include "ui_configure_vibration.h"
-#include "yuzu/configuration/configure_vibration.h"
-
-ConfigureVibration::ConfigureVibration(QWidget* parent, Core::HID::HIDCore& hid_core_)
- : QDialog(parent), ui(std::make_unique<Ui::ConfigureVibration>()), hid_core{hid_core_} {
- ui->setupUi(this);
-
- vibration_groupboxes = {
- ui->vibrationGroupPlayer1, ui->vibrationGroupPlayer2, ui->vibrationGroupPlayer3,
- ui->vibrationGroupPlayer4, ui->vibrationGroupPlayer5, ui->vibrationGroupPlayer6,
- ui->vibrationGroupPlayer7, ui->vibrationGroupPlayer8,
- };
-
- vibration_spinboxes = {
- ui->vibrationSpinPlayer1, ui->vibrationSpinPlayer2, ui->vibrationSpinPlayer3,
- ui->vibrationSpinPlayer4, ui->vibrationSpinPlayer5, ui->vibrationSpinPlayer6,
- ui->vibrationSpinPlayer7, ui->vibrationSpinPlayer8,
- };
-
- const auto& players = Settings::values.players.GetValue();
-
- for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
- auto controller = hid_core.GetEmulatedControllerByIndex(i);
- Core::HID::ControllerUpdateCallback engine_callback{
- .on_change = [this,
- i](Core::HID::ControllerTriggerType type) { VibrateController(type, i); },
- .is_npad_service = false,
- };
- controller_callback_key[i] = controller->SetCallback(engine_callback);
- vibration_groupboxes[i]->setChecked(players[i].vibration_enabled);
- vibration_spinboxes[i]->setValue(players[i].vibration_strength);
- }
-
- ui->checkBoxAccurateVibration->setChecked(
- Settings::values.enable_accurate_vibrations.GetValue());
-
- if (!Settings::IsConfiguringGlobal()) {
- ui->checkBoxAccurateVibration->setDisabled(true);
- }
-
- RetranslateUI();
-}
-
-ConfigureVibration::~ConfigureVibration() {
- StopVibrations();
-
- for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
- auto controller = hid_core.GetEmulatedControllerByIndex(i);
- controller->DeleteCallback(controller_callback_key[i]);
- }
-};
-
-void ConfigureVibration::ApplyConfiguration() {
- auto& players = Settings::values.players.GetValue();
-
- for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
- players[i].vibration_enabled = vibration_groupboxes[i]->isChecked();
- players[i].vibration_strength = vibration_spinboxes[i]->value();
- }
-
- Settings::values.enable_accurate_vibrations.SetValue(
- ui->checkBoxAccurateVibration->isChecked());
-}
-
-void ConfigureVibration::changeEvent(QEvent* event) {
- if (event->type() == QEvent::LanguageChange) {
- RetranslateUI();
- }
-
- QDialog::changeEvent(event);
-}
-
-void ConfigureVibration::RetranslateUI() {
- ui->retranslateUi(this);
-}
-
-void ConfigureVibration::VibrateController(Core::HID::ControllerTriggerType type,
- std::size_t player_index) {
- if (type != Core::HID::ControllerTriggerType::Button) {
- return;
- }
-
- auto& player = Settings::values.players.GetValue()[player_index];
- auto controller = hid_core.GetEmulatedControllerByIndex(player_index);
- const int vibration_strength = vibration_spinboxes[player_index]->value();
- const auto& buttons = controller->GetButtonsValues();
-
- bool button_is_pressed = false;
- for (std::size_t i = 0; i < buttons.size(); ++i) {
- if (buttons[i].value) {
- button_is_pressed = true;
- break;
- }
- }
-
- if (!button_is_pressed) {
- StopVibrations();
- return;
- }
-
- const bool old_vibration_enabled = player.vibration_enabled;
- const int old_vibration_strength = player.vibration_strength;
- player.vibration_enabled = true;
- player.vibration_strength = vibration_strength;
-
- const Core::HID::VibrationValue vibration{
- .low_amplitude = 1.0f,
- .low_frequency = 160.0f,
- .high_amplitude = 1.0f,
- .high_frequency = 320.0f,
- };
- controller->SetVibration(Core::HID::DeviceIndex::Left, vibration);
- controller->SetVibration(Core::HID::DeviceIndex::Right, vibration);
-
- // Restore previous values
- player.vibration_enabled = old_vibration_enabled;
- player.vibration_strength = old_vibration_strength;
-}
-
-void ConfigureVibration::StopVibrations() {
- for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
- auto controller = hid_core.GetEmulatedControllerByIndex(i);
- controller->SetVibration(Core::HID::DeviceIndex::Left, Core::HID::DEFAULT_VIBRATION_VALUE);
- controller->SetVibration(Core::HID::DeviceIndex::Right, Core::HID::DEFAULT_VIBRATION_VALUE);
- }
-}