controller.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. namespace Core::HID {
  8. class HIDCore;
  9. }
  10. namespace Core::Frontend {
  11. using BorderColor = std::array<u8, 4>;
  12. using ExplainText = std::array<char, 0x81>;
  13. struct ControllerParameters {
  14. s8 min_players{};
  15. s8 max_players{};
  16. bool keep_controllers_connected{};
  17. bool enable_single_mode{};
  18. bool enable_border_color{};
  19. std::vector<BorderColor> border_colors{};
  20. bool enable_explain_text{};
  21. std::vector<ExplainText> explain_text{};
  22. bool allow_pro_controller{};
  23. bool allow_handheld{};
  24. bool allow_dual_joycons{};
  25. bool allow_left_joycon{};
  26. bool allow_right_joycon{};
  27. bool allow_gamecube_controller{};
  28. };
  29. class ControllerApplet {
  30. public:
  31. virtual ~ControllerApplet();
  32. virtual void ReconfigureControllers(std::function<void()> callback,
  33. const ControllerParameters& parameters) const = 0;
  34. };
  35. class DefaultControllerApplet final : public ControllerApplet {
  36. public:
  37. explicit DefaultControllerApplet(HID::HIDCore& hid_core_);
  38. ~DefaultControllerApplet() override;
  39. void ReconfigureControllers(std::function<void()> callback,
  40. const ControllerParameters& parameters) const override;
  41. private:
  42. HID::HIDCore& hid_core;
  43. };
  44. } // namespace Core::Frontend