// Copyright (C) 2026 SharpEmu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
namespace SharpEmu.HLE.Host;
///
/// Routes emulated input through the active cross-platform host window.
///
internal sealed class WindowHostInput : IHostInput
{
public void EnsureStarted()
{
// SDL owns device discovery and pumps it on the window thread.
}
public int GetGamepadStates(Span destination) =>
HostWindowInputSource.Current?.GetGamepadStates(destination) ?? 0;
public string? DescribeConnectedGamepad() =>
HostWindowInputSource.Current?.DescribeConnectedGamepad();
public void SetRumble(byte largeMotor, byte smallMotor) =>
HostWindowInputSource.Current?.SetRumble(largeMotor, smallMotor);
public void SetTriggerRumble(byte? leftTrigger, byte? rightTrigger) =>
HostWindowInputSource.Current?.SetTriggerRumble(leftTrigger, rightTrigger);
public void SetAdaptiveTriggerEffect(
HostAdaptiveTriggerEffect? leftTrigger,
HostAdaptiveTriggerEffect? rightTrigger) =>
HostWindowInputSource.Current?.SetAdaptiveTriggerEffect(leftTrigger, rightTrigger);
public void SetLightbar(byte red, byte green, byte blue) =>
HostWindowInputSource.Current?.SetLightbar(red, green, blue);
public void ResetLightbar() => HostWindowInputSource.Current?.ResetLightbar();
public bool IsHostWindowFocused() =>
HostWindowInputSource.Current?.HasKeyboardFocus ?? false;
public bool IsKeyDown(int virtualKey) =>
HostWindowInputSource.Current?.IsKeyDown(virtualKey) ?? false;
}