hid_core.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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/emulated_console.h"
  7. #include "core/hid/emulated_controller.h"
  8. #include "core/hid/emulated_devices.h"
  9. namespace Core::HID {
  10. class HIDCore {
  11. public:
  12. explicit HIDCore();
  13. ~HIDCore();
  14. YUZU_NON_COPYABLE(HIDCore);
  15. YUZU_NON_MOVEABLE(HIDCore);
  16. EmulatedController* GetEmulatedController(NpadIdType npad_id_type);
  17. const EmulatedController* GetEmulatedController(NpadIdType npad_id_type) const;
  18. EmulatedController* GetEmulatedControllerByIndex(std::size_t index);
  19. const EmulatedController* GetEmulatedControllerByIndex(std::size_t index) const;
  20. EmulatedConsole* GetEmulatedConsole();
  21. const EmulatedConsole* GetEmulatedConsole() const;
  22. EmulatedDevices* GetEmulatedDevices();
  23. const EmulatedDevices* GetEmulatedDevices() const;
  24. void SetSupportedStyleTag(NpadStyleTag style_tag);
  25. NpadStyleTag GetSupportedStyleTag() const;
  26. /// Counts the connected players from P1-P8
  27. s8 GetPlayerCount() const;
  28. /// Returns the first connected npad id
  29. NpadIdType GetFirstNpadId() const;
  30. /// Reloads all input devices from settings
  31. void ReloadInputDevices();
  32. /// Removes all callbacks from input common
  33. void UnloadInputDevices();
  34. private:
  35. std::unique_ptr<EmulatedController> player_1;
  36. std::unique_ptr<EmulatedController> player_2;
  37. std::unique_ptr<EmulatedController> player_3;
  38. std::unique_ptr<EmulatedController> player_4;
  39. std::unique_ptr<EmulatedController> player_5;
  40. std::unique_ptr<EmulatedController> player_6;
  41. std::unique_ptr<EmulatedController> player_7;
  42. std::unique_ptr<EmulatedController> player_8;
  43. std::unique_ptr<EmulatedController> other;
  44. std::unique_ptr<EmulatedController> handheld;
  45. std::unique_ptr<EmulatedConsole> console;
  46. std::unique_ptr<EmulatedDevices> devices;
  47. NpadStyleTag supported_style_tag;
  48. };
  49. } // namespace Core::HID