summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar german2021-02-02 21:39:47 -0600
committerGravatar german2021-02-06 09:43:42 -0600
commitc9597af39ded9430cc94c37959fb8154abea8686 (patch)
treec3ba0877b806e5916d2ffd36736e66d382891815
parentAdd controller window and single joycon top view (diff)
downloadyuzu-c9597af39ded9430cc94c37959fb8154abea8686.tar.gz
yuzu-c9597af39ded9430cc94c37959fb8154abea8686.tar.xz
yuzu-c9597af39ded9430cc94c37959fb8154abea8686.zip
Add SL SR vectors, change dual joycon view, add missing raw data from keyboard/mouse
Diffstat (limited to '')
-rwxr-xr-xsrc/input_common/analog_from_button.cpp4
-rw-r--r--src/input_common/mouse/mouse_poller.cpp10
-rw-r--r--src/yuzu/configuration/configure_input_player_widget.cpp404
-rw-r--r--src/yuzu/configuration/configure_input_player_widget.h7
4 files changed, 247 insertions, 178 deletions
diff --git a/src/input_common/analog_from_button.cpp b/src/input_common/analog_from_button.cpp
index 07a0fa4a1..770893687 100755
--- a/src/input_common/analog_from_button.cpp
+++ b/src/input_common/analog_from_button.cpp
@@ -139,6 +139,10 @@ public:
139 static_cast<float>(y) * coef * (x == 0 ? 1.0f : SQRT_HALF)); 139 static_cast<float>(y) * coef * (x == 0 ? 1.0f : SQRT_HALF));
140 } 140 }
141 141
142 Input::AnalogProperties GetAnalogProperties() const override {
143 return {modifier_scale, 1.0f, 0.5f};
144 }
145
142 bool GetAnalogDirectionStatus(Input::AnalogDirection direction) const override { 146 bool GetAnalogDirectionStatus(Input::AnalogDirection direction) const override {
143 switch (direction) { 147 switch (direction) {
144 case Input::AnalogDirection::RIGHT: 148 case Input::AnalogDirection::RIGHT:
diff --git a/src/input_common/mouse/mouse_poller.cpp b/src/input_common/mouse/mouse_poller.cpp
index 508eb0c7d..3d799b293 100644
--- a/src/input_common/mouse/mouse_poller.cpp
+++ b/src/input_common/mouse/mouse_poller.cpp
@@ -106,6 +106,16 @@ public:
106 return {0.0f, 0.0f}; 106 return {0.0f, 0.0f};
107 } 107 }
108 108
109 std::tuple<float, float> GetRawStatus() const override {
110 const float x = GetAxis(axis_x);
111 const float y = GetAxis(axis_y);
112 return {x, y};
113 }
114
115 Input::AnalogProperties GetAnalogProperties() const override {
116 return {deadzone, range, 0.5f};
117 }
118
109private: 119private:
110 const u32 button; 120 const u32 button;
111 const u32 axis_x; 121 const u32 axis_x;
diff --git a/src/yuzu/configuration/configure_input_player_widget.cpp b/src/yuzu/configuration/configure_input_player_widget.cpp
index 77d7569fe..1b0665805 100644
--- a/src/yuzu/configuration/configure_input_player_widget.cpp
+++ b/src/yuzu/configuration/configure_input_player_widget.cpp
@@ -272,7 +272,7 @@ void PlayerControlPreview::DrawLeftController(QPainter& p, const QPointF center)
272 using namespace Settings::NativeAnalog; 272 using namespace Settings::NativeAnalog;
273 DrawJoystick(p, center + QPointF(9, -69) + (axis_values[LStick].value * 8), 1.8f, 273 DrawJoystick(p, center + QPointF(9, -69) + (axis_values[LStick].value * 8), 1.8f,
274 button_values[Settings::NativeButton::LStick]); 274 button_values[Settings::NativeButton::LStick]);
275 DrawRawJoystick(p, center + QPointF(-140, 100), axis_values[LStick].raw_value, 275 DrawRawJoystick(p, center + QPointF(-140, 90), axis_values[LStick].raw_value,
276 axis_values[LStick].properties); 276 axis_values[LStick].properties);
277 } 277 }
278 278
@@ -307,12 +307,10 @@ void PlayerControlPreview::DrawLeftController(QPainter& p, const QPointF center)
307 DrawRoundButton(p, center + QPoint(155, -69), button_values[SL], 5.2f, 12, Direction::None, 4); 307 DrawRoundButton(p, center + QPoint(155, -69), button_values[SL], 5.2f, 12, Direction::None, 4);
308 308
309 // SR and SL text 309 // SR and SL text
310 SetTextFont(p, 5.7f); 310 p.setPen(colors.transparent);
311 p.setPen(colors.outline); 311 p.setBrush(colors.font2);
312 p.rotate(90); 312 DrawSymbol(p, center + QPointF(155, 52), Symbol::SR, 1.0f);
313 p.drawText(QPointF(center.y() - 5, -center.x() + 3) + QPointF(52, -155), tr("SR")); 313 DrawSymbol(p, center + QPointF(155, -69), Symbol::SL, 1.0f);
314 p.drawText(QPointF(center.y() - 5, -center.x() + 3) + QPointF(-69, -155), tr("SL"));
315 p.rotate(-90);
316 314
317 // Minus button 315 // Minus button
318 button_color = colors.button; 316 button_color = colors.button;
@@ -388,7 +386,7 @@ void PlayerControlPreview::DrawRightController(QPainter& p, const QPointF center
388 using namespace Settings::NativeAnalog; 386 using namespace Settings::NativeAnalog;
389 DrawJoystick(p, center + QPointF(-9, 11) + (axis_values[RStick].value * 8), 1.8f, 387 DrawJoystick(p, center + QPointF(-9, 11) + (axis_values[RStick].value * 8), 1.8f,
390 button_values[Settings::NativeButton::RStick]); 388 button_values[Settings::NativeButton::RStick]);
391 DrawRawJoystick(p, center + QPointF(140, 100), axis_values[RStick].raw_value, 389 DrawRawJoystick(p, center + QPointF(140, 90), axis_values[RStick].raw_value,
392 axis_values[RStick].properties); 390 axis_values[RStick].properties);
393 } 391 }
394 392
@@ -423,12 +421,12 @@ void PlayerControlPreview::DrawRightController(QPainter& p, const QPointF center
423 DrawRoundButton(p, center + QPoint(-155, -69), button_values[SR], 5, 12, Direction::None, 4.0f); 421 DrawRoundButton(p, center + QPoint(-155, -69), button_values[SR], 5, 12, Direction::None, 4.0f);
424 422
425 // SR and SL text 423 // SR and SL text
426 SetTextFont(p, 5.7f); 424 p.setPen(colors.transparent);
427 p.setPen(colors.outline); 425 p.setBrush(colors.font2);
428 p.rotate(-90); 426 p.rotate(-180);
429 p.drawText(QPointF(-center.y() - 5, center.x() + 3) + QPointF(-52, -155), tr("SL")); 427 DrawSymbol(p, QPointF(-center.x(), -center.y()) + QPointF(155, 69), Symbol::SR, 1.0f);
430 p.drawText(QPointF(-center.y() - 5, center.x() + 3) + QPointF(69, -155), tr("SR")); 428 DrawSymbol(p, QPointF(-center.x(), -center.y()) + QPointF(155, -52), Symbol::SL, 1.0f);
431 p.rotate(90); 429 p.rotate(180);
432 430
433 // Plus Button 431 // Plus Button
434 DrawPlusButton(p, center + QPoint(-40, -118), button_values[Plus], 16); 432 DrawPlusButton(p, center + QPoint(-40, -118), button_values[Plus], 16);
@@ -448,54 +446,50 @@ void PlayerControlPreview::DrawDualController(QPainter& p, const QPointF center)
448 { 446 {
449 using namespace Settings::NativeButton; 447 using namespace Settings::NativeButton;
450 448
451 // Sideview joystick
452 DrawJoystickSideview(p, center + QPoint(-174, -65),
453 -axis_values[Settings::NativeAnalog::LStick].value.y(), 1.0f,
454 button_values[LStick]);
455 DrawJoystickSideview(p, center + QPoint(174, 12),
456 axis_values[Settings::NativeAnalog::RStick].value.y() + 10.0f, 1.0f,
457 button_values[RStick]);
458
459 // Left/Right trigger 449 // Left/Right trigger
460 DrawDualTriggers(p, center, button_values[L], button_values[R]); 450 DrawDualTriggers(p, center, button_values[L], button_values[R]);
461 DrawDualZTriggers(p, center, button_values[ZL], button_values[ZR]);
462 451
463 // sideview Left and Right trigger 452 // Topview face buttons
464 p.setPen(colors.outline); 453 p.setPen(colors.outline);
465 button_color = colors.button; 454 button_color = colors.button;
466 DrawRoundButton(p, center + QPoint(-166, -131), button_values[L], 7, 4, Direction::Down); 455 DrawRoundButton(p, center + QPoint(200, -71), button_values[A], 10, 5, Direction::Up);
467 DrawRoundButton(p, center + QPoint(166, -131), button_values[R], 7, 4, Direction::Down); 456 DrawRoundButton(p, center + QPoint(160, -71), button_values[Y], 10, 5, Direction::Up);
468 457
469 // Sideview face buttons 458 // Topview right joystick
470 DrawRoundButton(p, center + QPoint(180, -65), button_values[A], 5, 10, Direction::Left); 459 DrawJoystickSideview(p, center + QPointF(180, -78),
471 DrawRoundButton(p, center + QPoint(180, -45), button_values[B], 5, 10, Direction::Left); 460 -axis_values[Settings::NativeAnalog::RStick].value.x() + 15.0f, 1,
472 DrawRoundButton(p, center + QPoint(180, -85), button_values[X], 5, 10, Direction::Left); 461 button_values[RStick]);
473 DrawRoundButton(p, center + QPoint(180, -65), button_values[Y], 5, 10, Direction::Left);
474 462
475 // Sideview D-pad buttons 463 // Topview plus button
476 DrawRoundButton(p, center + QPoint(-180, 12), button_values[DLeft], 5, 10, 464 p.setPen(colors.outline);
477 Direction::Right); 465 button_color = colors.button;
478 DrawRoundButton(p, center + QPoint(-180, 33), button_values[DDown], 5, 10, 466 DrawRoundButton(p, center + QPoint(154, -72), button_values[Plus], 7, 4, Direction::Up, 1);
479 Direction::Right); 467 DrawRoundButton(p, center + QPoint(154, -72), button_values[Plus], 2.33f, 4, Direction::Up,
480 DrawRoundButton(p, center + QPoint(-180, -8), button_values[DUp], 5, 10, Direction::Right); 468 1);
481 DrawRoundButton(p, center + QPoint(-180, 12), button_values[DRight], 5, 10,
482 Direction::Right);
483 469
484 // Sideview home and plus button 470 // Topview D-pad buttons
485 DrawRoundButton(p, center + QPoint(180, 60), button_values[Home], 3, 11, Direction::Left); 471 p.setPen(colors.outline);
486 DrawRoundButton(p, center + QPoint(180, -106), button_values[Plus], 4, 7, Direction::Left, 472 button_color = colors.button;
473 DrawRoundButton(p, center + QPoint(-200, -71), button_values[DLeft], 10, 5, Direction::Up);
474 DrawRoundButton(p, center + QPoint(-160, -71), button_values[DRight], 10, 5, Direction::Up);
475
476 // Topview left joystick
477 DrawJoystickSideview(p, center + QPointF(-180.5f, -78),
478 -axis_values[Settings::NativeAnalog::LStick].value.x() + 15.0f, 1,
479 button_values[LStick]);
480
481 // Topview minus button
482 p.setPen(colors.outline);
483 button_color = colors.button;
484 DrawRoundButton(p, center + QPoint(-154, -72), button_values[Minus], 7, 4, Direction::Up,
487 1); 485 1);
488 DrawRoundButton(p, center + QPoint(180, -106), button_values[Plus], 4, 2.33f,
489 Direction::Left, 1);
490 486
491 // Sideview screenshot and minus button 487 DrawDualBody(p, center);
492 DrawRoundButton(p, center + QPoint(-180, 63), button_values[Screenshot], 3, 8,
493 Direction::Right, 1);
494 DrawRoundButton(p, center + QPoint(-180, -106), button_values[Minus], 4, 2.66f,
495 Direction::Right, 1);
496 }
497 488
498 DrawDualBody(p, center); 489 // Right trigger top view
490 DrawDualTriggersTopView(p, center, button_values[L], button_values[R]);
491 DrawDualZTriggersTopView(p, center, button_values[ZL], button_values[ZR]);
492 }
499 493
500 { // Draw joysticks 494 { // Draw joysticks
501 using namespace Settings::NativeAnalog; 495 using namespace Settings::NativeAnalog;
@@ -503,9 +497,9 @@ void PlayerControlPreview::DrawDualController(QPainter& p, const QPointF center)
503 button_values[Settings::NativeButton::LStick]); 497 button_values[Settings::NativeButton::LStick]);
504 DrawJoystick(p, center + QPointF(65, 12) + (axis_values[RStick].value * 7), 1.62f, 498 DrawJoystick(p, center + QPointF(65, 12) + (axis_values[RStick].value * 7), 1.62f,
505 button_values[Settings::NativeButton::RStick]); 499 button_values[Settings::NativeButton::RStick]);
506 DrawRawJoystick(p, rect().bottomLeft() + QPointF(45, -45), axis_values[LStick].raw_value, 500 DrawRawJoystick(p, center + QPointF(-180, 90), axis_values[LStick].raw_value,
507 axis_values[LStick].properties); 501 axis_values[LStick].properties);
508 DrawRawJoystick(p, rect().bottomRight() + QPointF(-45, -45), axis_values[RStick].raw_value, 502 DrawRawJoystick(p, center + QPointF(180, 90), axis_values[RStick].raw_value,
509 axis_values[RStick].properties); 503 axis_values[RStick].properties);
510 } 504 }
511 505
@@ -598,7 +592,7 @@ void PlayerControlPreview::DrawHandheldController(QPainter& p, const QPointF cen
598 592
599 // Face buttons constants 593 // Face buttons constants
600 const QPointF face_center = center + QPoint(171, -41); 594 const QPointF face_center = center + QPoint(171, -41);
601 constexpr float face_distance = 12.8; 595 constexpr float face_distance = 12.8f;
602 constexpr float face_radius = 6.4f; 596 constexpr float face_radius = 6.4f;
603 constexpr float text_size = 0.6f; 597 constexpr float text_size = 0.6f;
604 598
@@ -620,7 +614,7 @@ void PlayerControlPreview::DrawHandheldController(QPainter& p, const QPointF cen
620 614
621 // D-pad constants 615 // D-pad constants
622 const QPointF dpad_center = center + QPoint(-171, 8); 616 const QPointF dpad_center = center + QPoint(-171, 8);
623 constexpr float dpad_distance = 12.8; 617 constexpr float dpad_distance = 12.8f;
624 constexpr float dpad_radius = 6.4f; 618 constexpr float dpad_radius = 6.4f;
625 constexpr float dpad_arrow_size = 0.68f; 619 constexpr float dpad_arrow_size = 0.68f;
626 620
@@ -810,7 +804,21 @@ constexpr std::array<float, 18 * 2> symbol_zl = {
810 5.43f, 2.1f, 5.43f, 3.22f, 0.98f, 3.22f, 0.98f, -3.23f, 2.4f, -3.23f, -6.0f, 2.12f, 804 5.43f, 2.1f, 5.43f, 3.22f, 0.98f, 3.22f, 0.98f, -3.23f, 2.4f, -3.23f, -6.0f, 2.12f,
811}; 805};
812 806
813constexpr std::array<float, 110 * 2> symbol_zr = { 807constexpr std::array<float, 57 * 2> symbol_sl = {
808 -3.0f, -3.65f, -2.76f, -4.26f, -2.33f, -4.76f, -1.76f, -5.09f, -1.13f, -5.26f, -0.94f,
809 -4.77f, -0.87f, -4.11f, -1.46f, -3.88f, -1.91f, -3.41f, -2.05f, -2.78f, -1.98f, -2.13f,
810 -1.59f, -1.61f, -0.96f, -1.53f, -0.56f, -2.04f, -0.38f, -2.67f, -0.22f, -3.31f, 0.0f,
811 -3.93f, 0.34f, -4.49f, 0.86f, -4.89f, 1.49f, -5.05f, 2.14f, -4.95f, 2.69f, -4.6f,
812 3.07f, -4.07f, 3.25f, -3.44f, 3.31f, -2.78f, 3.25f, -2.12f, 3.07f, -1.49f, 2.7f,
813 -0.95f, 2.16f, -0.58f, 1.52f, -0.43f, 1.41f, -0.99f, 1.38f, -1.65f, 1.97f, -1.91f,
814 2.25f, -2.49f, 2.25f, -3.15f, 1.99f, -3.74f, 1.38f, -3.78f, 1.06f, -3.22f, 0.88f,
815 -2.58f, 0.71f, -1.94f, 0.49f, -1.32f, 0.13f, -0.77f, -0.4f, -0.4f, -1.04f, -0.25f,
816 -1.69f, -0.32f, -2.28f, -0.61f, -2.73f, -1.09f, -2.98f, -1.69f, -3.09f, -2.34f,
817
818 3.23f, 2.4f, -2.1f, 2.4f, -2.1f, 5.43f, -3.22f, 5.43f, -3.22f, 0.98f, 3.23f,
819 0.98f, 3.23f, 2.4f, -3.09f, -2.34f,
820};
821constexpr std::array<float, 109 * 2> symbol_zr = {
814 -2.6f, -2.13f, -5.6f, -2.13f, -5.6f, -3.23f, -0.8f, -3.23f, -0.8f, -2.13f, -4.4f, 2.12f, -0.7f, 822 -2.6f, -2.13f, -5.6f, -2.13f, -5.6f, -3.23f, -0.8f, -3.23f, -0.8f, -2.13f, -4.4f, 2.12f, -0.7f,
815 2.12f, -0.7f, 3.22f, -6.0f, 3.22f, -6.0f, 2.12f, 823 2.12f, -0.7f, 3.22f, -6.0f, 3.22f, -6.0f, 2.12f,
816 824
@@ -828,10 +836,42 @@ constexpr std::array<float, 110 * 2> symbol_zr = {
828 0.7f, 3.3f, 0.6f, 2.9f, 0.5f, 2.3f, 0.6f, 2.3f, 0.7f, 2.2f, 3.3f, 1.0f, 3.2f, 836 0.7f, 3.3f, 0.6f, 2.9f, 0.5f, 2.3f, 0.6f, 2.3f, 0.7f, 2.2f, 3.3f, 1.0f, 3.2f,
829 1.0f, 3.1f, 1.0f, 0.0f, 837 1.0f, 3.1f, 1.0f, 0.0f,
830 838
831 4.2f, -0.5f, 4.2f, -0.5f, 4.4f, -0.6f, 4.7f, -0.7f, 4.8f, -0.8f, 4.9f, -1.0f, 5.0f, 839 4.2f, -0.5f, 4.4f, -0.6f, 4.7f, -0.7f, 4.8f, -0.8f, 4.9f, -1.0f, 5.0f, -1.1f, 5.0f,
832 -1.1f, 5.0f, -1.2f, 4.9f, -1.7f, 4.9f, -1.8f, 4.8f, -1.9f, 4.8f, -2.0f, 4.6f, -2.1f, 840 -1.2f, 4.9f, -1.7f, 4.9f, -1.8f, 4.8f, -1.9f, 4.8f, -2.0f, 4.6f, -2.1f, 4.3f, -2.2f,
833 4.3f, -2.2f, 2.3f, -2.1f, 2.3f, -2.0f, 2.4f, -0.5f, 4.2f, -0.5f, 1.0f, 0.0f, -6.0f, 841 2.3f, -2.1f, 2.3f, -2.0f, 2.4f, -0.5f, 4.2f, -0.5f, 1.0f, 0.0f, -6.0f, 2.12f,
834 2.12f, 842};
843
844constexpr std::array<float, 148 * 2> symbol_sr = {
845 -3.0f, -3.65f, -2.76f, -4.26f, -2.33f, -4.76f, -1.76f, -5.09f, -1.13f, -5.26f, -0.94f, -4.77f,
846 -0.87f, -4.11f, -1.46f, -3.88f, -1.91f, -3.41f, -2.05f, -2.78f, -1.98f, -2.13f, -1.59f, -1.61f,
847 -0.96f, -1.53f, -0.56f, -2.04f, -0.38f, -2.67f, -0.22f, -3.31f, 0.0f, -3.93f, 0.34f, -4.49f,
848 0.86f, -4.89f, 1.49f, -5.05f, 2.14f, -4.95f, 2.69f, -4.6f, 3.07f, -4.07f, 3.25f, -3.44f,
849 3.31f, -2.78f, 3.25f, -2.12f, 3.07f, -1.49f, 2.7f, -0.95f, 2.16f, -0.58f, 1.52f, -0.43f,
850 1.41f, -0.99f, 1.38f, -1.65f, 1.97f, -1.91f, 2.25f, -2.49f, 2.25f, -3.15f, 1.99f, -3.74f,
851 1.38f, -3.78f, 1.06f, -3.22f, 0.88f, -2.58f, 0.71f, -1.94f, 0.49f, -1.32f, 0.13f, -0.77f,
852 -0.4f, -0.4f, -1.04f, -0.25f, -1.69f, -0.32f, -2.28f, -0.61f, -2.73f, -1.09f, -2.98f, -1.69f,
853 -3.09f, -2.34f,
854
855 -1.0f, 0.0f, 0.1f, 1.0f, 3.3f, 1.1f, 3.2f, 4.3f, 3.1f, 5.1f, 3.0f, 5.4f,
856 2.9f, 5.6f, 2.8f, 5.7f, 2.7f, 5.9f, 2.6f, 5.9f, 2.5f, 6.0f, 2.3f, 6.1f,
857 2.2f, 6.2f, 2.1f, 6.2f, 2.0f, 6.3f, 1.9f, 6.3f, 0.8f, 6.2f, 0.7f, 6.2f,
858 0.6f, 6.1f, 0.5f, 6.1f, 0.4f, 6.0f, 0.3f, 6.0f, 0.2f, 5.9f, 0.1f, 5.7f,
859 0.0f, 5.7f, -0.1f, 5.6f, -0.2f, 5.4f, -0.3f, 5.1f, -0.4f, 4.7f, -0.5f, 4.7f,
860 -0.6f, 4.9f, -0.7f, 5.0f, -0.8f, 5.2f, -0.9f, 5.2f, -1.0f, 5.3f, -1.1f, 5.5f,
861 -1.2f, 5.5f, -1.3f, 5.6f, -1.5f, 5.7f, -1.6f, 5.8f, -1.8f, 5.9f, -1.9f, 6.0f,
862 -2.1f, 6.1f, -2.2f, 6.2f, -2.3f, 6.2f, -2.4f, 6.3f, -2.6f, 6.4f, -2.7f, 6.5f,
863 -2.9f, 6.6f, -3.0f, 6.7f, -3.1f, 6.7f, -3.2f, 6.8f, -3.3f, 6.8f, -3.2f, 5.3f,
864 -3.1f, 5.2f, -3.0f, 5.2f, -2.9f, 5.1f, -2.7f, 5.0f, -2.6f, 4.9f, -2.4f, 4.8f,
865 -2.3f, 4.7f, -2.1f, 4.6f, -2.0f, 4.5f, -1.8f, 4.4f, -1.7f, 4.3f, -1.4f, 4.1f,
866 -1.3f, 4.0f, -1.1f, 3.9f, -1.0f, 3.8f, -0.9f, 3.6f, -0.8f, 3.6f, -0.7f, 3.5f,
867 -0.6f, 3.3f, -0.5f, 2.9f, -0.6f, 2.3f, -0.7f, 2.3f, -3.3f, 2.2f, -3.2f, 1.0f,
868 -3.1f, 1.0f, 0.0f, 1.0f,
869
870 0.5f, 4.2f, 0.6f, 4.4f, 0.7f, 4.7f, 0.8f, 4.8f, 1.0f, 4.9f, 1.1f, 5.0f,
871 1.2f, 5.0f, 1.7f, 4.9f, 1.8f, 4.9f, 1.9f, 4.8f, 2.0f, 4.8f, 2.1f, 4.6f,
872 2.2f, 4.3f, 2.1f, 2.3f, 2.0f, 2.3f, 0.5f, 2.4f, 0.5f, 4.2f, -0.0f, 1.0f,
873 -3.09f, -2.34f,
874
835}; 875};
836 876
837constexpr std::array<float, 12 * 2> house = { 877constexpr std::array<float, 12 * 2> house = {
@@ -1093,15 +1133,16 @@ constexpr std::array<float, 40 * 2> left_joycon_body_trigger = {
1093}; 1133};
1094 1134
1095constexpr std::array<float, 49 * 2> left_joycon_topview = { 1135constexpr std::array<float, 49 * 2> left_joycon_topview = {
1096 -184.8, -20.8, -185.6, -21.1, -186.4, -21.5, -187.1, -22.1, -187.8, -22.6, -188.4, 1136 -184.8f, -20.8f, -185.6f, -21.1f, -186.4f, -21.5f, -187.1f, -22.1f, -187.8f, -22.6f,
1097 -23.2, -189.6, -24.5, -190.2, -25.2, -190.7, -25.9, -191.1, -26.7, -191.4, -27.5, 1137 -188.4f, -23.2f, -189.6f, -24.5f, -190.2f, -25.2f, -190.7f, -25.9f, -191.1f, -26.7f,
1098 -191.6, -28.4, -191.7, -29.2, -191.7, -30.1, -191.5, -47.7, -191.2, -48.5, -191, 1138 -191.4f, -27.5f, -191.6f, -28.4f, -191.7f, -29.2f, -191.7f, -30.1f, -191.5f, -47.7f,
1099 -49.4, -190.7, -50.2, -190.3, -51, -190, -51.8, -189.6, -52.6, -189.1, -53.4, 1139 -191.2f, -48.5f, -191.0f, -49.4f, -190.7f, -50.2f, -190.3f, -51.0f, -190.0f, -51.8f,
1100 -188.6, -54.1, -187.5, -55.4, -186.9, -56.1, -186.2, -56.7, -185.5, -57.2, -184, 1140 -189.6f, -52.6f, -189.1f, -53.4f, -188.6f, -54.1f, -187.5f, -55.4f, -186.9f, -56.1f,
1101 -58.1, -183.3, -58.5, -182.5, -58.9, -181.6, -59.2, -180.8, -59.5, -179.9, -59.7, 1141 -186.2f, -56.7f, -185.5f, -57.2f, -184.0f, -58.1f, -183.3f, -58.5f, -182.5f, -58.9f,
1102 -179.1, -59.9, -178.2, -60, -174.7, -60.1, -168.5, -60.2, -162.4, -60.3, -156.2, 1142 -181.6f, -59.2f, -180.8f, -59.5f, -179.9f, -59.7f, -179.1f, -59.9f, -178.2f, -60.0f,
1103 -60.4, -149.2, -60.5, -143, -60.6, -136.9, -60.7, -130.7, -60.8, -123.7, -60.9, 1143 -174.7f, -60.1f, -168.5f, -60.2f, -162.4f, -60.3f, -156.2f, -60.4f, -149.2f, -60.5f,
1104 -117.5, -61, -110.5, -61.1, -94.4, -60.4, -94.4, -59.5, -94.4, -20.6, 1144 -143.0f, -60.6f, -136.9f, -60.7f, -130.7f, -60.8f, -123.7f, -60.9f, -117.5f, -61.0f,
1145 -110.5f, -61.1f, -94.4f, -60.4f, -94.4f, -59.5f, -94.4f, -20.6f,
1105}; 1146};
1106 1147
1107constexpr std::array<float, 41 * 2> left_joycon_slider_topview = { 1148constexpr std::array<float, 41 * 2> left_joycon_slider_topview = {
@@ -1288,14 +1329,15 @@ void PlayerControlPreview::DrawHandheldBody(QPainter& p, const QPointF center) {
1288void PlayerControlPreview::DrawDualBody(QPainter& p, const QPointF center) { 1329void PlayerControlPreview::DrawDualBody(QPainter& p, const QPointF center) {
1289 std::array<QPointF, left_joycon_body.size() / 2> left_joycon; 1330 std::array<QPointF, left_joycon_body.size() / 2> left_joycon;
1290 std::array<QPointF, left_joycon_body.size() / 2> right_joycon; 1331 std::array<QPointF, left_joycon_body.size() / 2> right_joycon;
1291 std::array<QPointF, left_joycon_sideview.size() / 2> qleft_joycon_sideview;
1292 std::array<QPointF, left_joycon_sideview.size() / 2> qright_joycon_sideview;
1293 std::array<QPointF, left_joycon_body_trigger.size() / 2> qleft_joycon_trigger;
1294 std::array<QPointF, left_joycon_body_trigger.size() / 2> qright_joycon_trigger;
1295 std::array<QPointF, left_joycon_slider.size() / 2> qleft_joycon_slider; 1332 std::array<QPointF, left_joycon_slider.size() / 2> qleft_joycon_slider;
1296 std::array<QPointF, left_joycon_slider.size() / 2> qright_joycon_slider; 1333 std::array<QPointF, left_joycon_slider.size() / 2> qright_joycon_slider;
1334 std::array<QPointF, left_joycon_slider_topview.size() / 2> qleft_joycon_slider_topview;
1335 std::array<QPointF, left_joycon_slider_topview.size() / 2> qright_joycon_slider_topview;
1336 std::array<QPointF, left_joycon_topview.size() / 2> qleft_joycon_topview;
1337 std::array<QPointF, left_joycon_topview.size() / 2> qright_joycon_topview;
1297 constexpr float size = 1.61f; 1338 constexpr float size = 1.61f;
1298 constexpr float offset = 209.3; 1339 constexpr float size2 = 0.9f;
1340 constexpr float offset = 209.3f;
1299 1341
1300 for (std::size_t point = 0; point < left_joycon_body.size() / 2; ++point) { 1342 for (std::size_t point = 0; point < left_joycon_body.size() / 2; ++point) {
1301 left_joycon[point] = center + QPointF(left_joycon_body[point * 2] * size + offset, 1343 left_joycon[point] = center + QPointF(left_joycon_body[point * 2] * size + offset,
@@ -1303,45 +1345,56 @@ void PlayerControlPreview::DrawDualBody(QPainter& p, const QPointF center) {
1303 right_joycon[point] = center + QPointF(-left_joycon_body[point * 2] * size - offset, 1345 right_joycon[point] = center + QPointF(-left_joycon_body[point * 2] * size - offset,
1304 left_joycon_body[point * 2 + 1] * size - 1); 1346 left_joycon_body[point * 2 + 1] * size - 1);
1305 } 1347 }
1306 for (std::size_t point = 0; point < left_joycon_sideview.size() / 2; ++point) {
1307 qleft_joycon_sideview[point] = center + QPointF(left_joycon_sideview[point * 2],
1308 left_joycon_sideview[point * 2 + 1] + 2);
1309 qright_joycon_sideview[point] = center + QPointF(-left_joycon_sideview[point * 2],
1310 left_joycon_sideview[point * 2 + 1] + 2);
1311 }
1312 for (std::size_t point = 0; point < left_joycon_slider.size() / 2; ++point) { 1348 for (std::size_t point = 0; point < left_joycon_slider.size() / 2; ++point) {
1313 qleft_joycon_slider[point] = 1349 qleft_joycon_slider[point] =
1314 center + QPointF(left_joycon_slider[point * 2], left_joycon_slider[point * 2 + 1]); 1350 center + QPointF(left_joycon_slider[point * 2], left_joycon_slider[point * 2 + 1]);
1315 qright_joycon_slider[point] = 1351 qright_joycon_slider[point] =
1316 center + QPointF(-left_joycon_slider[point * 2], left_joycon_slider[point * 2 + 1]); 1352 center + QPointF(-left_joycon_slider[point * 2], left_joycon_slider[point * 2 + 1]);
1317 } 1353 }
1318 for (std::size_t point = 0; point < left_joycon_body_trigger.size() / 2; ++point) { 1354 for (std::size_t point = 0; point < left_joycon_topview.size() / 2; ++point) {
1319 qleft_joycon_trigger[point] = center + QPointF(left_joycon_body_trigger[point * 2], 1355 qleft_joycon_topview[point] =
1320 left_joycon_body_trigger[point * 2 + 1] + 2); 1356 center + QPointF(left_joycon_topview[point * 2] * size2 - 52,
1321 qright_joycon_trigger[point] = 1357 left_joycon_topview[point * 2 + 1] * size2 - 52);
1322 center + QPointF(-left_joycon_body_trigger[point * 2], 1358 qright_joycon_topview[point] =
1323 left_joycon_body_trigger[point * 2 + 1] + 2); 1359 center + QPointF(-left_joycon_topview[point * 2] * size2 + 52,
1360 left_joycon_topview[point * 2 + 1] * size2 - 52);
1361 }
1362 for (std::size_t point = 0; point < left_joycon_slider_topview.size() / 2; ++point) {
1363 qleft_joycon_slider_topview[point] =
1364 center + QPointF(left_joycon_slider_topview[point * 2] * size2 - 52,
1365 left_joycon_slider_topview[point * 2 + 1] * size2 - 52);
1366 qright_joycon_slider_topview[point] =
1367 center + QPointF(-left_joycon_slider_topview[point * 2] * size2 + 52,
1368 left_joycon_slider_topview[point * 2 + 1] * size2 - 52);
1324 } 1369 }
1325 1370
1326 // right joycon body 1371 // right joycon body
1327 p.setPen(colors.outline); 1372 p.setPen(colors.outline);
1328 p.setBrush(colors.right); 1373 p.setBrush(colors.right);
1329 DrawPolygon(p, right_joycon); 1374 DrawPolygon(p, right_joycon);
1330 DrawPolygon(p, qright_joycon_trigger);
1331 1375
1332 // Left joycon body 1376 // Left joycon body
1333 p.setPen(colors.outline); 1377 p.setPen(colors.outline);
1334 p.setBrush(colors.left); 1378 p.setBrush(colors.left);
1335 DrawPolygon(p, left_joycon); 1379 DrawPolygon(p, left_joycon);
1336 DrawPolygon(p, qleft_joycon_trigger);
1337 1380
1338 // Right Slider release button 1381 // Slider release button top view
1339 p.setBrush(colors.button); 1382 p.setBrush(colors.button);
1340 DrawRoundRectangle(p, center + QPoint(145, -100), 12, 12, 2); 1383 DrawRoundRectangle(p, center + QPoint(-149, -108), 12, 11, 2);
1384 DrawRoundRectangle(p, center + QPoint(149, -108), 12, 11, 2);
1341 1385
1342 // Left Slider release button 1386 // Joycon slider top view
1343 p.setBrush(colors.button); 1387 p.setBrush(colors.slider);
1344 DrawRoundRectangle(p, center + QPoint(-145, -100), 12, 12, 2); 1388 DrawPolygon(p, qleft_joycon_slider_topview);
1389 p.drawLine(center + QPointF(-133.8f, -99.0f), center + QPointF(-133.8f, -78.5f));
1390 DrawPolygon(p, qright_joycon_slider_topview);
1391 p.drawLine(center + QPointF(133.8f, -99.0f), center + QPointF(133.8f, -78.5f));
1392
1393 // Joycon body top view
1394 p.setBrush(colors.left);
1395 DrawPolygon(p, qleft_joycon_topview);
1396 p.setBrush(colors.right);
1397 DrawPolygon(p, qright_joycon_topview);
1345 1398
1346 // Right SR and SL sideview buttons 1399 // Right SR and SL sideview buttons
1347 p.setPen(colors.outline); 1400 p.setPen(colors.outline);
@@ -1354,81 +1407,12 @@ void PlayerControlPreview::DrawDualBody(QPainter& p, const QPointF center) {
1354 DrawRoundRectangle(p, center + QPoint(-19, -62), 7, 22, 1); 1407 DrawRoundRectangle(p, center + QPoint(-19, -62), 7, 22, 1);
1355 1408
1356 // Right Sideview body 1409 // Right Sideview body
1357 p.setBrush(colors.right);
1358 DrawPolygon(p, qright_joycon_sideview);
1359 p.setBrush(colors.slider); 1410 p.setBrush(colors.slider);
1360 DrawPolygon(p, qright_joycon_slider); 1411 DrawPolygon(p, qright_joycon_slider);
1361 1412
1362 // Left Sideview body 1413 // Left Sideview body
1363 p.setBrush(colors.left);
1364 DrawPolygon(p, qleft_joycon_sideview);
1365 p.setBrush(colors.slider); 1414 p.setBrush(colors.slider);
1366 DrawPolygon(p, qleft_joycon_slider); 1415 DrawPolygon(p, qleft_joycon_slider);
1367
1368 const QPointF right_sideview_center = QPointF(162.5f, 0) + center;
1369 const QPointF left_sideview_center = QPointF(-162.5f, 0) + center;
1370
1371 // right sideview slider body
1372 p.setBrush(colors.slider);
1373 DrawRoundRectangle(p, right_sideview_center + QPointF(0, -6), 26, 227, 3);
1374 p.setBrush(colors.button2);
1375 DrawRoundRectangle(p, right_sideview_center + QPointF(0, 85), 20.2f, 40.2f, 3);
1376
1377 // left sideview slider body
1378 p.setBrush(colors.slider);
1379 DrawRoundRectangle(p, left_sideview_center + QPointF(0, -6), 26, 227, 3);
1380 p.setBrush(colors.button2);
1381 DrawRoundRectangle(p, left_sideview_center + QPointF(0, 85), 20.2f, 40.2f, 3);
1382
1383 // Right Slider decorations
1384 p.setPen(colors.outline);
1385 p.setBrush(colors.slider_arrow);
1386 DrawArrow(p, right_sideview_center + QPoint(0, 73), Direction::Down, 2.1f);
1387 DrawArrow(p, right_sideview_center + QPoint(0, 85), Direction::Down, 2.1f);
1388 DrawArrow(p, right_sideview_center + QPoint(0, 97), Direction::Down, 2.1f);
1389 DrawCircle(p, right_sideview_center + QPointF(0, 17), 3.8f);
1390
1391 // Left Slider decorations
1392 DrawArrow(p, left_sideview_center + QPoint(0, 73), Direction::Down, 2.1f);
1393 DrawArrow(p, left_sideview_center + QPoint(0, 85), Direction::Down, 2.1f);
1394 DrawArrow(p, left_sideview_center + QPoint(0, 97), Direction::Down, 2.1f);
1395 DrawCircle(p, left_sideview_center + QPointF(0, 17), 3.8f);
1396
1397 // Right SR and SL buttons
1398 p.setPen(colors.outline);
1399 p.setBrush(colors.slider_button);
1400 DrawRoundRectangle(p, right_sideview_center + QPoint(0, 47), 10, 22, 3.6f);
1401 DrawRoundRectangle(p, right_sideview_center + QPoint(0, -62), 10, 22, 3.6f);
1402
1403 // Left SR and SL buttons
1404 DrawRoundRectangle(p, left_sideview_center + QPoint(0, 47), 10, 22, 3.6f);
1405 DrawRoundRectangle(p, left_sideview_center + QPoint(0, -62), 10, 22, 3.6f);
1406
1407 // Right SR and SL text
1408 SetTextFont(p, 5.5f);
1409 p.setPen(colors.outline);
1410 p.rotate(-90);
1411 p.drawText(QPointF(-center.y() - 5, center.x() + 3) + QPointF(-47, 162.5f), tr("SL"));
1412 p.drawText(QPointF(-center.y() - 5, center.x() + 3) + QPointF(62, 162.5f), tr("SR"));
1413 p.rotate(90);
1414
1415 // Left SR and SL text
1416 p.rotate(90);
1417 p.drawText(QPointF(center.y() - 5, -center.x() + 3) + QPointF(47, 162.5f), tr("SR"));
1418 p.drawText(QPointF(center.y() - 5, -center.x() + 3) + QPointF(-62, 162.5f), tr("SL"));
1419 p.rotate(-90);
1420
1421 // LED indicators
1422 const float led_size = 5.0f;
1423 const QPointF left_led_position = left_sideview_center + QPointF(0, -33);
1424 const QPointF right_led_position = right_sideview_center + QPointF(0, -33);
1425 int led_count = 0;
1426 for (const auto color : led_color) {
1427 p.setBrush(color);
1428 DrawRectangle(p, left_led_position + QPointF(0, 11 * led_count), led_size, led_size);
1429 DrawRectangle(p, right_led_position + QPointF(0, 11 * led_count), led_size, led_size);
1430 led_count++;
1431 }
1432} 1416}
1433 1417
1434void PlayerControlPreview::DrawLeftBody(QPainter& p, const QPointF center) { 1418void PlayerControlPreview::DrawLeftBody(QPainter& p, const QPointF center) {
@@ -1707,18 +1691,62 @@ void PlayerControlPreview::DrawDualTriggers(QPainter& p, const QPointF center, b
1707 DrawPolygon(p, qright_trigger); 1691 DrawPolygon(p, qright_trigger);
1708} 1692}
1709 1693
1710void PlayerControlPreview::DrawDualZTriggers(QPainter& p, const QPointF center, bool left_pressed, 1694void PlayerControlPreview::DrawDualTriggersTopView(QPainter& p, const QPointF center,
1711 bool right_pressed) { 1695 bool left_pressed, bool right_pressed) {
1712 std::array<QPointF, left_joycon_sideview_zl.size() / 2> qleft_trigger; 1696 std::array<QPointF, left_joystick_L_topview.size() / 2> qleft_trigger;
1713 std::array<QPointF, left_joycon_sideview_zl.size() / 2> qright_trigger; 1697 std::array<QPointF, left_joystick_L_topview.size() / 2> qright_trigger;
1698 constexpr float size = 0.9f;
1714 1699
1715 for (std::size_t point = 0; point < left_joycon_sideview_zl.size() / 2; ++point) { 1700 for (std::size_t point = 0; point < left_joystick_L_topview.size() / 2; ++point) {
1701 qleft_trigger[point] = center + QPointF(left_joystick_L_topview[point * 2] * size - 50,
1702 left_joystick_L_topview[point * 2 + 1] * size - 52);
1703 }
1704 for (std::size_t point = 0; point < left_joystick_L_topview.size() / 2; ++point) {
1705 qright_trigger[point] =
1706 center + QPointF(-left_joystick_L_topview[point * 2] * size + 50,
1707 left_joystick_L_topview[point * 2 + 1] * size - 52);
1708 }
1709
1710 p.setPen(colors.outline);
1711 p.setBrush(left_pressed ? colors.highlight : colors.button);
1712 DrawPolygon(p, qleft_trigger);
1713 p.setBrush(right_pressed ? colors.highlight : colors.button);
1714 DrawPolygon(p, qright_trigger);
1715
1716 // Draw ZL text
1717 p.setPen(colors.transparent);
1718 p.setBrush(colors.font2);
1719 DrawSymbol(p, center + QPointF(-183, -84), Symbol::ZL, 1.0f);
1720
1721 // Delete Z character
1722 p.setBrush(left_pressed ? colors.highlight : colors.button);
1723 DrawRectangle(p, center + QPointF(-186, -84), 6, 10);
1724
1725 // Draw ZR text
1726 p.setPen(colors.transparent);
1727 p.setBrush(colors.font2);
1728 DrawSymbol(p, center + QPointF(177, -84), Symbol::ZR, 1.0f);
1729
1730 // Delete Z character
1731 p.setBrush(right_pressed ? colors.highlight : colors.button);
1732 DrawRectangle(p, center + QPointF(174, -84), 6, 10);
1733}
1734
1735void PlayerControlPreview::DrawDualZTriggersTopView(QPainter& p, const QPointF center,
1736 bool left_pressed, bool right_pressed) {
1737 std::array<QPointF, left_joystick_ZL_topview.size() / 2> qleft_trigger;
1738 std::array<QPointF, left_joystick_ZL_topview.size() / 2> qright_trigger;
1739 constexpr float size = 0.9f;
1740
1741 for (std::size_t point = 0; point < left_joystick_ZL_topview.size() / 2; ++point) {
1716 qleft_trigger[point] = 1742 qleft_trigger[point] =
1717 center + QPointF(left_joycon_sideview_zl[point * 2], 1743 center + QPointF(left_joystick_ZL_topview[point * 2] * size - 52,
1718 left_joycon_sideview_zl[point * 2 + 1] + (left_pressed ? 2.5f : 2.0f)); 1744 left_joystick_ZL_topview[point * 2 + 1] * size - 52);
1719 qright_trigger[point] = center + QPointF(-left_joycon_sideview_zl[point * 2], 1745 }
1720 left_joycon_sideview_zl[point * 2 + 1] + 1746 for (std::size_t point = 0; point < left_joystick_ZL_topview.size() / 2; ++point) {
1721 (right_pressed ? 2.5f : 2.0f)); 1747 qright_trigger[point] =
1748 center + QPointF(-left_joystick_ZL_topview[point * 2] * size + 52,
1749 left_joystick_ZL_topview[point * 2 + 1] * size - 52);
1722 } 1750 }
1723 1751
1724 p.setPen(colors.outline); 1752 p.setPen(colors.outline);
@@ -1726,10 +1754,16 @@ void PlayerControlPreview::DrawDualZTriggers(QPainter& p, const QPointF center,
1726 DrawPolygon(p, qleft_trigger); 1754 DrawPolygon(p, qleft_trigger);
1727 p.setBrush(right_pressed ? colors.highlight : colors.button); 1755 p.setBrush(right_pressed ? colors.highlight : colors.button);
1728 DrawPolygon(p, qright_trigger); 1756 DrawPolygon(p, qright_trigger);
1729 p.drawArc(center.x() - 159, center.y() - 183 + (left_pressed ? 0.5f : 0), 70, 70, 225 * 16, 1757
1730 44 * 16); 1758 // Draw ZL text
1731 p.drawArc(center.x() + 90, center.y() - 183 + (right_pressed ? 0.5f : 0), 70, 70, 271 * 16, 1759 p.setPen(colors.transparent);
1732 44 * 16); 1760 p.setBrush(colors.font2);
1761 DrawSymbol(p, center + QPointF(-180, -113), Symbol::ZL, 1.0f);
1762
1763 // Draw ZR text
1764 p.setPen(colors.transparent);
1765 p.setBrush(colors.font2);
1766 DrawSymbol(p, center + QPointF(180, -113), Symbol::ZR, 1.0f);
1733} 1767}
1734 1768
1735void PlayerControlPreview::DrawLeftTriggers(QPainter& p, const QPointF center, bool left_pressed) { 1769void PlayerControlPreview::DrawLeftTriggers(QPainter& p, const QPointF center, bool left_pressed) {
@@ -1909,7 +1943,7 @@ void PlayerControlPreview::DrawJoystick(QPainter& p, const QPointF center, float
1909void PlayerControlPreview::DrawJoystickSideview(QPainter& p, const QPointF center, float angle, 1943void PlayerControlPreview::DrawJoystickSideview(QPainter& p, const QPointF center, float angle,
1910 float size, bool pressed) { 1944 float size, bool pressed) {
1911 QVector<QPointF> joystick; 1945 QVector<QPointF> joystick;
1912 joystick.reserve(left_joystick_sideview.size() / 2); 1946 joystick.reserve(static_cast<int>(left_joystick_sideview.size() / 2));
1913 1947
1914 for (std::size_t point = 0; point < left_joystick_sideview.size() / 2; ++point) { 1948 for (std::size_t point = 0; point < left_joystick_sideview.size() / 2; ++point) {
1915 joystick.append(QPointF(left_joystick_sideview[point * 2] * size + (pressed ? 1 : 0), 1949 joystick.append(QPointF(left_joystick_sideview[point * 2] * size + (pressed ? 1 : 0),
@@ -2136,7 +2170,9 @@ void PlayerControlPreview::DrawSymbol(QPainter& p, const QPointF center, Symbol
2136 std::array<QPointF, symbol_x.size() / 2> x_icon; 2170 std::array<QPointF, symbol_x.size() / 2> x_icon;
2137 std::array<QPointF, symbol_y.size() / 2> y_icon; 2171 std::array<QPointF, symbol_y.size() / 2> y_icon;
2138 std::array<QPointF, symbol_zl.size() / 2> zl_icon; 2172 std::array<QPointF, symbol_zl.size() / 2> zl_icon;
2173 std::array<QPointF, symbol_sl.size() / 2> sl_icon;
2139 std::array<QPointF, symbol_zr.size() / 2> zr_icon; 2174 std::array<QPointF, symbol_zr.size() / 2> zr_icon;
2175 std::array<QPointF, symbol_sr.size() / 2> sr_icon;
2140 switch (symbol) { 2176 switch (symbol) {
2141 case Symbol::House: 2177 case Symbol::House:
2142 for (std::size_t point = 0; point < house.size() / 2; ++point) { 2178 for (std::size_t point = 0; point < house.size() / 2; ++point) {
@@ -2180,6 +2216,13 @@ void PlayerControlPreview::DrawSymbol(QPainter& p, const QPointF center, Symbol
2180 } 2216 }
2181 p.drawPolygon(zl_icon.data(), static_cast<int>(zl_icon.size())); 2217 p.drawPolygon(zl_icon.data(), static_cast<int>(zl_icon.size()));
2182 break; 2218 break;
2219 case Symbol::SL:
2220 for (std::size_t point = 0; point < symbol_sl.size() / 2; ++point) {
2221 sl_icon[point] = center + QPointF(symbol_sl[point * 2] * icon_size,
2222 symbol_sl[point * 2 + 1] * icon_size);
2223 }
2224 p.drawPolygon(sl_icon.data(), static_cast<int>(sl_icon.size()));
2225 break;
2183 case Symbol::ZR: 2226 case Symbol::ZR:
2184 for (std::size_t point = 0; point < symbol_zr.size() / 2; ++point) { 2227 for (std::size_t point = 0; point < symbol_zr.size() / 2; ++point) {
2185 zr_icon[point] = center + QPointF(symbol_zr[point * 2] * icon_size, 2228 zr_icon[point] = center + QPointF(symbol_zr[point * 2] * icon_size,
@@ -2187,6 +2230,13 @@ void PlayerControlPreview::DrawSymbol(QPainter& p, const QPointF center, Symbol
2187 } 2230 }
2188 p.drawPolygon(zr_icon.data(), static_cast<int>(zr_icon.size())); 2231 p.drawPolygon(zr_icon.data(), static_cast<int>(zr_icon.size()));
2189 break; 2232 break;
2233 case Symbol::SR:
2234 for (std::size_t point = 0; point < symbol_sr.size() / 2; ++point) {
2235 sr_icon[point] = center + QPointF(symbol_sr[point * 2] * icon_size,
2236 symbol_sr[point * 2 + 1] * icon_size);
2237 }
2238 p.drawPolygon(sr_icon.data(), static_cast<int>(sr_icon.size()));
2239 break;
2190 } 2240 }
2191} 2241}
2192 2242
diff --git a/src/yuzu/configuration/configure_input_player_widget.h b/src/yuzu/configuration/configure_input_player_widget.h
index ba5e49da3..7d0653faa 100644
--- a/src/yuzu/configuration/configure_input_player_widget.h
+++ b/src/yuzu/configuration/configure_input_player_widget.h
@@ -51,8 +51,10 @@ private:
51 B, 51 B,
52 X, 52 X,
53 Y, 53 Y,
54 SL,
54 ZL, 55 ZL,
55 ZR, 56 ZR,
57 SR,
56 }; 58 };
57 59
58 struct AxisValue { 60 struct AxisValue {
@@ -113,7 +115,10 @@ private:
113 void DrawProTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); 115 void DrawProTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed);
114 void DrawHandheldTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); 116 void DrawHandheldTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed);
115 void DrawDualTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); 117 void DrawDualTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed);
116 void DrawDualZTriggers(QPainter& p, QPointF center, bool left_pressed, bool right_pressed); 118 void DrawDualTriggersTopView(QPainter& p, QPointF center, bool left_pressed,
119 bool right_pressed);
120 void DrawDualZTriggersTopView(QPainter& p, QPointF center, bool left_pressed,
121 bool right_pressed);
117 void DrawLeftTriggers(QPainter& p, QPointF center, bool left_pressed); 122 void DrawLeftTriggers(QPainter& p, QPointF center, bool left_pressed);
118 void DrawLeftZTriggers(QPainter& p, QPointF center, bool left_pressed); 123 void DrawLeftZTriggers(QPainter& p, QPointF center, bool left_pressed);
119 void DrawLeftTriggersTopView(QPainter& p, QPointF center, bool left_pressed); 124 void DrawLeftTriggersTopView(QPainter& p, QPointF center, bool left_pressed);