forked from Clones/Controlify
✏️ Abstract GUID and controller name into drivers
This commit is contained in:
@ -8,7 +8,7 @@ import org.hid4java.HidDevice;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public record GamepadDrivers(BasicGamepadInputDriver basicGamepadInputDriver, GyroDriver gyroDriver, RumbleDriver rumbleDriver, BatteryDriver batteryDriver) {
|
||||
public record GamepadDrivers(BasicGamepadInputDriver basicGamepadInputDriver, GyroDriver gyroDriver, RumbleDriver rumbleDriver, BatteryDriver batteryDriver, GUIDProvider guidProviderDriver, NameProviderDriver nameProviderDriver) {
|
||||
public Set<Driver> getUniqueDrivers() {
|
||||
Set<Driver> drivers = Sets.newIdentityHashSet();
|
||||
drivers.addAll(List.of(basicGamepadInputDriver, gyroDriver, rumbleDriver, batteryDriver));
|
||||
@ -17,17 +17,24 @@ public record GamepadDrivers(BasicGamepadInputDriver basicGamepadInputDriver, Gy
|
||||
|
||||
public void printDrivers() {
|
||||
if (DebugProperties.PRINT_DRIVER) {
|
||||
Controlify.LOGGER.info("Drivers in use: Basic Input = '{}', Gyro = '{}', Rumble = '{}', Battery = '{}'",
|
||||
Controlify.LOGGER.info("Drivers in use: Basic Input = '{}', Gyro = '{}', Rumble = '{}', Battery = '{}', Name = '{}', GUID = '{}'",
|
||||
basicGamepadInputDriver.getBasicGamepadDetails(),
|
||||
gyroDriver.getGyroDetails(),
|
||||
rumbleDriver.getRumbleDetails(),
|
||||
batteryDriver.getBatteryDriverDetails()
|
||||
batteryDriver.getBatteryDriverDetails(),
|
||||
nameProviderDriver.getNameProviderDetails(),
|
||||
guidProviderDriver.getGUIDProviderDetails()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public static GamepadDrivers forController(int jid, Optional<HidDevice> hid) {
|
||||
BasicGamepadInputDriver basicGamepadInputDriver = new GLFWGamepadDriver(jid);
|
||||
GLFWGamepadDriver glfwDriver = new GLFWGamepadDriver(jid);
|
||||
|
||||
BasicGamepadInputDriver basicGamepadInputDriver = glfwDriver;
|
||||
NameProviderDriver nameProviderDriver = glfwDriver;
|
||||
GUIDProvider guidProviderDriver = glfwDriver;
|
||||
|
||||
GyroDriver gyroDriver = GyroDriver.UNSUPPORTED;
|
||||
RumbleDriver rumbleDriver = RumbleDriver.UNSUPPORTED;
|
||||
BatteryDriver batteryDriver = BatteryDriver.UNSUPPORTED;
|
||||
@ -37,13 +44,20 @@ public record GamepadDrivers(BasicGamepadInputDriver basicGamepadInputDriver, Gy
|
||||
gyroDriver = sdl2Driver;
|
||||
rumbleDriver = sdl2Driver;
|
||||
batteryDriver = sdl2Driver;
|
||||
|
||||
// SDL2 bypasses XInput abstraction
|
||||
guidProviderDriver = sdl2Driver;
|
||||
}
|
||||
|
||||
// broken
|
||||
// TODO: Fix Steam Deck driver
|
||||
if (hid.isPresent() && SteamDeckDriver.isSteamDeck(hid.get()) && false) {
|
||||
gyroDriver = new SteamDeckDriver(hid.get());
|
||||
}
|
||||
|
||||
return new GamepadDrivers(basicGamepadInputDriver, gyroDriver, rumbleDriver, batteryDriver);
|
||||
if (GameControllerDBDriver.isSupported(guidProviderDriver.getGUID())) {
|
||||
nameProviderDriver = new GameControllerDBDriver(guidProviderDriver.getGUID());
|
||||
}
|
||||
|
||||
return new GamepadDrivers(basicGamepadInputDriver, gyroDriver, rumbleDriver, batteryDriver, guidProviderDriver, nameProviderDriver);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user