mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-07-04 23:31:19 +01:00
Merge pull request #6815 from german77/ui_improvements
settings_ui: Add emulated joystick position dot to controller preview
This commit is contained in:
commit
bd1a764827
3 changed files with 48 additions and 23 deletions
4
dist/qt_themes/default/style.qss
vendored
4
dist/qt_themes/default/style.qss
vendored
|
@ -51,11 +51,11 @@ QPushButton#GPUStatusBarButton:hover {
|
|||
}
|
||||
|
||||
QPushButton#GPUStatusBarButton:checked {
|
||||
color: #ff8040;
|
||||
color: #b06020;
|
||||
}
|
||||
|
||||
QPushButton#GPUStatusBarButton:!checked {
|
||||
color: #40dd40;
|
||||
color: #109010;
|
||||
}
|
||||
|
||||
QPushButton#buttonRefreshDevices {
|
||||
|
|
|
@ -122,6 +122,7 @@ void PlayerControlPreview::UpdateColors() {
|
|||
colors.slider_arrow = QColor(14, 15, 18);
|
||||
colors.font2 = QColor(255, 255, 255);
|
||||
colors.indicator = QColor(170, 238, 255);
|
||||
colors.indicator2 = QColor(100, 255, 100);
|
||||
colors.deadzone = QColor(204, 136, 136);
|
||||
colors.slider_button = colors.button;
|
||||
}
|
||||
|
@ -139,6 +140,7 @@ void PlayerControlPreview::UpdateColors() {
|
|||
colors.slider_arrow = QColor(65, 68, 73);
|
||||
colors.font2 = QColor(0, 0, 0);
|
||||
colors.indicator = QColor(0, 0, 200);
|
||||
colors.indicator2 = QColor(0, 150, 0);
|
||||
colors.deadzone = QColor(170, 0, 0);
|
||||
colors.slider_button = QColor(153, 149, 149);
|
||||
}
|
||||
|
@ -317,8 +319,7 @@ void PlayerControlPreview::DrawLeftController(QPainter& p, const QPointF center)
|
|||
using namespace Settings::NativeAnalog;
|
||||
DrawJoystick(p, center + QPointF(9, -69) + (axis_values[LStick].value * 8), 1.8f,
|
||||
button_values[Settings::NativeButton::LStick]);
|
||||
DrawRawJoystick(p, center + QPointF(-140, 90), axis_values[LStick].raw_value,
|
||||
axis_values[LStick].properties);
|
||||
DrawRawJoystick(p, center + QPointF(-140, 90), QPointF(0, 0));
|
||||
}
|
||||
|
||||
using namespace Settings::NativeButton;
|
||||
|
@ -432,8 +433,7 @@ void PlayerControlPreview::DrawRightController(QPainter& p, const QPointF center
|
|||
using namespace Settings::NativeAnalog;
|
||||
DrawJoystick(p, center + QPointF(-9, 11) + (axis_values[RStick].value * 8), 1.8f,
|
||||
button_values[Settings::NativeButton::RStick]);
|
||||
DrawRawJoystick(p, center + QPointF(140, 90), axis_values[RStick].raw_value,
|
||||
axis_values[RStick].properties);
|
||||
DrawRawJoystick(p, QPointF(0, 0), center + QPointF(140, 90));
|
||||
}
|
||||
|
||||
using namespace Settings::NativeButton;
|
||||
|
@ -547,8 +547,7 @@ void PlayerControlPreview::DrawDualController(QPainter& p, const QPointF center)
|
|||
|
||||
DrawJoystick(p, center + QPointF(-65, -65) + (l_stick.value * 7), 1.62f, l_button);
|
||||
DrawJoystick(p, center + QPointF(65, 12) + (r_stick.value * 7), 1.62f, r_button);
|
||||
DrawRawJoystick(p, center + QPointF(-180, 90), l_stick.raw_value, l_stick.properties);
|
||||
DrawRawJoystick(p, center + QPointF(180, 90), r_stick.raw_value, r_stick.properties);
|
||||
DrawRawJoystick(p, center + QPointF(-180, 90), center + QPointF(180, 90));
|
||||
}
|
||||
|
||||
using namespace Settings::NativeButton;
|
||||
|
@ -634,8 +633,7 @@ void PlayerControlPreview::DrawHandheldController(QPainter& p, const QPointF cen
|
|||
|
||||
DrawJoystick(p, center + QPointF(-171, -41) + (l_stick.value * 4), 1.0f, l_button);
|
||||
DrawJoystick(p, center + QPointF(171, 8) + (r_stick.value * 4), 1.0f, r_button);
|
||||
DrawRawJoystick(p, center + QPointF(-50, 0), l_stick.raw_value, l_stick.properties);
|
||||
DrawRawJoystick(p, center + QPointF(50, 0), r_stick.raw_value, r_stick.properties);
|
||||
DrawRawJoystick(p, center + QPointF(-50, 0), center + QPointF(50, 0));
|
||||
}
|
||||
|
||||
using namespace Settings::NativeButton;
|
||||
|
@ -728,10 +726,7 @@ void PlayerControlPreview::DrawProController(QPainter& p, const QPointF center)
|
|||
button_values[Settings::NativeButton::LStick]);
|
||||
DrawProJoystick(p, center + QPointF(51, 0), axis_values[RStick].value, 11,
|
||||
button_values[Settings::NativeButton::RStick]);
|
||||
DrawRawJoystick(p, center + QPointF(-50, 105), axis_values[LStick].raw_value,
|
||||
axis_values[LStick].properties);
|
||||
DrawRawJoystick(p, center + QPointF(50, 105), axis_values[RStick].raw_value,
|
||||
axis_values[RStick].properties);
|
||||
DrawRawJoystick(p, center + QPointF(-50, 105), center + QPointF(50, 105));
|
||||
}
|
||||
|
||||
using namespace Settings::NativeButton;
|
||||
|
@ -821,10 +816,7 @@ void PlayerControlPreview::DrawGCController(QPainter& p, const QPointF center) {
|
|||
p.setBrush(colors.font);
|
||||
DrawSymbol(p, center + QPointF(61, 37) + (axis_values[RStick].value * 9.5f), Symbol::C,
|
||||
1.0f);
|
||||
DrawRawJoystick(p, center + QPointF(-198, -125), axis_values[LStick].raw_value,
|
||||
axis_values[LStick].properties);
|
||||
DrawRawJoystick(p, center + QPointF(198, -125), axis_values[RStick].raw_value,
|
||||
axis_values[RStick].properties);
|
||||
DrawRawJoystick(p, center + QPointF(-198, -125), center + QPointF(198, -125));
|
||||
}
|
||||
|
||||
using namespace Settings::NativeButton;
|
||||
|
@ -2358,8 +2350,33 @@ void PlayerControlPreview::DrawGCJoystick(QPainter& p, const QPointF center, boo
|
|||
DrawCircle(p, center, 7.5f);
|
||||
}
|
||||
|
||||
void PlayerControlPreview::DrawRawJoystick(QPainter& p, const QPointF center, const QPointF value,
|
||||
const Input::AnalogProperties& properties) {
|
||||
void PlayerControlPreview::DrawRawJoystick(QPainter& p, QPointF center_left, QPointF center_right) {
|
||||
using namespace Settings::NativeAnalog;
|
||||
if (controller_type != Settings::ControllerType::LeftJoycon) {
|
||||
DrawJoystickProperties(p, center_right, axis_values[RStick].properties);
|
||||
p.setPen(colors.indicator);
|
||||
p.setBrush(colors.indicator);
|
||||
DrawJoystickDot(p, center_right, axis_values[RStick].raw_value,
|
||||
axis_values[RStick].properties);
|
||||
p.setPen(colors.indicator2);
|
||||
p.setBrush(colors.indicator2);
|
||||
DrawJoystickDot(p, center_right, axis_values[RStick].value, axis_values[RStick].properties);
|
||||
}
|
||||
|
||||
if (controller_type != Settings::ControllerType::RightJoycon) {
|
||||
DrawJoystickProperties(p, center_left, axis_values[LStick].properties);
|
||||
p.setPen(colors.indicator);
|
||||
p.setBrush(colors.indicator);
|
||||
DrawJoystickDot(p, center_left, axis_values[LStick].raw_value,
|
||||
axis_values[LStick].properties);
|
||||
p.setPen(colors.indicator2);
|
||||
p.setBrush(colors.indicator2);
|
||||
DrawJoystickDot(p, center_left, axis_values[LStick].value, axis_values[LStick].properties);
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerControlPreview::DrawJoystickProperties(QPainter& p, const QPointF center,
|
||||
const Input::AnalogProperties& properties) {
|
||||
constexpr float size = 45.0f;
|
||||
const float range = size * properties.range;
|
||||
const float deadzone = size * properties.deadzone;
|
||||
|
@ -2376,10 +2393,14 @@ void PlayerControlPreview::DrawRawJoystick(QPainter& p, const QPointF center, co
|
|||
pen.setColor(colors.deadzone);
|
||||
p.setPen(pen);
|
||||
DrawCircle(p, center, deadzone);
|
||||
}
|
||||
|
||||
void PlayerControlPreview::DrawJoystickDot(QPainter& p, const QPointF center, const QPointF value,
|
||||
const Input::AnalogProperties& properties) {
|
||||
constexpr float size = 45.0f;
|
||||
const float range = size * properties.range;
|
||||
|
||||
// Dot pointer
|
||||
p.setPen(colors.indicator);
|
||||
p.setBrush(colors.indicator);
|
||||
DrawCircle(p, center + (value * range), 2);
|
||||
}
|
||||
|
||||
|
|
|
@ -90,6 +90,7 @@ private:
|
|||
QColor highlight2{};
|
||||
QColor transparent{};
|
||||
QColor indicator{};
|
||||
QColor indicator2{};
|
||||
QColor led_on{};
|
||||
QColor led_off{};
|
||||
QColor slider{};
|
||||
|
@ -139,7 +140,10 @@ private:
|
|||
// 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, QPointF value,
|
||||
void DrawRawJoystick(QPainter& p, QPointF center_left, QPointF center_right);
|
||||
void DrawJoystickProperties(QPainter& p, QPointF center,
|
||||
const Input::AnalogProperties& properties);
|
||||
void DrawJoystickDot(QPainter& p, QPointF center, QPointF value,
|
||||
const Input::AnalogProperties& properties);
|
||||
void DrawProJoystick(QPainter& p, QPointF center, QPointF offset, float scalar, bool pressed);
|
||||
void DrawGCJoystick(QPainter& p, QPointF center, bool pressed);
|
||||
|
|
Loading…
Reference in a new issue