input_common/tas: Add swap controller

This commit is contained in:
german77
2021-06-27 14:02:38 -05:00
committed by MonsterDruide1
parent 9bb6580d89
commit e6c4bf52f0
8 changed files with 98 additions and 38 deletions

View File

@ -1205,6 +1205,11 @@ void Config::SaveControlValues() {
WriteBasicSetting(Settings::values.emulate_analog_keyboard);
WriteBasicSetting(Settings::values.mouse_panning_sensitivity);
WriteSetting(QStringLiteral("enable_tas"), Settings::values.tas_enable, false);
WriteSetting(QStringLiteral("loop_tas"), Settings::values.tas_loop, false);
WriteSetting(QStringLiteral("swap_tas_controllers"), Settings::values.tas_swap_controllers,
true);
WriteSetting(QStringLiteral("tas_pause_on_load"), Settings::values.pause_tas_on_load, true);
qt_config->endGroup();
}

View File

@ -175,10 +175,7 @@ void PlayerControlPreview::ResetInputs() {
}
void PlayerControlPreview::UpdateInput() {
if (controller_callback.update != nullptr) {
controller_callback.update(std::move(true));
}
if (!is_enabled && !mapping_active) {
if (!is_enabled && !mapping_active && !Settings::values.tas_enable) {
return;
}
bool input_changed = false;
@ -223,20 +220,25 @@ void PlayerControlPreview::UpdateInput() {
}
}
ControllerInput input{};
if (input_changed) {
update();
input.changed = true;
ControllerInput input{
.axis_values =
{std::pair<float, float>{axis_values[Settings::NativeAnalog::LStick].value.x(),
axis_values[Settings::NativeAnalog::LStick].value.y()},
std::pair<float, float>{axis_values[Settings::NativeAnalog::RStick].value.x(),
axis_values[Settings::NativeAnalog::RStick].value.y()}},
.button_values = button_values,
.changed = true,
};
if (controller_callback.input != nullptr) {
controller_callback.input(std::move(input));
}
}
input.axis_values[Settings::NativeAnalog::LStick] = {
axis_values[Settings::NativeAnalog::LStick].value.x(),
axis_values[Settings::NativeAnalog::LStick].value.y()};
input.axis_values[Settings::NativeAnalog::RStick] = {
axis_values[Settings::NativeAnalog::RStick].value.x(),
axis_values[Settings::NativeAnalog::RStick].value.y()};
input.button_values = button_values;
if (controller_callback.input != nullptr) {
controller_callback.input(std::move(input));
if (controller_callback.update != nullptr) {
controller_callback.update(std::move(true));
}
if (mapping_active) {

View File

@ -31,9 +31,6 @@
</item>
<item row="1" column="0" colspan="4">
<widget class="QCheckBox" name="tas_control_swap">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Automatic controller profile swapping</string>
</property>