LeviLamina
Loading...
Searching...
No Matches
MinecraftInputHandler.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/game/IConfigListener.h"
7#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/deps/core/utility/pub_sub/Publisher.h"
10#include "mc/deps/input/InputMode.h"
11#include "mc/deps/input/enums/ButtonState.h"
12#include "mc/deps/input/enums/RawInputType.h"
13
14// auto generated forward declare list
15// clang-format off
17class Config;
19class IClientInstance;
20class IGameModuleApp;
21class IMinecraftGame;
22class InputHandler;
27class MouseMapper;
30namespace Bedrock::PubSub { class Subscription; }
31namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
32// clang-format on
33
35public:
36 // member variables
37 // NOLINTBEGIN
38 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::InputHandler>> mInputHandler;
39 ::ll::TypedStorage<4, 4, int> mControllerId;
40 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IClientInstance>> mClient;
41 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions>> mAdvancedGraphicsOptions;
42 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::MinecraftBindingFactoryMap>> mBindingFactoryMap;
43 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::MinecraftInputMappingFactoryMap>> mMappingFactoryMap;
44 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SplitscreenJoinListener>> mSplitscreenJoinListener;
45 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::InputSettingsHandler>> mInputSettingsHandler;
46 ::ll::TypedStorage<
47 8,
48 128,
49 ::Bedrock::PubSub::Publisher<void(::IClientInstance&), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
50 mAnyInputSubscription;
51 ::ll::TypedStorage<
52 8,
53 128,
54 ::Bedrock::PubSub::
55 Publisher<void(int, ::RawInputType, ::ButtonState, bool), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
56 mRawInputEventPublisher;
57 ::ll::TypedStorage<
58 8,
59 128,
60 ::Bedrock::PubSub::
61 Publisher<void(::IClientInstance&, ::InputMode), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
62 mInputModePublisher;
63 ::ll::TypedStorage<8, 8, ::MouseMapper*> mMouseMapper;
64 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::MinecraftInputHandlerProxy>> mProxy;
65 // NOLINTEND
66
67public:
68 // prevent constructor by default
69 MinecraftInputHandler();
70
71public:
72 // virtual functions
73 // NOLINTBEGIN
74 virtual ~MinecraftInputHandler() /*override*/;
75
76 virtual void onConfigChanged(::Config const& c) /*override*/;
77
78 virtual void _registerInputHandlers();
79
80 virtual void _registerDebugInputHandlers();
81
82 virtual ::std::unique_ptr<::ClientMoveInputHandler> _createClientMoveInputHandler() = 0;
83 // NOLINTEND
84
85public:
86 // member functions
87 // NOLINTBEGIN
88 MCAPI MinecraftInputHandler(
89 ::Bedrock::NotNullNonOwnerPtr<::IClientInstance> const& client,
90 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
91 );
92
93 MCAPI void _registerMenuButton(::std::string const& buttonName, bool suspendable);
94
95 MCAPI void changeControllerId(int oldId, int newId);
96
97 MCAPI void clearInputDeviceQueues();
98
99 MCAPI void clearInputDeviceQueuesForFrame();
100
101 MCAPI void
102 getCursorPos(float& xCursor, float& yCursor, ::Bedrock::NotNullNonOwnerPtr<::IClientInstance> const& client) const;
103
104 MCFOLD ::InputSettingsHandler& getInputSettingsHandler();
105
106 MCAPI void init(::IGameModuleApp& gameModuleApp);
107
108 MCAPI ::ClientMoveInputHandler*
109 initClientInput(::Bedrock::NotNullNonOwnerPtr<::IClientInstance> const& client, ::IGameModuleApp& gameModuleApp);
110
111 MCAPI ::Bedrock::PubSub::Subscription
112 registerToInputModePublisher(::std::function<void(::IClientInstance&, ::InputMode)> callback);
113
114 MCFOLD ::Bedrock::PubSub::Subscription
115 registerToRawInputEventPublisher(::std::function<void(int, ::RawInputType, ::ButtonState, bool)> callback);
116
117 MCFOLD ::Bedrock::PubSub::Subscription subscribeToRawInput(::std::function<void(::IClientInstance&)> callback);
118
119 MCAPI void tick(
120 ::IMinecraftGame& mcGame,
121 ::Bedrock::NotNullNonOwnerPtr<::IClientInstance> const& primaryClient,
122 ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap> const& map,
123 bool allowMultipleClients
124 );
125 // NOLINTEND
126
127public:
128 // constructor thunks
129 // NOLINTBEGIN
130 MCAPI void* $ctor(
131 ::Bedrock::NotNullNonOwnerPtr<::IClientInstance> const& client,
132 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
133 );
134 // NOLINTEND
135
136public:
137 // destructor thunk
138 // NOLINTBEGIN
139 MCAPI void $dtor();
140 // NOLINTEND
141
142public:
143 // virtual function thunks
144 // NOLINTBEGIN
145 MCAPI void $onConfigChanged(::Config const& c);
146
147 MCAPI void $_registerInputHandlers();
148
149 MCAPI void $_registerDebugInputHandlers();
150 // NOLINTEND
151
152public:
153 // vftables
154 // NOLINTBEGIN
155 MCNAPI static void** $vftableForIConfigListener();
156
158 // NOLINTEND
159};
Definition EnableNonOwnerReferences.h:7
Definition Subscription.h:10
Definition ClientMoveInputHandler.h:5
Definition Config.h:5
Definition IAdvancedGraphicsOptions.h:16
Definition IClientInstance.h:5
Definition IConfigListener.h:5
Definition IGameModuleApp.h:5
Definition IMinecraftGame.h:5
Definition InputHandler.h:5
Definition InputSettingsHandler.h:5
Definition MinecraftBindingFactoryMap.h:5
Definition MinecraftInputHandlerProxy.h:5
Definition MinecraftInputHandler.h:5
static MCAPI void ** $vftableForIConfigListener()
static MCAPI void ** $vftableForEnableNonOwnerReferences()
Definition MinecraftInputMappingFactoryMap.h:5
Definition MouseMapper.h:5
Definition SplitscreenJoinListener.h:5
Definition ControllerIDtoClientMap.h:5