controller.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. using ReconfigureCallback = std::function<void()>;
  32. virtual ~ControllerApplet();
  33. virtual void ReconfigureControllers(ReconfigureCallback callback,
  34. const ControllerParameters& parameters) const = 0;
  35. };
  36. class DefaultControllerApplet final : public ControllerApplet {
  37. public:
  38. explicit DefaultControllerApplet(HID::HIDCore& hid_core_);
  39. ~DefaultControllerApplet() override;
  40. void ReconfigureControllers(ReconfigureCallback callback,
  41. const ControllerParameters& parameters) const override;
  42. private:
  43. HID::HIDCore& hid_core;
  44. };
  45. } // namespace Core::Frontend