-
21dist/icons/controller/controller.qrc
-
BINdist/icons/controller/dual_joycon.png
-
BINdist/icons/controller/dual_joycon_dark.png
-
BINdist/icons/controller/dual_joycon_midnight.png
-
BINdist/icons/controller/handheld.png
-
BINdist/icons/controller/handheld_dark.png
-
BINdist/icons/controller/handheld_midnight.png
-
BINdist/icons/controller/pro_controller.png
-
BINdist/icons/controller/pro_controller_dark.png
-
BINdist/icons/controller/pro_controller_midnight.png
-
BINdist/icons/controller/single_joycon_left.png
-
BINdist/icons/controller/single_joycon_left_dark.png
-
BINdist/icons/controller/single_joycon_left_midnight.png
-
BINdist/icons/controller/single_joycon_left_vertical.png
-
BINdist/icons/controller/single_joycon_left_vertical_dark.png
-
BINdist/icons/controller/single_joycon_left_vertical_midnight.png
-
BINdist/icons/controller/single_joycon_right.png
-
BINdist/icons/controller/single_joycon_right_dark.png
-
BINdist/icons/controller/single_joycon_right_midnight.png
-
BINdist/icons/controller/single_joycon_right_vertical.png
-
BINdist/icons/controller/single_joycon_right_vertical_dark.png
-
BINdist/icons/controller/single_joycon_right_vertical_midnight.png
-
11src/core/frontend/input.h
-
10src/input_common/gcadapter/gc_poller.cpp
-
10src/input_common/sdl/sdl_impl.cpp
-
2src/yuzu/CMakeLists.txt
-
101src/yuzu/configuration/configure_input_player.cpp
-
2src/yuzu/configuration/configure_input_player.h
-
74src/yuzu/configuration/configure_input_player.ui
-
1784src/yuzu/configuration/configure_input_player_widget.cpp
-
157src/yuzu/configuration/configure_input_player_widget.h
|
Before Width: 400 | Height: 273 | Size: 36 KiB |
|
Before Width: 400 | Height: 273 | Size: 35 KiB |
|
Before Width: 400 | Height: 273 | Size: 34 KiB |
|
Before Width: 400 | Height: 170 | Size: 14 KiB |
|
Before Width: 400 | Height: 170 | Size: 13 KiB |
|
Before Width: 400 | Height: 170 | Size: 13 KiB |
|
Before Width: 400 | Height: 278 | Size: 36 KiB |
|
Before Width: 400 | Height: 278 | Size: 34 KiB |
|
Before Width: 400 | Height: 278 | Size: 35 KiB |
|
Before Width: 400 | Height: 293 | Size: 25 KiB |
|
Before Width: 400 | Height: 293 | Size: 25 KiB |
|
Before Width: 400 | Height: 293 | Size: 24 KiB |
|
Before Width: 400 | Height: 305 | Size: 24 KiB |
|
Before Width: 400 | Height: 305 | Size: 24 KiB |
|
Before Width: 400 | Height: 305 | Size: 23 KiB |
|
Before Width: 400 | Height: 293 | Size: 28 KiB |
|
Before Width: 400 | Height: 293 | Size: 28 KiB |
|
Before Width: 400 | Height: 293 | Size: 26 KiB |
|
Before Width: 400 | Height: 304 | Size: 27 KiB |
|
Before Width: 400 | Height: 304 | Size: 27 KiB |
|
Before Width: 400 | Height: 304 | Size: 26 KiB |
1784
src/yuzu/configuration/configure_input_player_widget.cpp
File diff suppressed because it is too large
View File
@ -0,0 +1,157 @@ |
|||||
|
// Copyright 2020 yuzu Emulator Project |
||||
|
// Licensed under GPLv2 or any later version |
||||
|
// Refer to the license.txt file included. |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <array> |
||||
|
#include <QFrame> |
||||
|
#include <QPointer> |
||||
|
#include "core/frontend/input.h" |
||||
|
#include "core/settings.h" |
||||
|
|
||||
|
class QLabel; |
||||
|
|
||||
|
using AnalogParam = std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs>; |
||||
|
using ButtonParam = std::array<Common::ParamPackage, Settings::NativeButton::NumButtons>; |
||||
|
|
||||
|
// Widget for representing controller animations |
||||
|
class PlayerControlPreview : public QFrame { |
||||
|
Q_OBJECT |
||||
|
|
||||
|
public: |
||||
|
explicit PlayerControlPreview(QWidget* parent); |
||||
|
~PlayerControlPreview() override; |
||||
|
|
||||
|
void SetPlayerInput(std::size_t index, const ButtonParam& buttons_param, |
||||
|
const AnalogParam& analogs_param); |
||||
|
void SetConnectedStatus(bool checked); |
||||
|
void SetControllerType(Settings::ControllerType type); |
||||
|
void BeginMappingButton(std::size_t button_id); |
||||
|
void BeginMappingAnalog(std::size_t button_id); |
||||
|
void EndMapping(); |
||||
|
|
||||
|
protected: |
||||
|
void paintEvent(QPaintEvent* event) override; |
||||
|
|
||||
|
private: |
||||
|
enum class Direction : std::size_t { |
||||
|
None, |
||||
|
Up, |
||||
|
Right, |
||||
|
Down, |
||||
|
Left, |
||||
|
}; |
||||
|
|
||||
|
struct AxisValue { |
||||
|
QPointF value{}; |
||||
|
QPointF raw_value{}; |
||||
|
Input::AnalogProperties properties{}; |
||||
|
int size{}; |
||||
|
QPoint offset{}; |
||||
|
bool active{}; |
||||
|
}; |
||||
|
|
||||
|
struct LedPattern { |
||||
|
bool position1; |
||||
|
bool position2; |
||||
|
bool position3; |
||||
|
bool position4; |
||||
|
}; |
||||
|
|
||||
|
struct ColorMapping { |
||||
|
QColor outline{}; |
||||
|
QColor primary{}; |
||||
|
QColor left{}; |
||||
|
QColor right{}; |
||||
|
QColor button{}; |
||||
|
QColor button2{}; |
||||
|
QColor font{}; |
||||
|
QColor font2{}; |
||||
|
QColor highlight{}; |
||||
|
QColor highlight2{}; |
||||
|
QColor transparent{}; |
||||
|
QColor indicator{}; |
||||
|
QColor led_on{}; |
||||
|
QColor led_off{}; |
||||
|
QColor slider{}; |
||||
|
QColor slider_button{}; |
||||
|
QColor slider_arrow{}; |
||||
|
QColor deadzone{}; |
||||
|
}; |
||||
|
|
||||
|
static LedPattern GetColorPattern(std::size_t index, bool player_on); |
||||
|
void UpdateColors(); |
||||
|
|
||||
|
// Draw controller functions |
||||
|
void DrawHandheldController(QPainter& p, QPointF center); |
||||
|
void DrawDualController(QPainter& p, QPointF center); |
||||
|
void DrawLeftController(QPainter& p, QPointF center); |
||||
|
void DrawRightController(QPainter& p, QPointF center); |
||||
|
void DrawProController(QPainter& p, QPointF center); |
||||
|
|
||||
|
// Draw body functions |
||||
|
void DrawHandheldBody(QPainter& p, QPointF center); |
||||
|
void DrawDualBody(QPainter& p, QPointF center); |
||||
|
void DrawLeftBody(QPainter& p, QPointF center); |
||||
|
void DrawRightBody(QPainter& p, QPointF center); |
||||
|
void DrawProBody(QPainter& p, QPointF center); |
||||
|
|
||||
|
// Draw triggers functions |
||||
|
void DrawProTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); |
||||
|
void DrawHandheldTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); |
||||
|
void DrawDualTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); |
||||
|
void DrawDualZTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); |
||||
|
void DrawLeftTriggers(QPainter& p, QPointF center, bool left_pressed); |
||||
|
void DrawLeftZTriggers(QPainter& p, QPointF center, bool left_pressed); |
||||
|
void DrawRightTriggers(QPainter& p, QPointF center, bool right_pressed); |
||||
|
void DrawRightZTriggers(QPainter& p, QPointF center, bool right_pressed); |
||||
|
|
||||
|
// Draw joystick functions |
||||
|
void DrawJoystick(QPainter& p, QPointF center, float size, bool pressed); |
||||
|
void DrawJoystickSideview(QPainter& p, QPointF center, float angle, float size, bool pressed); |
||||
|
void DrawRawJoystick(QPainter& p, QPointF center, const QPointF value, |
||||
|
const Input::AnalogProperties properties); |
||||
|
void DrawProJoystick(QPainter& p, QPointF center, bool pressed); |
||||
|
|
||||
|
// Draw button functions |
||||
|
void DrawCircleButton(QPainter& p, QPointF center, bool pressed, int button_size); |
||||
|
void DrawRoundButton(QPainter& p, QPointF center, bool pressed, float width, float height, |
||||
|
Direction direction = Direction::None, float radius = 2); |
||||
|
void DrawMinusButton(QPainter& p, QPointF center, bool pressed, int button_size); |
||||
|
void DrawPlusButton(QPainter& p, QPointF center, bool pressed, int button_size); |
||||
|
void DrawArrowButton(QPainter& p, QPointF center, Direction direction, bool pressed); |
||||
|
|
||||
|
// Draw icon functions |
||||
|
void DrawHouseIcon(QPainter& p, QPointF center, float icon_size); |
||||
|
void DrawArrow(QPainter& p, QPointF center, Direction direction, float size); |
||||
|
|
||||
|
// Draw primitive types |
||||
|
template <size_t N> |
||||
|
void DrawPolygon(QPainter& p, const std::array<QPointF, N>& polygon); |
||||
|
void DrawCircle(QPainter& p, QPointF center, float size); |
||||
|
void DrawRectangle(QPainter& p, QPointF center, float width, float height); |
||||
|
void DrawRoundRectangle(QPainter& p, QPointF center, float width, float height, float round); |
||||
|
void DrawText(QPainter& p, QPointF center, float text_size, const QString& text); |
||||
|
void SetTextFont(QPainter& p, float text_size, |
||||
|
const QString& font_family = QStringLiteral("sans-serif")); |
||||
|
|
||||
|
using ButtonArray = |
||||
|
std::array<std::unique_ptr<Input::ButtonDevice>, Settings::NativeButton::BUTTON_NS_END>; |
||||
|
using StickArray = |
||||
|
std::array<std::unique_ptr<Input::AnalogDevice>, Settings::NativeAnalog::NUM_STICKS_HID>; |
||||
|
|
||||
|
bool mapping_active{}; |
||||
|
int blink_counter{}; |
||||
|
QColor button_color{}; |
||||
|
ColorMapping colors{}; |
||||
|
std::array<QColor, 4> led_color{}; |
||||
|
ButtonArray buttons{}; |
||||
|
StickArray sticks{}; |
||||
|
std::size_t player_index{}; |
||||
|
std::size_t button_mapping_index{Settings::NativeButton::BUTTON_NS_END}; |
||||
|
std::size_t analog_mapping_index{Settings::NativeAnalog::NUM_STICKS_HID}; |
||||
|
std::array<AxisValue, Settings::NativeAnalog::NUM_STICKS_HID> axis_values{}; |
||||
|
std::array<bool, Settings::NativeButton::NumButtons> button_values{}; |
||||
|
Settings::ControllerType controller_type{Settings::ControllerType::ProController}; |
||||
|
}; |
||||