diff options
| author | Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com> | 2024-02-11 02:09:18 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-11 03:09:18 +0100 |
| commit | f06d22d6f01e657ebbc0c8ef082739cd468e47b5 (patch) | |
| tree | c10a566438d3801b33c1d7b4eff73ea62b2f1a63 /src/Ryujinx.HLE/Ui/Input | |
| parent | 84d6e8d121a1b329d26cc0e462aadd1108d99a04 (diff) | |
Infra: Capitalisation Consistency (#6296)
* Rename Ryujinx.UI.Common
* Rename Ryujinx.UI.LocaleGenerator
* Update in Files
AboutWindow
* Configuration State
* Rename projects
* Ryujinx/UI
* Fix build
* Main remaining inconsistencies
* HLE.UI Namespace
* HLE.UI Files
* Namespace
* Ryujinx.UI.Common.Configuration.UI
* Ryujinx.UI.Common,Configuration.UI Files
* More instances
Diffstat (limited to 'src/Ryujinx.HLE/Ui/Input')
| -rw-r--r-- | src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs | 6 | ||||
| -rw-r--r-- | src/Ryujinx.HLE/Ui/Input/NpadReader.cs | 140 |
2 files changed, 0 insertions, 146 deletions
diff --git a/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs b/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs deleted file mode 100644 index 2d1c1c49..00000000 --- a/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad; - -namespace Ryujinx.HLE.Ui.Input -{ - delegate void NpadButtonHandler(int npadIndex, NpadButton button); -} diff --git a/src/Ryujinx.HLE/Ui/Input/NpadReader.cs b/src/Ryujinx.HLE/Ui/Input/NpadReader.cs deleted file mode 100644 index 8fc95dc9..00000000 --- a/src/Ryujinx.HLE/Ui/Input/NpadReader.cs +++ /dev/null @@ -1,140 +0,0 @@ -using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common; -using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad; - -namespace Ryujinx.HLE.Ui.Input -{ - /// <summary> - /// Class that converts Hid entries for the Npad into pressed / released events. - /// </summary> - class NpadReader - { - private readonly Switch _device; - private readonly NpadCommonState[] _lastStates; - - public event NpadButtonHandler NpadButtonUpEvent; - public event NpadButtonHandler NpadButtonDownEvent; - - public NpadReader(Switch device) - { - _device = device; - _lastStates = new NpadCommonState[_device.Hid.SharedMemory.Npads.Length]; - } - - public NpadButton GetCurrentButtonsOfNpad(int npadIndex) - { - return _lastStates[npadIndex].Buttons; - } - - public NpadButton GetCurrentButtonsOfAllNpads() - { - NpadButton buttons = 0; - - foreach (var state in _lastStates) - { - buttons |= state.Buttons; - } - - return buttons; - } - - private static ref RingLifo<NpadCommonState> GetCommonStateLifo(ref NpadInternalState npad) - { - switch (npad.StyleSet) - { - case NpadStyleTag.FullKey: - return ref npad.FullKey; - case NpadStyleTag.Handheld: - return ref npad.Handheld; - case NpadStyleTag.JoyDual: - return ref npad.JoyDual; - case NpadStyleTag.JoyLeft: - return ref npad.JoyLeft; - case NpadStyleTag.JoyRight: - return ref npad.JoyRight; - case NpadStyleTag.Palma: - return ref npad.Palma; - default: - return ref npad.SystemExt; - } - } - - public void Update(bool supressEvents = false) - { - ref var npads = ref _device.Hid.SharedMemory.Npads; - - // Process each input individually. - for (int npadIndex = 0; npadIndex < npads.Length; npadIndex++) - { - UpdateNpad(npadIndex, supressEvents); - } - } - - private void UpdateNpad(int npadIndex, bool supressEvents) - { - const int MaxEntries = 1024; - - ref var npadState = ref _device.Hid.SharedMemory.Npads[npadIndex]; - ref var lastEntry = ref _lastStates[npadIndex]; - - var fullKeyEntries = GetCommonStateLifo(ref npadState.InternalState).ReadEntries(MaxEntries); - - int firstEntryNum; - - // Scan the LIFO for the first entry that is newer that what's already processed. - for (firstEntryNum = fullKeyEntries.Length - 1; - firstEntryNum >= 0 && fullKeyEntries[firstEntryNum].Object.SamplingNumber <= lastEntry.SamplingNumber; - firstEntryNum--) - { - } - - if (firstEntryNum == -1) - { - return; - } - - for (; firstEntryNum >= 0; firstEntryNum--) - { - var entry = fullKeyEntries[firstEntryNum]; - - // The interval of valid entries should be contiguous. - if (entry.SamplingNumber < lastEntry.SamplingNumber) - { - break; - } - - if (!supressEvents) - { - ProcessNpadButtons(npadIndex, entry.Object.Buttons); - } - - lastEntry = entry.Object; - } - } - - private void ProcessNpadButtons(int npadIndex, NpadButton buttons) - { - NpadButton lastButtons = _lastStates[npadIndex].Buttons; - - for (ulong buttonMask = 1; buttonMask != 0; buttonMask <<= 1) - { - NpadButton currentButton = (NpadButton)buttonMask & buttons; - NpadButton lastButton = (NpadButton)buttonMask & lastButtons; - - if (lastButton != 0) - { - if (currentButton == 0) - { - NpadButtonUpEvent?.Invoke(npadIndex, lastButton); - } - } - else - { - if (currentButton != 0) - { - NpadButtonDownEvent?.Invoke(npadIndex, currentButton); - } - } - } - } - } -} |
