3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/input/InputBindingMode.h"
8#include "mc/deps/input/InputMode.h"
9#include "mc/deps/input/enums/ButtonState.h"
10#include "mc/deps/input/enums/DirectionId.h"
11#include "mc/deps/input/enums/FocusImpact.h"
12#include "mc/deps/input/enums/RawInputType.h"
24struct ButtonEventData;
27struct ControllerIDtoClientMap;
31struct PointerLocationEventData;
41 struct InputHandlerState;
49 ::ll::TypedStorage<4, 4, ::InputMode> mCurrentInputMode;
50 ::ll::TypedStorage<4, 4, ::InputBindingMode> mCurrentBindingMode;
51 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mInputMappingStack;
52 ::ll::TypedStorage<8, 64, ::std::unordered_set<uint>> mButtonsDown;
53 ::ll::TypedStorage<8, 64, ::std::unordered_set<int>> mTriggeredChordsSources;
54 ::ll::TypedStorage<1, 1, bool> mSuspendInput;
55 ::ll::TypedStorage<1, 1, bool> mSuspendDirectionalInput;
56 ::ll::TypedStorage<1, 1, bool> mDisableInput;
87 using InputModeHandler = ::std::function<void(::InputMode, ::IClientInstance&)>;
89 using ButtonPressHandler = ::std::function<void(::FocusImpact, ::IClientInstance&)>;
91 using TextCharHandler = ::std::function<void(::std::string
const&,
bool, ::FocusImpact, ::IClientInstance&)>;
93 using CaretLocationHandler = ::std::function<void(
int, ::FocusImpact, ::IClientInstance&)>;
95 using PointerLocationHandler =
96 ::std::function<void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)>;
98 using PointerLocationWithIdHandler =
101 using ClearPointerLocationWithIdHandler =
104 using ClearPointerLocationsHandler = ::std::function<void(::IClientInstance&)>;
106 using DirectionHandler = ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>;
108 using TurnHandler = ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>;
110 using VectorHandler = ::std::function<void(
short,
float,
float,
float, ::FocusImpact, ::IClientInstance&)>;
112 using AnyInputHandler = ::std::function<void(::IClientInstance&)>;
114 using RawInputHandler = ::std::function<void(
int, ::RawInputType, ::ButtonState,
bool, ::IClientInstance&)>;
116 using AddClientHandler = ::std::function<void(::IMinecraftGame*,
int,
bool)>;
118 using ChangeUserHandler = ::std::function<void(::IMinecraftGame*,
int,
bool)>;
120 using ControllerConnectionStateChangeHandler = ::std::function<void(::IClientInstance&,
bool,
int)>;
122 using TouchPadTouchHandler =
127 using NumberOfEnabledControlOptionsHandler =
132 using PotentialOverlappingControlsHandler = ::std::function<void(::IClientInstance&)>;
134 using InputModeHandlers = ::std::vector<::std::function<void(::InputMode, ::IClientInstance&)>>;
136 using ButtonHandlerMap =
137 ::std::multimap<uint, ::std::pair<bool, ::std::function<void(::FocusImpact, ::IClientInstance&)>>>;
139 using TextCharHandlers =
140 ::std::vector<::std::function<void(::std::string
const&,
bool, ::FocusImpact, ::IClientInstance&)>>;
142 using CaretLocationHandlers = ::std::vector<::std::function<void(
int, ::FocusImpact, ::IClientInstance&)>>;
144 using PointerLocationHandlers =
145 ::std::vector<::std::function<void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)>>;
147 using PointerLocationWithIdHandlers =
150 using ClearPointerLocationWithIdHandlers =
153 using ClearPointerLocationsHandlers = ::std::vector<::std::function<void(::IClientInstance&)>>;
155 using DirectionHandlerMap =
156 ::std::multimap<::DirectionId, ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>>;
158 using VectorHandlers =
159 ::std::vector<::std::function<void(
short,
float,
float,
float, ::FocusImpact, ::IClientInstance&)>>;
161 using TouchPadHandlers =
164 using PointerLocationWithIdHandlersMap =
167 using ControlOptionHandlers =
170 using NumberOfEnabledControlOptionsHandlers =
173 using OverlappingControlsHandlers =
176 using PotentialOverlappingControlsHandlers = ::std::vector<::std::function<void(::IClientInstance&)>>;
181 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::InputMode, ::IClientInstance&)>>> mInputModeHandlers;
185 ::std::multimap<uint, ::std::pair<bool, ::std::function<void(::FocusImpact, ::IClientInstance&)>>>>
186 mButtonDownHandlerMap;
190 ::std::multimap<uint, ::std::pair<bool, ::std::function<void(::FocusImpact, ::IClientInstance&)>>>>
195 ::std::vector<::std::function<void(::std::string
const&,
bool, ::FocusImpact, ::IClientInstance&)>>>
197 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(
int, ::FocusImpact, ::IClientInstance&)>>>
198 mCaretLocationHandlers;
202 ::std::vector<::std::function<void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)>>>
203 mPointerLocationHandlers;
208 mPointerLocationWithIdHandlers;
213 mClearPointerLocationWithIdHandlers;
214 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::IClientInstance&)>>> mClearPointerLocationsHandlers;
218 ::std::multimap<::DirectionId, ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>>>
219 mDirectionHandlerMap;
220 ::ll::TypedStorage<8, 64, ::std::function<void(::IClientInstance&)>> mAnyInputHandler;
221 ::ll::TypedStorage<8, 64, ::std::function<void(
int, ::RawInputType, ::ButtonState,
bool, ::IClientInstance&)>>
223 ::ll::TypedStorage<8, 64, ::std::function<void(::IMinecraftGame*,
int,
bool)>> mAddClientHandler;
224 ::ll::TypedStorage<8, 64, ::std::function<void(::IMinecraftGame*,
int,
bool)>> mChangeUserHandler;
225 ::ll::TypedStorage<8, 64, ::std::function<void(::IClientInstance&,
bool,
int)>>
226 mControllerConnectionStateChangeHandler;
237 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(
::ControlOptionEventData const&, ::IClientInstance&)>>>
238 mControlOptionHandlers;
243 mNumberOfEnabledControlOptionsHandlers;
248 mOverlappingControlsHandlers;
249 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::IClientInstance&)>>>
250 mPotentialOverlappingControlsHandlers;
251 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::InputEventQueue>> mInputEventQueue;
252 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ButtonChordTracker>> mChordTracker;
253 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ButtonRepeater>> mButtonRepeater;
254 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::InputDeviceMapper>>> mInputDeviceMappers;
255 ::ll::TypedStorage<8, 8, ::BindingFactoryMap&> mBindingFactoryMap;
256 ::ll::TypedStorage<8, 8, ::InputMappingFactoryMap&> mInputMappingFactoryMap;
257 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::InputHandler::InputHandlerState>> mPerIdState;
258 ::ll::TypedStorage<4, 4, int> mPrimaryGameControllerId;
273 ::InputMode startingInputMode
276 MCAPI
void _handleButtonEvent(
277 ::ButtonEventData
const& button,
278 ::FocusImpact focusImpact,
279 ::IClientInstance& client,
287 _handleTextCharEvent(
::TextCharEventData const& textChar, ::FocusImpact focusImpact, ::IClientInstance& client);
289 MCAPI
void changeControllerId(
int oldId,
int newId);
291 MCAPI
void clearInputMapping(
int controllerId);
293 MCAPI ::std::string
const& getCurrentInputMapping(
int controllerId)
const;
295 MCAPI ::InputMode getCurrentInputMode(
int controllerId)
const;
297 MCAPI
void popInputMapping(
int controllerId);
299 MCAPI
void pushInputMapping(::std::string
const& mappingName,
int controllerId);
301 MCAPI
void registerButtonDownHandler(
302 ::std::string buttonName,
303 ::std::function<
void(::FocusImpact, ::IClientInstance&)> handler,
307 MCAPI
void registerButtonUpHandler(
308 ::std::string buttonName,
309 ::std::function<
void(::FocusImpact, ::IClientInstance&)> handler,
313 MCAPI
void registerClearPointerLocationsHandler(::std::function<
void(::IClientInstance&)> handler);
315 MCAPI
void registerDirectionHandler(
316 ::DirectionId directionId,
317 ::std::function<
void(
float,
float, ::FocusImpact, ::IClientInstance&)> handler
320 MCAPI
void registerInputModeHandler(::std::function<
void(::InputMode, ::IClientInstance&)> handler);
322 MCAPI
void registerOverlappingControlsHandler(
326 MCAPI
void registerPotentialOverlappingControlsHandler(::std::function<
void(::IClientInstance&)> handler);
328 MCAPI
void registerTouchPadTouchHandler(
332 MCAPI
void releaseButtonsAndSticks(::std::string
const& currentMappingName,
int controllerId);
335 ::IMinecraftGame* mcGame,
336 ::IClientInstance& primaryClientInstance,
337 ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap>
const& controllerClientMap,
338 bool allowMultipleClients
341 MCAPI
void updateInputMapping(::std::string
const& mappingName,
int controllerId);
352 ::InputMode startingInputMode
Definition BindingFactoryMap.h:5
Definition ClearPointerLocationWithIdEventData.h:5
Definition ControlOptionEventData.h:5
Definition NumberOfEnabledControlOptionsEventData.h:5
Definition OverlappingControlsEventData.h:5
Definition PointerLocationWithIdEventData.h:5
Definition TextCharEventData.h:5
Definition TouchPadTouchEventData.h:5