3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/GameEventNotification.h"
7#include "mc/client/gui/SceneType.h"
8#include "mc/client/gui/screens/AbstractScene.h"
9#include "mc/client/renderer/screen/EyeRenderingModeBit.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
11#include "mc/deps/input/InputMode.h"
12#include "mc/deps/input/TextboxTextUpdateReason.h"
13#include "mc/deps/input/enums/ButtonState.h"
14#include "mc/deps/input/enums/DirectionId.h"
15#include "mc/deps/input/enums/FocusImpact.h"
16#include "mc/deps/input/enums/RawInputType.h"
39 ::ll::TypedStorage<4, 4, int> mWidth;
40 ::ll::TypedStorage<4, 4, int> mHeight;
41 ::ll::TypedStorage<1, 1, bool> mShouldSendEvents;
42 ::ll::TypedStorage<1, 1, bool> mWantsTextOnly;
43 ::ll::TypedStorage<1, 1, bool> mIsPopped;
44 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AbstractScreenSetupCleanupStrategy>> mScreenSetupCleanup;
50 virtual ~BaseScreen() ;
52 virtual void setupForRendering(::ScreenContext& screenContext);
54 virtual void cleanupForRendering(::ScreenContext& screenContext);
56 virtual void setScreenSetupCleanup(::std::unique_ptr<::AbstractScreenSetupCleanupStrategy> screenSetupCleanup);
58 virtual void init(::ScreenSizeData
const& screenSizeData) ;
60 virtual void setSize(::ScreenSizeData
const& screenSizeData) ;
62 virtual void onSetKeyboardHeight(
float keyboardHeight) ;
64 virtual void onInternetUpdate() ;
66 virtual void onFocusGained() ;
68 virtual void onFocusLost() ;
70 virtual void terminate() ;
72 virtual void onCreation() ;
74 virtual void onLeave() ;
76 virtual void onGameEventNotification(::ui::GameEventNotification notification) ;
78 virtual void leaveScreen() ;
80 virtual void preFrameTick() ;
82 virtual void tick(
int nTick,
int maxTick) ;
84 virtual void frameUpdate(::MinecraftUIFrameUpdateContext& frameUpdateContext) ;
86 virtual void applyInput(
float a) ;
88 virtual void preRenderUpdate(::ScreenContext& screenContext) ;
90 virtual void prepareFrame(::ScreenContext& screenContext) ;
92 virtual void render(::ScreenContext& screenContext, ::FrameRenderObject
const& renderObj) = 0;
94 virtual void postRenderUpdate(::ScreenContext& screenContext) ;
96 virtual void handleInputModeChanged(::InputMode inputMode) ;
98 virtual void handleButtonPress(uint buttonId, ::FocusImpact focusImpact) ;
100 virtual void handleButtonRelease(uint buttonId, ::FocusImpact focusImpact) ;
103 handleRawInputEvent(
int id, ::RawInputType keyType, ::ButtonState state,
bool allowRemapping) ;
105 virtual bool handlePointerLocation(
106 ::PointerLocationEventData
const& pointerLocationData,
107 ::FocusImpact focusImpact
110 virtual void handlePointerPressed(
bool pressed) ;
112 virtual void handleDirection(::DirectionId directionId,
float x,
float y, ::FocusImpact focusImpact) ;
114 virtual void handleTextChar(::std::string
const& inputUtf8, ::FocusImpact focusImpact) ;
116 virtual void handleCaretLocation(
int caretLocation, ::FocusImpact focusImpact) ;
119 handleTouchPadTouch(::TouchPadTouchEventData
const& touchEventData, ::FocusImpact focusImpact) ;
121 virtual void setTextboxText(::std::string
const& text, ::TextboxTextUpdateReason reason) ;
123 virtual void onKeyboardDismissed() ;
125 virtual void handleLicenseChanged() ;
127 virtual bool renderGameBehind() const ;
129 virtual
bool absorbsInput() const ;
131 virtual
bool closeOnPlayerHurt() const ;
133 virtual
bool useCustomPocketToast() const ;
135 virtual
bool isModal() const ;
137 virtual
bool isEditorMode() const ;
139 virtual
bool isShowingMenu() const ;
141 virtual
bool shouldStealMouse() const ;
143 virtual
bool screenIsNotFlushable() const ;
145 virtual
bool alwaysAcceptsInput() const ;
147 virtual
bool screenDrawsLast() const ;
149 virtual
bool isPlayScreen() const ;
151 virtual
bool renderOnlyWhenTopMost() const ;
153 virtual
bool lowFreqRendering() const ;
155 virtual
bool ignoreAsTop() const ;
157 virtual
bool shouldBeSkippedInAutomation() const ;
159 virtual ::std::vector<::RectangleArea> getInputAreas() const ;
161 virtual
int getWidth() ;
163 virtual
int getHeight() ;
165 virtual
void reload() ;
167 virtual ::EyeRenderingModeBit getEyeRenderingMode() const ;
169 virtual ::ui::SceneType getSceneType() const ;
171 virtual ::std::
string getRawScreenName() const ;
173 virtual ::std::
string getRoute() const ;
175 virtual ::std::
string getScreenTelemetryName() const ;
177 virtual
void addEventProperties(::std::unordered_map<::std::
string, ::std::
string>& eventProperties) const
180 virtual
int getScreenVersion() const ;
182 virtual
void processBufferedTextCharEvents(::std::vector<::TextCharEventData> const& bufferedEvents) ;
184 virtual
bool getShouldSendEvents() ;
186 virtual
void setShouldSendEvents(
bool sendEvents) ;
188 virtual
bool getWantsTextOnly() ;
190 virtual
void setWantsTextOnly(
bool textOnly) ;
192 virtual
void onDelete(::CachedScenes& cache, ::TaskGroup& taskGroup) ;
194 virtual
bool isGamepadCursorEnabled() const ;
196 virtual
bool isGamepadDeflectionModeEnabled() const ;
198 virtual ::glm::vec2 const& getGamepadCursorPosition() const ;
200 virtual
void cleanInputComponents() ;
202 virtual ::std::weak_ptr<::AbstractSceneProxy> getProxy() ;
204 virtual
bool canBePushed() const ;
206 virtual
bool canBePopped() const ;
208 virtual
bool canBeTransitioned() const ;
211 onScreenExit(
bool isPopping,
bool doScreenTransitions, ::std::shared_ptr<::AbstractScene> pushedScene) ;
213 virtual
void onScreenEntrance(
bool isRevisiting,
bool doScreenTransitions) ;
215 virtual
bool isEntering() const ;
217 virtual
bool isExiting() const ;
219 virtual
void schedulePop() ;
221 virtual
bool isTerminating() const ;
223 virtual
bool loadScreenImmediately() const ;
225 virtual
bool forceUpdateActiveSceneStackWhenPushed() const ;
227 virtual
bool hasFinishedLoading() const ;
229 virtual
void sendScreenEvent(::std::
string const&, ::std::
string const&) ;
231 virtual
void setScreenState(
232 ::std::vector<::std::pair<::std::string_view, ::std::string_view>> const& routeQueryParameters
235 virtual ::Bedrock::NonOwnerPointer<::OreUI::Debug::ISceneDataProvider const> getDebugDataProvider() const
242 MCAPI static
void drawRectangleArea(
243 ::ScreenContext& screenContext,
244 ::RectangleArea const& a,
265 MCAPI
void $setupForRendering(::ScreenContext& screenContext);
267 MCAPI
void $cleanupForRendering(::ScreenContext& screenContext);
269 MCAPI
void $setScreenSetupCleanup(::std::unique_ptr<::AbstractScreenSetupCleanupStrategy> screenSetupCleanup);
271 MCFOLD
void $init(::ScreenSizeData const& screenSizeData);
273 MCAPI
void $setSize(::ScreenSizeData const& screenSizeData);
275 MCFOLD
void $onSetKeyboardHeight(
float keyboardHeight);
277 MCFOLD
void $onInternetUpdate();
279 MCFOLD
void $onFocusGained();
281 MCFOLD
void $onFocusLost();
283 MCFOLD
void $terminate();
285 MCFOLD
void $onCreation();
287 MCFOLD
void $onLeave();
289 MCFOLD
void $onGameEventNotification(::ui::GameEventNotification notification);
291 MCFOLD
void $leaveScreen();
293 MCFOLD
void $preFrameTick();
295 MCFOLD
void $tick(
int nTick,
int maxTick);
297 MCFOLD
void $frameUpdate(::MinecraftUIFrameUpdateContext& frameUpdateContext);
299 MCFOLD
void $applyInput(
float a);
301 MCFOLD
void $preRenderUpdate(::ScreenContext& screenContext);
303 MCFOLD
void $prepareFrame(::ScreenContext& screenContext);
305 MCFOLD
void $postRenderUpdate(::ScreenContext& screenContext);
307 MCFOLD
void $handleInputModeChanged(::InputMode inputMode);
309 MCFOLD
void $handleButtonPress(uint buttonId, ::FocusImpact focusImpact);
311 MCFOLD
void $handleButtonRelease(uint buttonId, ::FocusImpact focusImpact);
313 MCFOLD
void $handleRawInputEvent(
int id, ::RawInputType keyType, ::ButtonState state,
bool allowRemapping);
316 $handlePointerLocation(::PointerLocationEventData const& pointerLocationData, ::FocusImpact focusImpact);
318 MCFOLD
void $handlePointerPressed(
bool pressed);
320 MCFOLD
void $handleDirection(::DirectionId directionId,
float x,
float y, ::FocusImpact focusImpact);
322 MCFOLD
void $handleTextChar(::std::
string const& inputUtf8, ::FocusImpact focusImpact);
324 MCFOLD
void $handleCaretLocation(
int caretLocation, ::FocusImpact focusImpact);
326 MCFOLD
void $handleTouchPadTouch(::TouchPadTouchEventData const& touchEventData, ::FocusImpact focusImpact);
328 MCFOLD
void $setTextboxText(::std::
string const& text, ::TextboxTextUpdateReason reason);
330 MCFOLD
void $onKeyboardDismissed();
332 MCFOLD
void $handleLicenseChanged();
334 MCFOLD
bool $renderGameBehind() const;
336 MCFOLD
bool $absorbsInput() const;
338 MCFOLD
bool $closeOnPlayerHurt() const;
340 MCFOLD
bool $useCustomPocketToast() const;
342 MCFOLD
bool $isModal() const;
344 MCFOLD
bool $isEditorMode() const;
346 MCFOLD
bool $isShowingMenu() const;
348 MCFOLD
bool $shouldStealMouse() const;
350 MCFOLD
bool $screenIsNotFlushable() const;
352 MCFOLD
bool $alwaysAcceptsInput() const;
354 MCFOLD
bool $screenDrawsLast() const;
356 MCFOLD
bool $isPlayScreen() const;
358 MCFOLD
bool $renderOnlyWhenTopMost() const;
360 MCFOLD
bool $lowFreqRendering() const;
362 MCFOLD
bool $ignoreAsTop() const;
364 MCFOLD
bool $shouldBeSkippedInAutomation() const;
366 MCFOLD ::std::vector<::RectangleArea> $getInputAreas() const;
368 MCFOLD
int $getWidth();
370 MCFOLD
int $getHeight();
372 MCFOLD
void $reload();
374 MCAPI ::EyeRenderingModeBit $getEyeRenderingMode() const;
376 MCFOLD ::ui::SceneType $getSceneType() const;
378 MCFOLD ::std::
string $getRawScreenName() const;
380 MCAPI ::std::
string $getRoute() const;
382 MCFOLD ::std::
string $getScreenTelemetryName() const;
384 MCFOLD
void $addEventProperties(::std::unordered_map<::std::
string, ::std::
string>& eventProperties) const;
386 MCFOLD
int $getScreenVersion() const;
388 MCFOLD
void $processBufferedTextCharEvents(::std::vector<::TextCharEventData> const& bufferedEvents);
390 MCFOLD
bool $getShouldSendEvents();
392 MCFOLD
void $setShouldSendEvents(
bool sendEvents);
394 MCFOLD
bool $getWantsTextOnly();
396 MCAPI
void $setWantsTextOnly(
bool textOnly);
398 MCFOLD
void $onDelete(::CachedScenes& cache, ::TaskGroup& taskGroup);
400 MCFOLD
bool $isGamepadCursorEnabled() const;
402 MCFOLD
bool $isGamepadDeflectionModeEnabled() const;
404 MCAPI ::glm::vec2 const& $getGamepadCursorPosition() const;
406 MCFOLD
void $cleanInputComponents();
408 MCFOLD ::std::weak_ptr<::AbstractSceneProxy> $getProxy();
410 MCFOLD
bool $canBePushed() const;
412 MCFOLD
bool $canBePopped() const;
414 MCFOLD
bool $canBeTransitioned() const;
416 MCAPI
void $onScreenExit(
bool isPopping,
bool doScreenTransitions, ::std::shared_ptr<::AbstractScene> pushedScene);
418 MCFOLD
void $onScreenEntrance(
bool isRevisiting,
bool doScreenTransitions);
420 MCFOLD
bool $isEntering() const;
422 MCFOLD
bool $isExiting() const;
424 MCAPI
void $schedulePop();
426 MCFOLD
bool $isTerminating() const;
428 MCFOLD
bool $loadScreenImmediately() const;
430 MCFOLD
bool $forceUpdateActiveSceneStackWhenPushed() const;
432 MCFOLD
bool $hasFinishedLoading() const;
434 MCFOLD
void $sendScreenEvent(::std::
string const&, ::std::
string const&);
437 $setScreenState(::std::vector<::std::pair<::std::string_view, ::std::string_view>> const& routeQueryParameters);
439 MCFOLD ::Bedrock::NonOwnerPointer<::OreUI::Debug::ISceneDataProvider const> $getDebugDataProvider() const;
Definition AbstractSceneProxy.h:5
Definition AbstractScene.h:5
Definition AbstractScreenSetupCleanupStrategy.h:5
Definition BaseScreen.h:5
static MCAPI void ** $vftable()
Definition CachedScenes.h:5
Definition MinecraftUIFrameUpdateContext.h:5
Definition ISceneDataProvider.h:7
Definition RectangleArea.h:5
Definition ScreenContext.h:5
Definition TaskGroup.h:57
Definition FrameRenderObject.h:5
Definition PointerLocationEventData.h:8
Definition ScreenSizeData.h:5
Definition TextCharEventData.h:5
Definition TouchPadTouchEventData.h:5