hid_core.h 2.5 KB

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