| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- namespace Ryujinx.HLE.Input
- {
- public class NpadController : BaseController
- {
- private (NpadColor Left, NpadColor Right) _npadBodyColors;
- private (NpadColor Left, NpadColor Right) _npadButtonColors;
- private bool _isHalf;
- public NpadController(
- ControllerStatus controllerStatus,
- Switch device,
- (NpadColor, NpadColor) npadBodyColors,
- (NpadColor, NpadColor) npadButtonColors) : base(device, controllerStatus)
- {
- _npadBodyColors = npadBodyColors;
- _npadButtonColors = npadButtonColors;
- }
- public override void Connect(ControllerId controllerId)
- {
- if (HidControllerType != ControllerStatus.NpadLeft && HidControllerType != ControllerStatus.NpadRight)
- {
- _isHalf = false;
- }
- ConnectionState = ControllerConnectionState.ControllerStateConnected;
- if (controllerId == ControllerId.ControllerHandheld)
- ConnectionState |= ControllerConnectionState.ControllerStateWired;
- ControllerColorDescription singleColorDesc =
- ControllerColorDescription.ColorDescriptionColorsNonexistent;
- ControllerColorDescription splitColorDesc = 0;
- NpadColor singleBodyColor = NpadColor.Black;
- NpadColor singleButtonColor = NpadColor.Black;
- Initialize(_isHalf,
- (_npadBodyColors.Left, _npadBodyColors.Right),
- (_npadButtonColors.Left, _npadButtonColors.Right),
- singleColorDesc,
- splitColorDesc,
- singleBodyColor,
- singleButtonColor );
- base.Connect(controllerId);
- var _currentLayout = ControllerLayouts.HandheldJoined;
- switch (HidControllerType)
- {
- case ControllerStatus.NpadLeft:
- _currentLayout = ControllerLayouts.Left;
- break;
- case ControllerStatus.NpadRight:
- _currentLayout = ControllerLayouts.Right;
- break;
- case ControllerStatus.NpadPair:
- _currentLayout = ControllerLayouts.Joined;
- break;
- }
- SetLayout(_currentLayout);
- }
- }
- }
|