early-access version 2233

This commit is contained in:
pineappleEA
2021-11-21 22:14:21 +01:00
parent ea40d85df3
commit 98868d5d3a
20 changed files with 215 additions and 102 deletions

View File

@@ -481,47 +481,47 @@ AnalogMapping GCAdapter::GetAnalogMappingForDevice(const Common::ParamPackage& p
return mapping;
}
std::string GCAdapter::GetUIButtonName(const Common::ParamPackage& params) const {
Common::Input::ButtonNames GCAdapter::GetUIButtonName(const Common::ParamPackage& params) const {
PadButton button = static_cast<PadButton>(params.Get("button", 0));
switch (button) {
case PadButton::ButtonLeft:
return "left";
return Common::Input::ButtonNames::ButtonLeft;
case PadButton::ButtonRight:
return "right";
return Common::Input::ButtonNames::ButtonRight;
case PadButton::ButtonDown:
return "down";
return Common::Input::ButtonNames::ButtonDown;
case PadButton::ButtonUp:
return "up";
return Common::Input::ButtonNames::ButtonUp;
case PadButton::TriggerZ:
return "Z";
return Common::Input::ButtonNames::TriggerZ;
case PadButton::TriggerR:
return "R";
return Common::Input::ButtonNames::TriggerR;
case PadButton::TriggerL:
return "L";
return Common::Input::ButtonNames::TriggerL;
case PadButton::ButtonA:
return "A";
return Common::Input::ButtonNames::ButtonA;
case PadButton::ButtonB:
return "B";
return Common::Input::ButtonNames::ButtonB;
case PadButton::ButtonX:
return "X";
return Common::Input::ButtonNames::ButtonX;
case PadButton::ButtonY:
return "Y";
return Common::Input::ButtonNames::ButtonY;
case PadButton::ButtonStart:
return "start";
return Common::Input::ButtonNames::ButtonStart;
default:
return "Unknown GC";
return Common::Input::ButtonNames::Undefined;
}
}
std::string GCAdapter::GetUIName(const Common::ParamPackage& params) const {
Common::Input::ButtonNames GCAdapter::GetUIName(const Common::ParamPackage& params) const {
if (params.Has("button")) {
return fmt::format("Button {}", GetUIButtonName(params));
return GetUIButtonName(params);
}
if (params.Has("axis")) {
return fmt::format("Axis {}", params.Get("axis", 0));
return Common::Input::ButtonNames::Value;
}
return "Bad GC Adapter";
return Common::Input::ButtonNames::Invalid;
}
} // namespace InputCommon

View File

@@ -34,7 +34,7 @@ public:
std::vector<Common::ParamPackage> GetInputDevices() const override;
ButtonMapping GetButtonMappingForDevice(const Common::ParamPackage& params) override;
AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage& params) override;
std::string GetUIName(const Common::ParamPackage& params) const override;
Common::Input::ButtonNames GetUIName(const Common::ParamPackage& params) const override;
private:
enum class PadButton {
@@ -112,7 +112,7 @@ private:
/// Updates vibration state of all controllers
void SendVibrations();
std::string GetUIButtonName(const Common::ParamPackage& params) const;
Common::Input::ButtonNames GetUIButtonName(const Common::ParamPackage& params) const;
std::unique_ptr<LibUSBDeviceHandle> usb_adapter_handle;
std::array<GCController, 4> pads;

View File

@@ -171,12 +171,12 @@ AnalogMapping Mouse::GetAnalogMappingForDevice(
return mapping;
}
std::string Mouse::GetUIName(const Common::ParamPackage& params) const {
Common::Input::ButtonNames Mouse::GetUIName(const Common::ParamPackage& params) const {
if (params.Has("button")) {
return fmt::format("Mouse {}", params.Get("button", 0));
return Common::Input::ButtonNames::Value;
}
return "Bad Mouse";
return Common::Input::ButtonNames::Invalid;
}
} // namespace InputCommon

View File

@@ -63,7 +63,7 @@ public:
std::vector<Common::ParamPackage> GetInputDevices() const override;
AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage& params) override;
std::string GetUIName(const Common::ParamPackage& params) const override;
Common::Input::ButtonNames GetUIName(const Common::ParamPackage& params) const override;
private:
void UpdateThread(std::stop_token stop_token);

View File

@@ -220,24 +220,6 @@ public:
return "Unknown";
}
bool IsYAxis(u8 index) {
if (!sdl_controller) {
return false;
}
const auto& binding_left_y =
SDL_GameControllerGetBindForAxis(sdl_controller.get(), SDL_CONTROLLER_AXIS_LEFTY);
const auto& binding_right_y =
SDL_GameControllerGetBindForAxis(sdl_controller.get(), SDL_CONTROLLER_AXIS_RIGHTY);
if (index == binding_left_y.value.axis) {
return true;
}
if (index == binding_right_y.value.axis) {
return true;
}
return false;
}
private:
std::string guid;
int port;
@@ -376,11 +358,6 @@ void SDLDriver::HandleGameControllerEvent(const SDL_Event& event) {
case SDL_JOYAXISMOTION: {
if (const auto joystick = GetSDLJoystickBySDLID(event.jaxis.which)) {
const PadIdentifier identifier = joystick->GetPadIdentifier();
// Vertical axis is inverted on nintendo compared to SDL
if (joystick->IsYAxis(event.jaxis.axis)) {
SetAxis(identifier, event.jaxis.axis, -event.jaxis.value / 32767.0f);
break;
}
SetAxis(identifier, event.jaxis.axis, event.jaxis.value / 32767.0f);
}
break;
@@ -892,26 +869,25 @@ MotionMapping SDLDriver::GetMotionMappingForDevice(const Common::ParamPackage& p
return mapping;
}
std::string SDLDriver::GetUIName(const Common::ParamPackage& params) const {
Common::Input::ButtonNames SDLDriver::GetUIName(const Common::ParamPackage& params) const {
if (params.Has("button")) {
// TODO(German77): Find how to substitue the values for real button names
return fmt::format("Button {}", params.Get("button", 0));
return Common::Input::ButtonNames::Value;
}
if (params.Has("hat")) {
return fmt::format("Hat {}", params.Get("direction", ""));
return Common::Input::ButtonNames::Value;
}
if (params.Has("axis")) {
return fmt::format("Axis {}", params.Get("axis", ""));
return Common::Input::ButtonNames::Value;
}
if (params.Has("axis_x") && params.Has("axis_y") && params.Has("axis_z")) {
return fmt::format("Axis {},{},{}", params.Get("axis_x", ""), params.Get("axis_y", ""),
params.Get("axis_z", ""));
return Common::Input::ButtonNames::Value;
}
if (params.Has("motion")) {
return "SDL motion";
return Common::Input::ButtonNames::Engine;
}
return "Bad SDL";
return Common::Input::ButtonNames::Invalid;
}
std::string SDLDriver::GetHatButtonName(u8 direction_value) const {

View File

@@ -53,7 +53,7 @@ public:
ButtonMapping GetButtonMappingForDevice(const Common::ParamPackage& params) override;
AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage& params) override;
MotionMapping GetMotionMappingForDevice(const Common::ParamPackage& params) override;
std::string GetUIName(const Common::ParamPackage& params) const override;
Common::Input::ButtonNames GetUIName(const Common::ParamPackage& params) const override;
std::string GetHatButtonName(u8 direction_value) const override;
u8 GetHatButtonId(const std::string& direction_name) const override;

View File

@@ -161,8 +161,9 @@ public:
};
/// Retrieves the name of the given input.
virtual std::string GetUIName([[maybe_unused]] const Common::ParamPackage& params) const {
return GetEngineName();
virtual Common::Input::ButtonNames GetUIName(
[[maybe_unused]] const Common::ParamPackage& params) const {
return Common::Input::ButtonNames::Engine;
};
/// Retrieves the index number of the given hat button direction

View File

@@ -146,7 +146,8 @@ public:
Common::Input::AnalogProperties properties_y_,
InputEngine* input_engine_)
: identifier(identifier_), axis_x(axis_x_), axis_y(axis_y_), properties_x(properties_x_),
properties_y(properties_y_), input_engine(input_engine_) {
properties_y(properties_y_),
input_engine(input_engine_), invert_axis_y{input_engine_->GetEngineName() == "sdl"} {
UpdateCallback engine_callback{[this]() { OnChange(); }};
const InputIdentifier x_input_identifier{
.identifier = identifier,
@@ -181,6 +182,11 @@ public:
.raw_value = input_engine->GetAxis(identifier, axis_y),
.properties = properties_y,
};
// This is a workaround too keep compatibility with old yuzu versions. Vertical axis is
// inverted on SDL compared to Nintendo
if (invert_axis_y) {
status.y.raw_value = -status.y.raw_value;
}
return status;
}
@@ -220,6 +226,7 @@ private:
float last_axis_x_value;
float last_axis_y_value;
InputEngine* input_engine;
const bool invert_axis_y;
};
class InputFromTouch final : public Common::Input::InputDevice {

View File

@@ -205,9 +205,9 @@ struct InputSubsystem::Impl {
return {};
}
std::string GetButtonName(const Common::ParamPackage& params) const {
Common::Input::ButtonNames GetButtonName(const Common::ParamPackage& params) const {
if (!params.Has("engine") || params.Get("engine", "") == "any") {
return "Unknown";
return Common::Input::ButtonNames::Undefined;
}
const std::string engine = params.Get("engine", "");
if (engine == mouse->GetEngineName()) {
@@ -227,7 +227,7 @@ struct InputSubsystem::Impl {
return sdl->GetUIName(params);
}
#endif
return "Bad engine";
return Common::Input::ButtonNames::Invalid;
}
bool IsController(const Common::ParamPackage& params) {
@@ -361,15 +361,8 @@ MotionMapping InputSubsystem::GetMotionMappingForDevice(const Common::ParamPacka
return impl->GetMotionMappingForDevice(device);
}
std::string InputSubsystem::GetButtonName(const Common::ParamPackage& params) const {
const std::string toggle = params.Get("toggle", false) ? "~" : "";
const std::string inverted = params.Get("inverted", false) ? "!" : "";
const std::string button_name = impl->GetButtonName(params);
std::string axis_direction = "";
if (params.Has("axis")) {
axis_direction = params.Get("invert", "+");
}
return fmt::format("{}{}{}{}", toggle, inverted, button_name, axis_direction);
Common::Input::ButtonNames InputSubsystem::GetButtonName(const Common::ParamPackage& params) const {
return impl->GetButtonName(params);
}
bool InputSubsystem::IsController(const Common::ParamPackage& params) const {

View File

@@ -13,6 +13,10 @@ namespace Common {
class ParamPackage;
}
namespace Common::Input {
enum class ButtonNames;
}
namespace Settings::NativeAnalog {
enum Values : int;
}
@@ -108,8 +112,9 @@ public:
/// Retrieves the motion mappings for the given device.
[[nodiscard]] MotionMapping GetMotionMappingForDevice(const Common::ParamPackage& device) const;
/// Returns a string contaning the name of the button from the input engine.
[[nodiscard]] std::string GetButtonName(const Common::ParamPackage& params) const;
/// Returns an enum contaning the name to be displayed from the input engine.
[[nodiscard]] Common::Input::ButtonNames GetButtonName(
const Common::ParamPackage& params) const;
/// Returns true if device is a controller.
[[nodiscard]] bool IsController(const Common::ParamPackage& params) const;