hid_core.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. // Copyright 2021 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "common/assert.h"
  5. #include "core/hid/hid_core.h"
  6. namespace Core::HID {
  7. HIDCore::HIDCore()
  8. : player_1{std::make_unique<EmulatedController>(NpadIdType::Player1)},
  9. player_2{std::make_unique<EmulatedController>(NpadIdType::Player2)},
  10. player_3{std::make_unique<EmulatedController>(NpadIdType::Player3)},
  11. player_4{std::make_unique<EmulatedController>(NpadIdType::Player4)},
  12. player_5{std::make_unique<EmulatedController>(NpadIdType::Player5)},
  13. player_6{std::make_unique<EmulatedController>(NpadIdType::Player6)},
  14. player_7{std::make_unique<EmulatedController>(NpadIdType::Player7)},
  15. player_8{std::make_unique<EmulatedController>(NpadIdType::Player8)},
  16. other{std::make_unique<EmulatedController>(NpadIdType::Other)},
  17. handheld{std::make_unique<EmulatedController>(NpadIdType::Handheld)},
  18. console{std::make_unique<EmulatedConsole>()}, devices{std::make_unique<EmulatedDevices>()} {}
  19. HIDCore::~HIDCore() = default;
  20. EmulatedController* HIDCore::GetEmulatedController(NpadIdType npad_id_type) {
  21. switch (npad_id_type) {
  22. case NpadIdType::Player1:
  23. return player_1.get();
  24. case NpadIdType::Player2:
  25. return player_2.get();
  26. case NpadIdType::Player3:
  27. return player_3.get();
  28. case NpadIdType::Player4:
  29. return player_4.get();
  30. case NpadIdType::Player5:
  31. return player_5.get();
  32. case NpadIdType::Player6:
  33. return player_6.get();
  34. case NpadIdType::Player7:
  35. return player_7.get();
  36. case NpadIdType::Player8:
  37. return player_8.get();
  38. case NpadIdType::Other:
  39. return other.get();
  40. case NpadIdType::Handheld:
  41. return handheld.get();
  42. case NpadIdType::Invalid:
  43. default:
  44. UNREACHABLE_MSG("Invalid NpadIdType={}", npad_id_type);
  45. return nullptr;
  46. }
  47. }
  48. const EmulatedController* HIDCore::GetEmulatedController(NpadIdType npad_id_type) const {
  49. switch (npad_id_type) {
  50. case NpadIdType::Player1:
  51. return player_1.get();
  52. case NpadIdType::Player2:
  53. return player_2.get();
  54. case NpadIdType::Player3:
  55. return player_3.get();
  56. case NpadIdType::Player4:
  57. return player_4.get();
  58. case NpadIdType::Player5:
  59. return player_5.get();
  60. case NpadIdType::Player6:
  61. return player_6.get();
  62. case NpadIdType::Player7:
  63. return player_7.get();
  64. case NpadIdType::Player8:
  65. return player_8.get();
  66. case NpadIdType::Other:
  67. return other.get();
  68. case NpadIdType::Handheld:
  69. return handheld.get();
  70. case NpadIdType::Invalid:
  71. default:
  72. UNREACHABLE_MSG("Invalid NpadIdType={}", npad_id_type);
  73. return nullptr;
  74. }
  75. }
  76. EmulatedConsole* HIDCore::GetEmulatedConsole() {
  77. return console.get();
  78. }
  79. const EmulatedConsole* HIDCore::GetEmulatedConsole() const {
  80. return console.get();
  81. }
  82. EmulatedDevices* HIDCore::GetEmulatedDevices() {
  83. return devices.get();
  84. }
  85. const EmulatedDevices* HIDCore::GetEmulatedDevices() const {
  86. return devices.get();
  87. }
  88. EmulatedController* HIDCore::GetEmulatedControllerByIndex(std::size_t index) {
  89. return GetEmulatedController(IndexToNpadIdType(index));
  90. }
  91. const EmulatedController* HIDCore::GetEmulatedControllerByIndex(std::size_t index) const {
  92. return GetEmulatedController(IndexToNpadIdType(index));
  93. }
  94. void HIDCore::SetSupportedStyleTag(NpadStyleTag style_tag) {
  95. supported_style_tag.raw = style_tag.raw;
  96. }
  97. NpadStyleTag HIDCore::GetSupportedStyleTag() const {
  98. return supported_style_tag;
  99. }
  100. void HIDCore::ReloadInputDevices() {
  101. player_1->ReloadFromSettings();
  102. player_2->ReloadFromSettings();
  103. player_3->ReloadFromSettings();
  104. player_4->ReloadFromSettings();
  105. player_5->ReloadFromSettings();
  106. player_6->ReloadFromSettings();
  107. player_7->ReloadFromSettings();
  108. player_8->ReloadFromSettings();
  109. other->ReloadFromSettings();
  110. handheld->ReloadFromSettings();
  111. console->ReloadFromSettings();
  112. devices->ReloadFromSettings();
  113. }
  114. void HIDCore::UnloadInputDevices() {
  115. player_1->UnloadInput();
  116. player_2->UnloadInput();
  117. player_3->UnloadInput();
  118. player_4->UnloadInput();
  119. player_5->UnloadInput();
  120. player_6->UnloadInput();
  121. player_7->UnloadInput();
  122. player_8->UnloadInput();
  123. other->UnloadInput();
  124. handheld->UnloadInput();
  125. console->UnloadInput();
  126. devices->UnloadInput();
  127. }
  128. } // namespace Core::HID