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/screens/AbstractScene.h"
13#include "mc/client/renderer/screen/EyeRenderingModeBit.h"
14#include "mc/deps/core/utility/NonOwnerPointer.h"
15#include "mc/deps/core/utility/pub_sub/Subscription.h"
16#include "mc/deps/input/InputMode.h"
17#include "mc/deps/input/TextboxTextUpdateReason.h"
18#include "mc/deps/input/enums/ButtonState.h"
19#include "mc/deps/input/enums/DirectionId.h"
20#include "mc/deps/input/enums/FocusImpact.h"
21#include "mc/deps/input/enums/RawInputType.h"
37namespace OreUI {
class IView; }
40namespace OreUI {
class Router; }
47class Scene :
public ::AbstractScene,
public ::OreUI::IScene {
51 ::ll::TypedStorage<4, 4, ::OreUI::ViewId const> mViewId;
52 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::OreUI::IViewProvider>> mViewProvider;
53 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::OreUI::IView>> mView;
54 ::ll::TypedStorage<8, 64, ::std::function<void()>> mOnLoadFailedCallback;
55 ::ll::TypedStorage<8, 32, ::std::string> mCurrentRoute;
56 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::OreUI::RouteModeInputHandler>> mRouteModeInputHandler;
57 ::ll::TypedStorage<1, 1, ::OreUI::SceneState> mState;
58 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnRouteChangedSubscription;
59 ::ll::TypedStorage<4, 8, ::glm::vec2> mGamepadCursorPosition;
60 ::ll::TypedStorage<2, 2, short> mCurrentPointerPositionX;
61 ::ll::TypedStorage<2, 2, short> mCurrentPointerPositionY;
62 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AbstractScreenSetupCleanupStrategy>> mScreenSetupCleanup;
63 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::AbstractSceneProxy>> mProxy;
75 virtual void onCreation() ;
77 virtual void init(::ScreenSizeData
const&) ;
79 virtual void setSize(::ScreenSizeData
const& screenSizeData) ;
81 virtual void onSetKeyboardHeight(
float) ;
83 virtual ::std::vector<::RectangleArea> getInputAreas() const ;
85 virtual
void onInternetUpdate() ;
87 virtual
void onFocusGained() ;
89 virtual
void onFocusLost() ;
91 virtual
void terminate() ;
93 virtual
void onLeave() ;
95 virtual
void onGameEventNotification(::ui::GameEventNotification) ;
97 virtual
void leaveScreen() ;
99 virtual
void preFrameTick() ;
101 virtual
void tick(
int,
int) ;
103 virtual
void frameUpdate(::MinecraftUIFrameUpdateContext&) ;
105 virtual
void applyInput(
float) ;
107 virtual
void preRenderUpdate(::ScreenContext&) ;
109 virtual
void prepareFrame(::ScreenContext&) ;
111 virtual
void render(::ScreenContext& screenContext, ::FrameRenderObject const&) ;
113 virtual
void postRenderUpdate(::ScreenContext&) ;
115 virtual
void handleInputModeChanged(::InputMode) ;
117 virtual
void handleButtonPress(uint, ::FocusImpact) ;
119 virtual
void handleButtonRelease(uint, ::FocusImpact) ;
121 virtual
void handleRawInputEvent(
int, ::RawInputType, ::ButtonState,
bool) ;
123 virtual
bool handlePointerLocation(::PointerLocationEventData const&, ::FocusImpact) ;
125 virtual
void handlePointerPressed(
bool) ;
127 virtual
void handleDirection(::DirectionId,
float,
float, ::FocusImpact) ;
129 virtual
void handleTextChar(::std::
string const&, ::FocusImpact) ;
131 virtual
void handleCaretLocation(
int, ::FocusImpact) ;
133 virtual
void handleTouchPadTouch(::TouchPadTouchEventData const&, ::FocusImpact) ;
135 virtual
void setTextboxText(::std::
string const&, ::TextboxTextUpdateReason) ;
137 virtual
void onKeyboardDismissed() ;
139 virtual
void handleLicenseChanged() ;
141 virtual
bool renderGameBehind() const ;
143 virtual
bool absorbsInput() const ;
145 virtual
bool closeOnPlayerHurt() const ;
147 virtual
bool useCustomPocketToast() const ;
149 virtual
bool isModal() const ;
151 virtual
bool isEditorMode() const ;
153 virtual
bool isShowingMenu() const ;
155 virtual
bool shouldStealMouse() const ;
157 virtual
bool screenIsNotFlushable() const ;
159 virtual
bool alwaysAcceptsInput() const ;
161 virtual
bool screenDrawsLast() const ;
163 virtual
bool isPlayScreen() const ;
165 virtual
bool renderOnlyWhenTopMost() const ;
167 virtual
bool lowFreqRendering() const ;
169 virtual
bool ignoreAsTop() const ;
171 virtual
bool shouldBeSkippedInAutomation() const ;
173 virtual
int getWidth() ;
175 virtual
int getHeight() ;
177 virtual
void reload() ;
179 virtual ::EyeRenderingModeBit getEyeRenderingMode() const ;
181 virtual ::ui::SceneType getSceneType() const ;
183 virtual ::std::
string getScreenName() const ;
185 virtual
bool equalsScreenName(::std::string_view comparison) const ;
187 virtual
bool containsScreenNameSubstring(::std::string_view substring) const ;
189 virtual ::std::
string getRawScreenName() const ;
191 virtual ::std::
string getRoute() const ;
193 virtual ::std::
string getScreenTelemetryName() const ;
195 virtual
void addEventProperties(::std::unordered_map<::std::
string, ::std::
string>&) const ;
197 virtual
int getScreenVersion() const ;
199 virtual
void processBufferedTextCharEvents(::std::vector<::TextCharEventData> const&) ;
201 virtual
bool getShouldSendEvents() ;
203 virtual
void setShouldSendEvents(
bool) ;
205 virtual
bool getWantsTextOnly() ;
207 virtual
void setWantsTextOnly(
bool) ;
209 virtual
void onDelete(::CachedScenes&, ::TaskGroup&) ;
211 virtual
bool isGamepadCursorEnabled() const ;
213 virtual
bool isGamepadDeflectionModeEnabled() const ;
215 virtual ::glm::vec2 const& getGamepadCursorPosition() const ;
217 virtual
void cleanInputComponents() ;
219 virtual ::std::weak_ptr<::AbstractSceneProxy> getProxy() ;
221 virtual
bool canBePushed() const ;
223 virtual
bool canBePopped() const ;
225 virtual
bool canBeTransitioned() const ;
227 virtual
void onScreenExit(
bool,
bool, ::std::shared_ptr<::AbstractScene>) ;
229 virtual
void onScreenEntrance(
bool,
bool) ;
231 virtual
bool isEntering() const ;
233 virtual
bool isExiting() const ;
235 virtual
void schedulePop() ;
237 virtual
bool isTerminating() const ;
239 virtual
bool loadScreenImmediately() const ;
241 virtual
bool forceUpdateActiveSceneStackWhenPushed() const ;
243 virtual ::RectangleArea getAreaOfControlByName(::std::
string const&) const ;
245 virtual
bool hasFinishedLoading() const ;
247 virtual
void sendScreenEvent(::std::
string const& eventName, ::std::
string const& eventData) ;
249 virtual
void setScreenState(::std::vector<::std::pair<::std::string_view, ::std::string_view>> const&) ;
251 virtual ::Bedrock::NonOwnerPointer<::OreUI::Debug::ISceneDataProvider const> getDebugDataProvider() const
254 virtual
void onLoadFailed(
char const*,
char const*) ;
256 virtual
void onViewReused() ;
258 virtual
void onReusedViewReleased() ;
260 virtual
bool isInputEnabled() const ;
267 ::OreUI::ViewId viewId,
268 ::Bedrock::NotNullNonOwnerPtr<::OreUI::IViewProvider> viewProvider,
269 ::OreUI::Router& router,
270 ::OreUI::RouteMode routeMode,
271 ::std::function<
void()> onLoadFailedCallback,
272 ::Bedrock::NotNullNonOwnerPtr<::OreUI::RouteModeInputHandler> routeModeInputHandler
275 MCAPI
bool _isSameScene(::std::optional<::OreUI::RouterLocation> const& currentLocation) const;
277 MCAPI
void _updateRouteAndRouteMode(
278 ::std::optional<::OreUI::RouterLocation> const& previousLocation,
279 ::std::optional<::OreUI::RouterLocation> const& currentLocation
287 ::OreUI::ViewId viewId,
288 ::Bedrock::NotNullNonOwnerPtr<::OreUI::IViewProvider> viewProvider,
289 ::OreUI::Router& router,
290 ::OreUI::RouteMode routeMode,
291 ::std::function<
void()> onLoadFailedCallback,
292 ::Bedrock::NotNullNonOwnerPtr<::OreUI::RouteModeInputHandler> routeModeInputHandler
305 MCFOLD
void $onCreation();
307 MCFOLD
void $init(::ScreenSizeData const&);
309 MCAPI
void $setSize(::ScreenSizeData const& screenSizeData);
311 MCFOLD
void $onSetKeyboardHeight(
float);
313 MCFOLD ::std::vector<::RectangleArea> $getInputAreas() const;
315 MCFOLD
void $onInternetUpdate();
317 MCFOLD
void $onFocusGained();
319 MCAPI
void $onFocusLost();
321 MCFOLD
void $terminate();
323 MCFOLD
void $onLeave();
325 MCFOLD
void $onGameEventNotification(::ui::GameEventNotification);
327 MCFOLD
void $leaveScreen();
329 MCFOLD
void $preFrameTick();
331 MCFOLD
void $tick(
int,
int);
333 MCFOLD
void $frameUpdate(::MinecraftUIFrameUpdateContext&);
335 MCFOLD
void $applyInput(
float);
337 MCFOLD
void $preRenderUpdate(::ScreenContext&);
339 MCFOLD
void $prepareFrame(::ScreenContext&);
341 MCAPI
void $render(::ScreenContext& screenContext, ::FrameRenderObject const&);
343 MCFOLD
void $postRenderUpdate(::ScreenContext&);
345 MCFOLD
void $handleInputModeChanged(::InputMode);
347 MCFOLD
void $handleButtonPress(uint, ::FocusImpact);
349 MCFOLD
void $handleButtonRelease(uint, ::FocusImpact);
351 MCFOLD
void $handleRawInputEvent(
int, ::RawInputType, ::ButtonState,
bool);
353 MCFOLD
bool $handlePointerLocation(::PointerLocationEventData const&, ::FocusImpact);
355 MCFOLD
void $handlePointerPressed(
bool);
357 MCFOLD
void $handleDirection(::DirectionId,
float,
float, ::FocusImpact);
359 MCFOLD
void $handleTextChar(::std::
string const&, ::FocusImpact);
361 MCFOLD
void $handleCaretLocation(
int, ::FocusImpact);
363 MCFOLD
void $handleTouchPadTouch(::TouchPadTouchEventData const&, ::FocusImpact);
365 MCFOLD
void $setTextboxText(::std::
string const&, ::TextboxTextUpdateReason);
367 MCFOLD
void $onKeyboardDismissed();
369 MCFOLD
void $handleLicenseChanged();
371 MCFOLD
bool $renderGameBehind() const;
373 MCAPI
bool $absorbsInput() const;
375 MCFOLD
bool $closeOnPlayerHurt() const;
377 MCFOLD
bool $useCustomPocketToast() const;
379 MCFOLD
bool $isModal() const;
381 MCFOLD
bool $isEditorMode() const;
383 MCAPI
bool $isShowingMenu() const;
385 MCAPI
bool $shouldStealMouse() const;
387 MCFOLD
bool $screenIsNotFlushable() const;
389 MCFOLD
bool $alwaysAcceptsInput() const;
391 MCFOLD
bool $screenDrawsLast() const;
393 MCFOLD
bool $isPlayScreen() const;
395 MCFOLD
bool $renderOnlyWhenTopMost() const;
397 MCFOLD
bool $lowFreqRendering() const;
399 MCAPI
bool $ignoreAsTop() const;
401 MCFOLD
bool $shouldBeSkippedInAutomation() const;
403 MCAPI
int $getWidth();
405 MCAPI
int $getHeight();
407 MCFOLD
void $reload();
409 MCAPI ::EyeRenderingModeBit $getEyeRenderingMode() const;
411 MCFOLD ::ui::SceneType $getSceneType() const;
413 MCFOLD ::std::
string $getScreenName() const;
415 MCAPI
bool $equalsScreenName(::std::string_view comparison) const;
417 MCAPI
bool $containsScreenNameSubstring(::std::string_view substring) const;
419 MCFOLD ::std::
string $getRawScreenName() const;
421 MCFOLD ::std::
string $getRoute() const;
423 MCFOLD ::std::
string $getScreenTelemetryName() const;
425 MCFOLD
void $addEventProperties(::std::unordered_map<::std::
string, ::std::
string>&) const;
427 MCFOLD
int $getScreenVersion() const;
429 MCFOLD
void $processBufferedTextCharEvents(::std::vector<::TextCharEventData> const&);
431 MCFOLD
bool $getShouldSendEvents();
433 MCFOLD
void $setShouldSendEvents(
bool);
435 MCFOLD
bool $getWantsTextOnly();
437 MCFOLD
void $setWantsTextOnly(
bool);
439 MCFOLD
void $onDelete(::CachedScenes&, ::TaskGroup&);
441 MCFOLD
bool $isGamepadCursorEnabled() const;
443 MCFOLD
bool $isGamepadDeflectionModeEnabled() const;
445 MCFOLD ::glm::vec2 const& $getGamepadCursorPosition() const;
447 MCFOLD
void $cleanInputComponents();
449 MCAPI ::std::weak_ptr<::AbstractSceneProxy> $getProxy();
451 MCFOLD
bool $canBePushed() const;
453 MCFOLD
bool $canBePopped() const;
455 MCAPI
bool $canBeTransitioned() const;
457 MCAPI
void $onScreenExit(
bool,
bool, ::std::shared_ptr<::AbstractScene>);
459 MCAPI
void $onScreenEntrance(
bool,
bool);
461 MCFOLD
bool $isEntering() const;
463 MCAPI
bool $isExiting() const;
465 MCFOLD
void $schedulePop();
467 MCFOLD
bool $isTerminating() const;
469 MCFOLD
bool $loadScreenImmediately() const;
471 MCFOLD
bool $forceUpdateActiveSceneStackWhenPushed() const;
473 MCFOLD ::RectangleArea $getAreaOfControlByName(::std::
string const&) const;
475 MCAPI
bool $hasFinishedLoading() const;
477 MCAPI
void $sendScreenEvent(::std::
string const& eventName, ::std::
string const& eventData);
479 MCFOLD
void $setScreenState(::std::vector<::std::pair<::std::string_view, ::std::string_view>> const&);
481 MCFOLD ::Bedrock::NonOwnerPointer<::OreUI::Debug::ISceneDataProvider const> $getDebugDataProvider() const;
483 MCAPI
void $onLoadFailed(
char const*,
char const*);
485 MCAPI
void $onViewReused();
487 MCAPI
void $onReusedViewReleased();
489 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:57
Definition FrameRenderObject.h:5
Definition PointerLocationEventData.h:8
Definition ScreenSizeData.h:5
Definition TextCharEventData.h:5
Definition TouchPadTouchEventData.h:5