3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/GameEventNotification.h"
7#include "mc/client/gui/SceneType.h"
8#include "mc/client/gui/oreui/SceneState.h"
9#include "mc/client/gui/oreui/interface/IScene.h"
10#include "mc/client/gui/oreui/interface/RouteMode.h"
11#include "mc/client/gui/oreui/interface/ViewId.h"
12#include "mc/client/gui/oreui/routing/RouterAction.h"
13#include "mc/client/gui/screens/AbstractScene.h"
14#include "mc/client/renderer/screen/EyeRenderingModeBit.h"
15#include "mc/deps/core/utility/NonOwnerPointer.h"
16#include "mc/deps/core/utility/pub_sub/Subscription.h"
17#include "mc/deps/input/InputMode.h"
18#include "mc/deps/input/TextboxTextUpdateReason.h"
19#include "mc/deps/input/enums/ButtonState.h"
20#include "mc/deps/input/enums/DirectionId.h"
21#include "mc/deps/input/enums/FocusImpact.h"
22#include "mc/deps/input/enums/RawInputType.h"
38namespace OreUI {
class IView; }
41namespace OreUI {
class Router; }
48class Scene :
public ::AbstractScene,
public ::OreUI::IScene {
52 ::ll::TypedStorage<4, 4, ::OreUI::ViewId const> mViewId;
53 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::OreUI::IViewProvider>> mViewProvider;
54 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::OreUI::IView>> mView;
55 ::ll::TypedStorage<8, 64, ::std::function<void()>> mOnLoadFailedCallback;
56 ::ll::TypedStorage<8, 32, ::std::string> mCurrentRoute;
57 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::OreUI::RouteModeInputHandler>> mRouteModeInputHandler;
58 ::ll::TypedStorage<1, 1, ::OreUI::SceneState> mState;
59 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnRouteChangedSubscription;
60 ::ll::TypedStorage<4, 8, ::glm::vec2> mGamepadCursorPosition;
61 ::ll::TypedStorage<2, 2, short> mCurrentPointerPositionX;
62 ::ll::TypedStorage<2, 2, short> mCurrentPointerPositionY;
63 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AbstractScreenSetupCleanupStrategy>> mScreenSetupCleanup;
64 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::AbstractSceneProxy>> mProxy;
76 virtual void onCreation() ;
78 virtual void init(::ScreenSizeData
const&) ;
80 virtual void setSize(::ScreenSizeData
const& screenSizeData) ;
82 virtual void onSetKeyboardHeight(
float) ;
84 virtual ::std::vector<::RectangleArea> getInputAreas() const ;
86 virtual
void onInternetUpdate() ;
88 virtual
void onFocusGained() ;
90 virtual
void onFocusLost() ;
92 virtual
void terminate() ;
94 virtual
void onLeave() ;
96 virtual
void onGameEventNotification(::ui::GameEventNotification) ;
98 virtual
void leaveScreen() ;
100 virtual
void preFrameTick() ;
102 virtual
void tick(
int,
int) ;
104 virtual
void frameUpdate(::MinecraftUIFrameUpdateContext&) ;
106 virtual
void applyInput(
float) ;
108 virtual
void preRenderUpdate(::ScreenContext&) ;
110 virtual
void prepareFrame(::ScreenContext&) ;
112 virtual
void render(::ScreenContext& screenContext, ::FrameRenderObject const&) ;
114 virtual
void postRenderUpdate(::ScreenContext&) ;
116 virtual
void handleInputModeChanged(::InputMode) ;
118 virtual
void handleButtonPress(uint, ::FocusImpact) ;
120 virtual
void handleButtonRelease(uint, ::FocusImpact) ;
122 virtual
void handleRawInputEvent(
int, ::RawInputType, ::ButtonState,
bool) ;
124 virtual
bool handlePointerLocation(::PointerLocationEventData const&, ::FocusImpact) ;
126 virtual
void handlePointerPressed(
bool) ;
128 virtual
void handleDirection(::DirectionId,
float,
float, ::FocusImpact) ;
130 virtual
void handleTextChar(::std::
string const&, ::FocusImpact) ;
132 virtual
void handleTouchPadTouch(::TouchPadTouchEventData const&, ::FocusImpact) ;
134 virtual
void setTextboxText(::std::
string const&, ::TextboxTextUpdateReason) ;
136 virtual
void onKeyboardDismissed() ;
138 virtual
void handleLicenseChanged() ;
140 virtual
bool renderGameBehind() const ;
142 virtual
bool absorbsInput() const ;
144 virtual
bool closeOnPlayerHurt() const ;
146 virtual
bool useCustomPocketToast() const ;
148 virtual
bool isModal() const ;
150 virtual
bool isEditorMode() const ;
152 virtual
bool isShowingMenu() const ;
154 virtual
bool shouldStealMouse() const ;
156 virtual
bool screenIsNotFlushable() const ;
158 virtual
bool alwaysAcceptsInput() const ;
160 virtual
bool screenDrawsLast() const ;
162 virtual
bool isPlayScreen() const ;
164 virtual
bool renderOnlyWhenTopMost() const ;
166 virtual
bool lowFreqRendering() const ;
168 virtual
bool ignoreAsTop() const ;
170 virtual
bool shouldBeSkippedInAutomation() const ;
172 virtual
int getWidth() ;
174 virtual
int getHeight() ;
176 virtual
void reload() ;
178 virtual ::EyeRenderingModeBit getEyeRenderingMode() const ;
180 virtual ::ui::SceneType getSceneType() const ;
182 virtual ::std::
string getScreenName() const ;
184 virtual
bool equalsScreenName(::std::string_view comparison) const ;
186 virtual
bool containsScreenNameSubstring(::std::string_view substring) const ;
188 virtual ::std::
string getRawScreenName() const ;
190 virtual ::std::
string getRoute() const ;
192 virtual ::std::
string getScreenTelemetryName() const ;
194 virtual
void addEventProperties(::std::unordered_map<::std::
string, ::std::
string>&) const ;
196 virtual
int getScreenVersion() const ;
198 virtual
void processBufferedTextCharEvents(::std::vector<::TextCharEventData> const&) ;
200 virtual
bool getShouldSendEvents() ;
202 virtual
void setShouldSendEvents(
bool) ;
204 virtual
bool getWantsTextOnly() ;
206 virtual
void setWantsTextOnly(
bool) ;
208 virtual
void onDelete(::CachedScenes&, ::TaskGroup&) ;
210 virtual
bool isGamepadCursorEnabled() const ;
212 virtual
bool isGamepadDeflectionModeEnabled() const ;
214 virtual ::glm::vec2 const& getGamepadCursorPosition() const ;
216 virtual
void cleanInputComponents() ;
218 virtual ::std::weak_ptr<::AbstractSceneProxy> getProxy() ;
220 virtual
bool canBePushed() const ;
222 virtual
bool canBePopped() const ;
224 virtual
bool canBeTransitioned() const ;
226 virtual
void onScreenExit(
bool,
bool, ::std::shared_ptr<::AbstractScene>) ;
228 virtual
void onScreenEntrance(
bool,
bool) ;
230 virtual
bool isEntering() const ;
232 virtual
bool isExiting() const ;
234 virtual
void schedulePop() ;
236 virtual
bool isTerminating() const ;
238 virtual
bool loadScreenImmediately() const ;
240 virtual
bool forceUpdateActiveSceneStackWhenPushed() const ;
242 virtual ::RectangleArea getAreaOfControlByName(::std::
string const&) const ;
244 virtual
bool hasFinishedLoading() const ;
246 virtual
void sendScreenEvent(::std::
string const& eventName, ::std::
string const& eventData) ;
248 virtual
void setScreenState(::std::vector<::std::pair<::std::string_view, ::std::string_view>> const&) ;
250 virtual ::Bedrock::NonOwnerPointer<::OreUI::Debug::ISceneDataProvider const> getDebugDataProvider() const
253 virtual
void onLoadFailed(
char const*,
char const*) ;
255 virtual
void onViewReused() ;
257 virtual
void onReusedViewReleased() ;
259 virtual
bool isInputEnabled() const ;
266 ::OreUI::ViewId viewId,
267 ::Bedrock::NotNullNonOwnerPtr<::OreUI::IViewProvider> viewProvider,
268 ::OreUI::Router& router,
269 ::OreUI::RouteMode routeMode,
270 ::std::function<
void()> onLoadFailedCallback,
271 ::Bedrock::NotNullNonOwnerPtr<::OreUI::RouteModeInputHandler> routeModeInputHandler
274 MCAPI
bool _isSameScene(::std::optional<::OreUI::RouterLocation> const& currentLocation) const;
276 MCAPI
void _updateRouteAndRouteMode(
277 ::std::optional<::OreUI::RouterLocation> const& previousLocation,
278 ::std::optional<::OreUI::RouterLocation> const& currentLocation
281 MCAPI
void onRouteChanged(
282 ::std::optional<::OreUI::RouterLocation> const& previousLocation,
283 ::std::optional<::OreUI::RouterLocation> const& currentLocation,
284 ::OreUI::RouterAction
287 MCAPI
void setScreenSetupCleanup(::std::unique_ptr<::AbstractScreenSetupCleanupStrategy> strategy);
294 ::OreUI::ViewId viewId,
295 ::Bedrock::NotNullNonOwnerPtr<::OreUI::IViewProvider> viewProvider,
296 ::OreUI::Router& router,
297 ::OreUI::RouteMode routeMode,
298 ::std::function<
void()> onLoadFailedCallback,
299 ::Bedrock::NotNullNonOwnerPtr<::OreUI::RouteModeInputHandler> routeModeInputHandler
312 MCFOLD
void $onCreation();
314 MCFOLD
void $init(::ScreenSizeData const&);
316 MCAPI
void $setSize(::ScreenSizeData const& screenSizeData);
318 MCFOLD
void $onSetKeyboardHeight(
float);
320 MCFOLD ::std::vector<::RectangleArea> $getInputAreas() const;
322 MCFOLD
void $onInternetUpdate();
324 MCFOLD
void $onFocusGained();
326 MCAPI
void $onFocusLost();
328 MCFOLD
void $terminate();
330 MCFOLD
void $onLeave();
332 MCFOLD
void $onGameEventNotification(::ui::GameEventNotification);
334 MCFOLD
void $leaveScreen();
336 MCFOLD
void $preFrameTick();
338 MCFOLD
void $tick(
int,
int);
340 MCFOLD
void $frameUpdate(::MinecraftUIFrameUpdateContext&);
342 MCFOLD
void $applyInput(
float);
344 MCFOLD
void $preRenderUpdate(::ScreenContext&);
346 MCFOLD
void $prepareFrame(::ScreenContext&);
348 MCAPI
void $render(::ScreenContext& screenContext, ::FrameRenderObject const&);
350 MCFOLD
void $postRenderUpdate(::ScreenContext&);
352 MCFOLD
void $handleInputModeChanged(::InputMode);
354 MCFOLD
void $handleButtonPress(uint, ::FocusImpact);
356 MCFOLD
void $handleButtonRelease(uint, ::FocusImpact);
358 MCFOLD
void $handleRawInputEvent(
int, ::RawInputType, ::ButtonState,
bool);
360 MCFOLD
bool $handlePointerLocation(::PointerLocationEventData const&, ::FocusImpact);
362 MCFOLD
void $handlePointerPressed(
bool);
364 MCFOLD
void $handleDirection(::DirectionId,
float,
float, ::FocusImpact);
366 MCFOLD
void $handleTextChar(::std::
string const&, ::FocusImpact);
368 MCFOLD
void $handleTouchPadTouch(::TouchPadTouchEventData const&, ::FocusImpact);
370 MCFOLD
void $setTextboxText(::std::
string const&, ::TextboxTextUpdateReason);
372 MCFOLD
void $onKeyboardDismissed();
374 MCFOLD
void $handleLicenseChanged();
376 MCFOLD
bool $renderGameBehind() const;
378 MCAPI
bool $absorbsInput() const;
380 MCFOLD
bool $closeOnPlayerHurt() const;
382 MCFOLD
bool $useCustomPocketToast() const;
384 MCFOLD
bool $isModal() const;
386 MCFOLD
bool $isEditorMode() const;
388 MCAPI
bool $isShowingMenu() const;
390 MCAPI
bool $shouldStealMouse() const;
392 MCFOLD
bool $screenIsNotFlushable() const;
394 MCFOLD
bool $alwaysAcceptsInput() const;
396 MCFOLD
bool $screenDrawsLast() const;
398 MCFOLD
bool $isPlayScreen() const;
400 MCFOLD
bool $renderOnlyWhenTopMost() const;
402 MCFOLD
bool $lowFreqRendering() const;
404 MCAPI
bool $ignoreAsTop() const;
406 MCFOLD
bool $shouldBeSkippedInAutomation() const;
408 MCAPI
int $getWidth();
410 MCAPI
int $getHeight();
412 MCFOLD
void $reload();
414 MCAPI ::EyeRenderingModeBit $getEyeRenderingMode() const;
416 MCFOLD ::ui::SceneType $getSceneType() const;
418 MCAPI ::std::
string $getScreenName() const;
420 MCAPI
bool $equalsScreenName(::std::string_view comparison) const;
422 MCAPI
bool $containsScreenNameSubstring(::std::string_view substring) const;
424 MCAPI ::std::
string $getRawScreenName() const;
426 MCFOLD ::std::
string $getRoute() const;
428 MCFOLD ::std::
string $getScreenTelemetryName() const;
430 MCFOLD
void $addEventProperties(::std::unordered_map<::std::
string, ::std::
string>&) const;
432 MCFOLD
int $getScreenVersion() const;
434 MCFOLD
void $processBufferedTextCharEvents(::std::vector<::TextCharEventData> const&);
436 MCFOLD
bool $getShouldSendEvents();
438 MCFOLD
void $setShouldSendEvents(
bool);
440 MCFOLD
bool $getWantsTextOnly();
442 MCFOLD
void $setWantsTextOnly(
bool);
444 MCFOLD
void $onDelete(::CachedScenes&, ::TaskGroup&);
446 MCFOLD
bool $isGamepadCursorEnabled() const;
448 MCFOLD
bool $isGamepadDeflectionModeEnabled() const;
450 MCFOLD ::glm::vec2 const& $getGamepadCursorPosition() const;
452 MCFOLD
void $cleanInputComponents();
454 MCAPI ::std::weak_ptr<::AbstractSceneProxy> $getProxy();
456 MCFOLD
bool $canBePushed() const;
458 MCFOLD
bool $canBePopped() const;
460 MCAPI
bool $canBeTransitioned() const;
462 MCAPI
void $onScreenExit(
bool,
bool, ::std::shared_ptr<::AbstractScene>);
464 MCAPI
void $onScreenEntrance(
bool,
bool);
466 MCFOLD
bool $isEntering() const;
468 MCAPI
bool $isExiting() const;
470 MCFOLD
void $schedulePop();
472 MCFOLD
bool $isTerminating() const;
474 MCFOLD
bool $loadScreenImmediately() const;
476 MCFOLD
bool $forceUpdateActiveSceneStackWhenPushed() const;
478 MCFOLD ::RectangleArea $getAreaOfControlByName(::std::
string const&) const;
480 MCAPI
bool $hasFinishedLoading() const;
482 MCAPI
void $sendScreenEvent(::std::
string const& eventName, ::std::
string const& eventData);
484 MCFOLD
void $setScreenState(::std::vector<::std::pair<::std::string_view, ::std::string_view>> const&);
486 MCFOLD ::Bedrock::NonOwnerPointer<::OreUI::Debug::ISceneDataProvider const> $getDebugDataProvider() const;
488 MCAPI
void $onLoadFailed(
char const*,
char const*);
490 MCAPI
void $onViewReused();
492 MCAPI
void $onReusedViewReleased();
494 MCAPI
bool $isInputEnabled() const;
Definition AbstractSceneProxy.h:5
Definition AbstractScreenSetupCleanupStrategy.h:5
Definition CachedScenes.h:5
Definition MinecraftUIFrameUpdateContext.h:5
Definition ISceneDataProvider.h:7
Definition IViewProvider.h:7
Definition RouterLocation.h:7
static MCAPI void ** $vftableForIScene()
static MCAPI void ** $vftableForAbstractScene()
Definition RectangleArea.h:5
Definition ScreenContext.h:5
Definition TaskGroup.h:55
Definition FrameRenderObject.h:5
Definition PointerLocationEventData.h:5
Definition ScreenSizeData.h:5
Definition TextCharEventData.h:5
Definition TouchPadTouchEventData.h:5