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 void clear();
68
69 MCAPI ::ButtonChordTracker::TrackerMappingAndState& operator=(::ButtonChordTracker::TrackerMappingAndState&&);
70
71 MCAPI ~TrackerMappingAndState();
72 // NOLINTEND
73
74 public:
75 // destructor thunk
76 // NOLINTBEGIN
77 MCAPI void $dtor();
78 // NOLINTEND
79 };
80
81 using ChordMap = ::std::unordered_multimap<uint, ::ButtonChordTracker::ChordButtonDetails>;
82
83 using ChordState = ::std::vector<int>;
84
85 using ButtonSequences = ::std::vector<::std::vector<uint>>;
86
87 using ButtonLastInputTimes = ::std::map<uint, ::std::chrono::steady_clock::time_point>;
88
89public:
90 // member variables
91 // NOLINTBEGIN
92 ::ll::TypedStorage<8, 8, ::InputEventQueue&> mQueue;
93 ::ll::TypedStorage<8, 24, ::std::vector<::ButtonChordTracker::ChordButtonDetails*>> mChordsDown;
94 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::ButtonChordTracker::TrackerMappingAndState>>
95 mPerIdTrackerData;
96 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::ButtonChordTracker::ChordHoldInfo>> mMinHoldTimeTracker;
97 // NOLINTEND
98
99public:
100 // prevent constructor by default
101 ButtonChordTracker& operator=(ButtonChordTracker const&);
102 ButtonChordTracker(ButtonChordTracker const&);
103 ButtonChordTracker();
104
105public:
106 // member functions
107 // NOLINTBEGIN
108 MCAPI void _checkChordHoldDurations();
109
110 MCAPI void _raiseLongestChordSequences(::ButtonChordTracker::TrackerMappingAndState& trackerData, int controllerId);
111
112 MCAPI void clearMapping(int controllerId);
113
114 MCAPI void setMapping(::std::vector<::ChordButtonMapping> const& inputMapping, int controllerId);
115
116 MCAPI ::ChordTrackingResult trackButtonEvent(uint buttonId, ::ButtonState state, int controllerId);
117
118 MCAPI ~ButtonChordTracker();
119 // NOLINTEND
120
121public:
122 // destructor thunk
123 // NOLINTBEGIN
124 MCAPI void $dtor();
125 // NOLINTEND
126};
Definition ButtonChordTracker.h:5
Definition InputEventQueue.h:5
Definition ButtonChordTracker.h:15
Definition ButtonChordTracker.h:17
Definition ButtonChordTracker.h:19
Definition ChordButtonMapping.h:5