2021-11-02 08:02:57 +04:00
|
|
|
// Copyright 2021 yuzu Emulator Project
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
#include "core/hid/hid_types.h"
|
|
|
|
|
|
|
|
namespace Core::HID {
|
|
|
|
class EmulatedConsole;
|
|
|
|
class EmulatedController;
|
|
|
|
class EmulatedDevices;
|
|
|
|
} // namespace Core::HID
|
|
|
|
|
|
|
|
namespace Core::HID {
|
|
|
|
|
|
|
|
class HIDCore {
|
|
|
|
public:
|
|
|
|
explicit HIDCore();
|
|
|
|
~HIDCore();
|
|
|
|
|
|
|
|
YUZU_NON_COPYABLE(HIDCore);
|
|
|
|
YUZU_NON_MOVEABLE(HIDCore);
|
|
|
|
|
|
|
|
EmulatedController* GetEmulatedController(NpadIdType npad_id_type);
|
|
|
|
const EmulatedController* GetEmulatedController(NpadIdType npad_id_type) const;
|
|
|
|
|
|
|
|
EmulatedController* GetEmulatedControllerByIndex(std::size_t index);
|
|
|
|
const EmulatedController* GetEmulatedControllerByIndex(std::size_t index) const;
|
|
|
|
|
|
|
|
EmulatedConsole* GetEmulatedConsole();
|
|
|
|
const EmulatedConsole* GetEmulatedConsole() const;
|
|
|
|
|
|
|
|
EmulatedDevices* GetEmulatedDevices();
|
|
|
|
const EmulatedDevices* GetEmulatedDevices() const;
|
|
|
|
|
|
|
|
void SetSupportedStyleTag(NpadStyleTag style_tag);
|
|
|
|
NpadStyleTag GetSupportedStyleTag() const;
|
|
|
|
|
|
|
|
/// Counts the connected players from P1-P8
|
|
|
|
s8 GetPlayerCount() const;
|
|
|
|
|
|
|
|
/// Returns the first connected npad id
|
|
|
|
NpadIdType GetFirstNpadId() const;
|
|
|
|
|
2021-12-07 05:20:09 +04:00
|
|
|
/// Returns the first disconnected npad id
|
|
|
|
NpadIdType GetFirstDisconnectedNpadId() const;
|
|
|
|
|
2021-11-30 08:49:07 +04:00
|
|
|
/// Sets all emulated controllers into configuring mode.
|
|
|
|
void EnableAllControllerConfiguration();
|
|
|
|
|
|
|
|
/// Sets all emulated controllers into normal mode.
|
|
|
|
void DisableAllControllerConfiguration();
|
|
|
|
|
2021-11-02 08:02:57 +04:00
|
|
|
/// Reloads all input devices from settings
|
|
|
|
void ReloadInputDevices();
|
|
|
|
|
|
|
|
/// Removes all callbacks from input common
|
|
|
|
void UnloadInputDevices();
|
|
|
|
|
|
|
|
/// Number of emulated controllers
|
2021-11-20 03:36:26 +04:00
|
|
|
static constexpr std::size_t available_controllers{10};
|
2021-11-02 08:02:57 +04:00
|
|
|
|
|
|
|
private:
|
|
|
|
std::unique_ptr<EmulatedController> player_1;
|
|
|
|
std::unique_ptr<EmulatedController> player_2;
|
|
|
|
std::unique_ptr<EmulatedController> player_3;
|
|
|
|
std::unique_ptr<EmulatedController> player_4;
|
|
|
|
std::unique_ptr<EmulatedController> player_5;
|
|
|
|
std::unique_ptr<EmulatedController> player_6;
|
|
|
|
std::unique_ptr<EmulatedController> player_7;
|
|
|
|
std::unique_ptr<EmulatedController> player_8;
|
|
|
|
std::unique_ptr<EmulatedController> other;
|
|
|
|
std::unique_ptr<EmulatedController> handheld;
|
|
|
|
std::unique_ptr<EmulatedConsole> console;
|
|
|
|
std::unique_ptr<EmulatedDevices> devices;
|
2021-12-05 12:09:33 +04:00
|
|
|
NpadStyleTag supported_style_tag{NpadStyleSet::All};
|
2021-11-02 08:02:57 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace Core::HID
|