diff options
| author | 2021-02-02 21:39:47 -0600 | |
|---|---|---|
| committer | 2021-02-06 09:43:42 -0600 | |
| commit | c9597af39ded9430cc94c37959fb8154abea8686 (patch) | |
| tree | c3ba0877b806e5916d2ffd36736e66d382891815 | |
| parent | Add controller window and single joycon top view (diff) | |
| download | yuzu-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-x | src/input_common/analog_from_button.cpp | 4 | ||||
| -rw-r--r-- | src/input_common/mouse/mouse_poller.cpp | 10 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player_widget.cpp | 404 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player_widget.h | 7 |
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 | |||
| 109 | private: | 119 | private: |
| 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 | ||
| 813 | constexpr std::array<float, 110 * 2> symbol_zr = { | 807 | constexpr 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 | }; | ||
| 821 | constexpr 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 | |||
| 844 | constexpr 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 | ||
| 837 | constexpr std::array<float, 12 * 2> house = { | 877 | constexpr std::array<float, 12 * 2> house = { |
| @@ -1093,15 +1133,16 @@ constexpr std::array<float, 40 * 2> left_joycon_body_trigger = { | |||
| 1093 | }; | 1133 | }; |
| 1094 | 1134 | ||
| 1095 | constexpr std::array<float, 49 * 2> left_joycon_topview = { | 1135 | constexpr 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 | ||
| 1107 | constexpr std::array<float, 41 * 2> left_joycon_slider_topview = { | 1148 | constexpr std::array<float, 41 * 2> left_joycon_slider_topview = { |
| @@ -1288,14 +1329,15 @@ void PlayerControlPreview::DrawHandheldBody(QPainter& p, const QPointF center) { | |||
| 1288 | void PlayerControlPreview::DrawDualBody(QPainter& p, const QPointF center) { | 1329 | void 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 | ||
| 1434 | void PlayerControlPreview::DrawLeftBody(QPainter& p, const QPointF center) { | 1418 | void 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 | ||
| 1710 | void PlayerControlPreview::DrawDualZTriggers(QPainter& p, const QPointF center, bool left_pressed, | 1694 | void 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 | |||
| 1735 | void 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 | ||
| 1735 | void PlayerControlPreview::DrawLeftTriggers(QPainter& p, const QPointF center, bool left_pressed) { | 1769 | void PlayerControlPreview::DrawLeftTriggers(QPainter& p, const QPointF center, bool left_pressed) { |
| @@ -1909,7 +1943,7 @@ void PlayerControlPreview::DrawJoystick(QPainter& p, const QPointF center, float | |||
| 1909 | void PlayerControlPreview::DrawJoystickSideview(QPainter& p, const QPointF center, float angle, | 1943 | void 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); |