controller.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <functional>
  5. #include <vector>
  6. #include "common/common_types.h"
  7. #include "core/frontend/applets/applet.h"
  8. namespace Core::HID {
  9. class HIDCore;
  10. }
  11. namespace Core::Frontend {
  12. using BorderColor = std::array<u8, 4>;
  13. using ExplainText = std::array<char, 0x81>;
  14. struct ControllerParameters {
  15. s8 min_players{};
  16. s8 max_players{};
  17. bool keep_controllers_connected{};
  18. bool enable_single_mode{};
  19. bool enable_border_color{};
  20. std::vector<BorderColor> border_colors{};
  21. bool enable_explain_text{};
  22. std::vector<ExplainText> explain_text{};
  23. bool allow_pro_controller{};
  24. bool allow_handheld{};
  25. bool allow_dual_joycons{};
  26. bool allow_left_joycon{};
  27. bool allow_right_joycon{};
  28. bool allow_gamecube_controller{};
  29. };
  30. class ControllerApplet : public Applet {
  31. public:
  32. using ReconfigureCallback = std::function<void(bool)>;
  33. virtual ~ControllerApplet();
  34. virtual void ReconfigureControllers(ReconfigureCallback callback,
  35. const ControllerParameters& parameters) const = 0;
  36. };
  37. class DefaultControllerApplet final : public ControllerApplet {
  38. public:
  39. explicit DefaultControllerApplet(HID::HIDCore& hid_core_);
  40. ~DefaultControllerApplet() override;
  41. void Close() const override;
  42. void ReconfigureControllers(ReconfigureCallback callback,
  43. const ControllerParameters& parameters) const override;
  44. private:
  45. HID::HIDCore& hid_core;
  46. };
  47. } // namespace Core::Frontend