hid_core.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright 2021 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include "core/hid/hid_types.h"
  7. namespace Core::HID {
  8. class EmulatedConsole;
  9. class EmulatedController;
  10. class EmulatedDevices;
  11. } // namespace Core::HID
  12. namespace Core::HID {
  13. class HIDCore {
  14. public:
  15. explicit HIDCore();
  16. ~HIDCore();
  17. YUZU_NON_COPYABLE(HIDCore);
  18. YUZU_NON_MOVEABLE(HIDCore);
  19. EmulatedController* GetEmulatedController(NpadIdType npad_id_type);
  20. const EmulatedController* GetEmulatedController(NpadIdType npad_id_type) const;
  21. EmulatedController* GetEmulatedControllerByIndex(std::size_t index);
  22. const EmulatedController* GetEmulatedControllerByIndex(std::size_t index) const;
  23. EmulatedConsole* GetEmulatedConsole();
  24. const EmulatedConsole* GetEmulatedConsole() const;
  25. EmulatedDevices* GetEmulatedDevices();
  26. const EmulatedDevices* GetEmulatedDevices() const;
  27. void SetSupportedStyleTag(NpadStyleTag style_tag);
  28. NpadStyleTag GetSupportedStyleTag() const;
  29. /// Counts the connected players from P1-P8
  30. s8 GetPlayerCount() const;
  31. /// Returns the first connected npad id
  32. NpadIdType GetFirstNpadId() const;
  33. /// Returns the first disconnected npad id
  34. NpadIdType GetFirstDisconnectedNpadId() const;
  35. /// Sets all emulated controllers into configuring mode.
  36. void EnableAllControllerConfiguration();
  37. /// Sets all emulated controllers into normal mode.
  38. void DisableAllControllerConfiguration();
  39. /// Reloads all input devices from settings
  40. void ReloadInputDevices();
  41. /// Removes all callbacks from input common
  42. void UnloadInputDevices();
  43. /// Number of emulated controllers
  44. static constexpr std::size_t available_controllers{10};
  45. private:
  46. std::unique_ptr<EmulatedController> player_1;
  47. std::unique_ptr<EmulatedController> player_2;
  48. std::unique_ptr<EmulatedController> player_3;
  49. std::unique_ptr<EmulatedController> player_4;
  50. std::unique_ptr<EmulatedController> player_5;
  51. std::unique_ptr<EmulatedController> player_6;
  52. std::unique_ptr<EmulatedController> player_7;
  53. std::unique_ptr<EmulatedController> player_8;
  54. std::unique_ptr<EmulatedController> other;
  55. std::unique_ptr<EmulatedController> handheld;
  56. std::unique_ptr<EmulatedConsole> console;
  57. std::unique_ptr<EmulatedDevices> devices;
  58. NpadStyleTag supported_style_tag{NpadStyleSet::All};
  59. };
  60. } // namespace Core::HID