LeviLamina
Loading...
Searching...
No Matches
ButtonChordTracker.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/input/enums/ButtonState.h"
7#include "mc/deps/input/enums/ChordTrackingResult.h"
8
9// auto generated forward declare list
10// clang-format off
11class InputEventQueue;
13// clang-format on
14
16public:
17 // ButtonChordTracker inner types declare
18 // clang-format off
19 struct ChordButtonDetails;
20 struct ChordHoldInfo;
22 // clang-format on
23
24 // ButtonChordTracker inner types define
25 struct ChordButtonDetails {
26 public:
27 // member variables
28 // NOLINTBEGIN
29 ::ll::TypedStorage<4, 4, int> buttonMaskForThisChord;
30 ::ll::TypedStorage<4, 4, int> completeChordMask;
31 ::ll::TypedStorage<4, 4, uint> resultantButtonId;
32 ::ll::TypedStorage<4, 4, int> currentStateIndex;
33 ::ll::TypedStorage<4, 4, int> originalChordButtonSequenceIndex;
34 ::ll::TypedStorage<4, 4, float> minHoldTime;
35 // NOLINTEND
36 };
37
38 struct ChordHoldInfo {
39 public:
40 // member variables
41 // NOLINTBEGIN
42 ::ll::TypedStorage<4, 4, int> controllerId;
43 ::ll::TypedStorage<4, 4, float> minHoldTime;
44 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> timePressed;
45 // NOLINTEND
46 };
47
49 public:
50 // member variables
51 // NOLINTBEGIN
52 ::ll::TypedStorage<8, 64, ::std::unordered_multimap<uint, ::ButtonChordTracker::ChordButtonDetails>> mChordMap;
53 ::ll::TypedStorage<8, 24, ::std::vector<int>> mChordState;
54 ::ll::TypedStorage<8, 24, ::std::vector<::std::vector<uint>>> mButtonSequences;
55 ::ll::TypedStorage<8, 16, ::std::map<uint, ::std::chrono::steady_clock::time_point>> mButtonLastInputTimes;
56 // NOLINTEND
57
58 public:
59 // prevent constructor by default
60 TrackerMappingAndState& operator=(TrackerMappingAndState const&);
61 TrackerMappingAndState(TrackerMappingAndState const&);
62 TrackerMappingAndState();
63
64 public:
65 // member functions
66 // NOLINTBEGIN
67 MCAPI TrackerMappingAndState(::ButtonChordTracker::TrackerMappingAndState&&);
68
69 MCAPI ::ButtonChordTracker::TrackerMappingAndState& operator=(::ButtonChordTracker::TrackerMappingAndState&&);
70
71 MCAPI ~TrackerMappingAndState();
72 // NOLINTEND
73
74 public:
75 // constructor thunks
76 // NOLINTBEGIN
77 MCAPI void* $ctor(::ButtonChordTracker::TrackerMappingAndState&&);
78 // NOLINTEND
79
80 public:
81 // destructor thunk
82 // NOLINTBEGIN
83 MCAPI void $dtor();
84 // NOLINTEND
85 };
86
87 using ChordMap = ::std::unordered_multimap<uint, ::ButtonChordTracker::ChordButtonDetails>;
88
89 using ChordState = ::std::vector<int>;
90
91 using ButtonSequences = ::std::vector<::std::vector<uint>>;
92
93 using ButtonLastInputTimes = ::std::map<uint, ::std::chrono::steady_clock::time_point>;
94
95public:
96 // member variables
97 // NOLINTBEGIN
98 ::ll::TypedStorage<8, 8, ::InputEventQueue&> mQueue;
99 ::ll::TypedStorage<8, 24, ::std::vector<::ButtonChordTracker::ChordButtonDetails*>> mChordsDown;
100 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::ButtonChordTracker::TrackerMappingAndState>>
101 mPerIdTrackerData;
102 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::ButtonChordTracker::ChordHoldInfo>> mMinHoldTimeTracker;
103 // NOLINTEND
104
105public:
106 // prevent constructor by default
107 ButtonChordTracker& operator=(ButtonChordTracker const&);
108 ButtonChordTracker(ButtonChordTracker const&);
109 ButtonChordTracker();
110
111public:
112 // member functions
113 // NOLINTBEGIN
114 MCAPI void _checkChordHoldDurations();
115
116 MCAPI void _raiseLongestChordSequences(::ButtonChordTracker::TrackerMappingAndState& trackerData, int controllerId);
117
118 MCAPI void changeControllerId(int oldId, int newId);
119
120 MCAPI void setMapping(::std::vector<::ChordButtonMapping> const& inputMapping, int controllerId);
121
122 MCAPI ::ChordTrackingResult trackButtonEvent(uint buttonId, ::ButtonState state, int controllerId);
123 // NOLINTEND
124};
Definition ButtonChordTracker.h:5
Definition InputEventQueue.h:5
Definition ButtonChordTracker.h:15
Definition ButtonChordTracker.h:17
Definition ButtonChordTracker.h:19
Definition ChordButtonMapping.h:5