diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 85 | 
1 files changed, 37 insertions, 48 deletions
| diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index f9915fb7a..3c7500ee3 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -173,61 +173,31 @@ QString AnalogToText(const Common::ParamPackage& param, const std::string& dir)          return ButtonToText(Common::ParamPackage{param.Get(dir, "")});      } -    if (param.Get("engine", "") == "sdl") { +    const auto engine_str = param.Get("engine", ""); +    const QString axis_x_str = QString::fromStdString(param.Get("axis_x", "")); +    const QString axis_y_str = QString::fromStdString(param.Get("axis_y", "")); +    const bool invert_x = param.Get("invert_x", "+") == "-"; +    const bool invert_y = param.Get("invert_y", "+") == "-"; +    if (engine_str == "sdl" || engine_str == "gcpad" || engine_str == "mouse") {          if (dir == "modifier") {              return QObject::tr("[unused]");          } -        if (dir == "left" || dir == "right") { -            const QString axis_x_str = QString::fromStdString(param.Get("axis_x", "")); - -            return QObject::tr("Axis %1").arg(axis_x_str); -        } - -        if (dir == "up" || dir == "down") { -            const QString axis_y_str = QString::fromStdString(param.Get("axis_y", "")); - -            return QObject::tr("Axis %1").arg(axis_y_str); +        if (dir == "left") { +            const QString invert_x_str = QString::fromStdString(invert_x ? "+" : "-"); +            return QObject::tr("Axis %1%2").arg(axis_x_str, invert_x_str);          } - -        return {}; -    } - -    if (param.Get("engine", "") == "gcpad") { -        if (dir == "modifier") { -            return QObject::tr("[unused]"); +        if (dir == "right") { +            const QString invert_x_str = QString::fromStdString(invert_x ? "-" : "+"); +            return QObject::tr("Axis %1%2").arg(axis_x_str, invert_x_str);          } - -        if (dir == "left" || dir == "right") { -            const QString axis_x_str = QString::fromStdString(param.Get("axis_x", "")); - -            return QObject::tr("GC Axis %1").arg(axis_x_str); +        if (dir == "up") { +            const QString invert_y_str = QString::fromStdString(invert_y ? "-" : "+"); +            return QObject::tr("Axis %1%2").arg(axis_y_str, invert_y_str);          } - -        if (dir == "up" || dir == "down") { -            const QString axis_y_str = QString::fromStdString(param.Get("axis_y", "")); - -            return QObject::tr("GC Axis %1").arg(axis_y_str); -        } - -        return {}; -    } - -    if (param.Get("engine", "") == "mouse") { -        if (dir == "modifier") { -            return QObject::tr("[unused]"); -        } - -        if (dir == "left" || dir == "right") { -            const QString axis_x_str = QString::fromStdString(param.Get("axis_x", "")); - -            return QObject::tr("Mouse %1").arg(axis_x_str); -        } - -        if (dir == "up" || dir == "down") { -            const QString axis_y_str = QString::fromStdString(param.Get("axis_y", "")); - -            return QObject::tr("Mouse %1").arg(axis_y_str); +        if (dir == "down") { +            const QString invert_y_str = QString::fromStdString(invert_y ? "+" : "-"); +            return QObject::tr("Axis %1%2").arg(axis_y_str, invert_y_str);          }          return {}; @@ -396,6 +366,25 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i                              analogs_param[analog_id].Clear();                              analog_map_buttons[analog_id][sub_button_id]->setText(tr("[not set]"));                          }); +                        context_menu.addAction(tr("Invert axis"), [&] { +                            if (sub_button_id == 2 || sub_button_id == 3) { +                                const bool invert_value = +                                    analogs_param[analog_id].Get("invert_x", "+") == "-"; +                                const std::string invert_str = invert_value ? "+" : "-"; +                                analogs_param[analog_id].Set("invert_x", invert_str); +                            } +                            if (sub_button_id == 0 || sub_button_id == 1) { +                                const bool invert_value = +                                    analogs_param[analog_id].Get("invert_y", "+") == "-"; +                                const std::string invert_str = invert_value ? "+" : "-"; +                                analogs_param[analog_id].Set("invert_y", invert_str); +                            } +                            for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; +                                 ++sub_button_id) { +                                analog_map_buttons[analog_id][sub_button_id]->setText(AnalogToText( +                                    analogs_param[analog_id], analog_sub_buttons[sub_button_id])); +                            } +                        });                          context_menu.exec(analog_map_buttons[analog_id][sub_button_id]->mapToGlobal(                              menu_location));                      }); | 
