summaryrefslogtreecommitdiff
path: root/src/yuzu/debugger/controller.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-09-18 16:30:06 -0700
committerGitHub <noreply@github.com>2021-09-18 16:30:06 -0700
commit6e376c27a327d8e123efafe49370a304cec20221 (patch)
treea11be198f5f4933a68c8cc5cfc183e08c3b01fcb /src/yuzu/debugger/controller.cpp
parent35f46fc079d9534df7850eca3ce29e89e04d8914 (diff)
parent75d8ec1e9f474ce6c2bfc0b8ebe574ca44f9f3d8 (diff)
Merge pull request #6485 from MonsterDruide1/tas
input_common: TAS with script playback & recording
Diffstat (limited to 'src/yuzu/debugger/controller.cpp')
-rw-r--r--src/yuzu/debugger/controller.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/yuzu/debugger/controller.cpp b/src/yuzu/debugger/controller.cpp
index c1fc69578..5a844409b 100644
--- a/src/yuzu/debugger/controller.cpp
+++ b/src/yuzu/debugger/controller.cpp
@@ -6,10 +6,13 @@
#include <QLayout>
#include <QString>
#include "common/settings.h"
+#include "input_common/main.h"
+#include "input_common/tas/tas_input.h"
#include "yuzu/configuration/configure_input_player_widget.h"
#include "yuzu/debugger/controller.h"
-ControllerDialog::ControllerDialog(QWidget* parent) : QWidget(parent, Qt::Dialog) {
+ControllerDialog::ControllerDialog(QWidget* parent, InputCommon::InputSubsystem* input_subsystem_)
+ : QWidget(parent, Qt::Dialog), input_subsystem{input_subsystem_} {
setObjectName(QStringLiteral("Controller"));
setWindowTitle(tr("Controller P1"));
resize(500, 350);
@@ -38,6 +41,9 @@ void ControllerDialog::refreshConfiguration() {
constexpr std::size_t player = 0;
widget->SetPlayerInputRaw(player, players[player].buttons, players[player].analogs);
widget->SetControllerType(players[player].controller_type);
+ ControllerCallback callback{[this](ControllerInput input) { InputController(input); }};
+ widget->SetCallBack(callback);
+ widget->repaint();
widget->SetConnectedStatus(players[player].connected);
}
@@ -67,3 +73,13 @@ void ControllerDialog::hideEvent(QHideEvent* ev) {
widget->SetConnectedStatus(false);
QWidget::hideEvent(ev);
}
+
+void ControllerDialog::InputController(ControllerInput input) {
+ u32 buttons = 0;
+ int index = 0;
+ for (bool btn : input.button_values) {
+ buttons |= (btn ? 1U : 0U) << index;
+ index++;
+ }
+ input_subsystem->GetTas()->RecordInput(buttons, input.axis_values);
+}