Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
SceneStack.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/GameEventNotification.h"
7#include "mc/client/gui/SceneType.h"
8#include "mc/client/gui/oreui/routing/RouteAction.h"
9#include "mc/client/gui/screens/interfaces/ISceneStack.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
11#include "mc/deps/core/utility/pub_sub/Publisher.h"
12#include "mc/deps/core/utility/pub_sub/Subscription.h"
13#include "mc/platform/brstd/function_ref.h"
14
15// auto generated forward declare list
16// clang-format off
17class AbstractScene;
18class CachedScenes;
19class OptionRegistry;
20class SceneStackProxy;
21class TaskGroup;
23struct ScreenThreshold;
25namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
26// clang-format on
27
28class SceneStack : public ::ISceneStack {
29public:
30 // SceneStack inner types declare
31 // clang-format off
32 class SceneStackEvent;
33 class PushScreenEvent;
34 class PopScreenEvent;
36 class FlushScreenEvent;
38 class RouteActionEvent;
39 // clang-format on
40
41 // SceneStack inner types define
42 class SceneStackEvent {
43 public:
44 // SceneStackEvent inner types define
45 enum class EventType : int {
46 Push = 0,
47 Pop = 1,
48 PopRangeOfType = 2,
49 Flush = 3,
50 Reload = 4,
51 RouteAction = 5,
52 };
53
54 public:
55 // member variables
56 // NOLINTBEGIN
57 ::ll::TypedStorage<4, 4, ::SceneStack::SceneStackEvent::EventType> mType;
58 // NOLINTEND
59
60 public:
61 // virtual functions
62 // NOLINTBEGIN
63 virtual ~SceneStackEvent() = default;
64 // NOLINTEND
65 };
66
67 class PushScreenEvent : public ::SceneStack::SceneStackEvent {
68 public:
69 // member variables
70 // NOLINTBEGIN
71 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::AbstractScene>> mScene;
72 ::ll::TypedStorage<8, 48, ::std::optional<::OreUI::RouteAction>> mRouteAction;
73 // NOLINTEND
74
75 public:
76 // virtual functions
77 // NOLINTBEGIN
78 virtual ~PushScreenEvent() /*override*/ = default;
79 // NOLINTEND
80 };
81
82 class PopScreenEvent : public ::SceneStack::SceneStackEvent {
83 public:
84 // member variables
85 // NOLINTBEGIN
86 ::ll::TypedStorage<4, 4, int> mPopCount;
87 ::ll::TypedStorage<8, 48, ::std::optional<::OreUI::RouteAction>> mRouteAction;
88 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mExpectedScreenNames;
89 // NOLINTEND
90
91 public:
92 // virtual functions
93 // NOLINTBEGIN
94 virtual ~PopScreenEvent() /*override*/ = default;
95 // NOLINTEND
96 };
97
98 class PopRangeOfTypeScreenEvent : public ::SceneStack::SceneStackEvent {
99 public:
100 // member variables
101 // NOLINTBEGIN
102 ::ll::TypedStorage<4, 4, ::ui::SceneType> mSceneType;
103 ::ll::TypedStorage<4, 4, ::ui::SceneType> mSceneTypeExclusions;
104 ::ll::TypedStorage<4, 4, int> mPopCount;
105 // NOLINTEND
106
107 public:
108 // virtual functions
109 // NOLINTBEGIN
110 virtual ~PopRangeOfTypeScreenEvent() /*override*/ = default;
111 // NOLINTEND
112 };
113
114 class FlushScreenEvent : public ::SceneStack::SceneStackEvent {
115 public:
116 // member variables
117 // NOLINTBEGIN
118 ::ll::TypedStorage<1, 1, bool> mIgnoreNotFlushableFlag;
119 ::ll::TypedStorage<1, 1, bool> mIgnoreTransitions;
120 ::ll::TypedStorage<8, 64, ::std::function<void()>> mPostFlushCallback;
121 // NOLINTEND
122
123 public:
124 // virtual functions
125 // NOLINTBEGIN
126 virtual ~FlushScreenEvent() /*override*/ = default;
127 // NOLINTEND
128 };
129
130 class ReloadScreenEvent : public ::SceneStack::SceneStackEvent {
131 public:
132 // virtual functions
133 // NOLINTBEGIN
134 virtual ~ReloadScreenEvent() /*override*/ = default;
135 // NOLINTEND
136 };
137
138 class RouteActionEvent : public ::SceneStack::SceneStackEvent {
139 public:
140 // member variables
141 // NOLINTBEGIN
142 ::ll::TypedStorage<8, 40, ::OreUI::RouteAction> mRouteAction;
143 // NOLINTEND
144
145 public:
146 // virtual functions
147 // NOLINTBEGIN
148 virtual ~RouteActionEvent() /*override*/ = default;
149 // NOLINTEND
150 };
151
152public:
153 // member variables
154 // NOLINTBEGIN
155 ::ll::TypedStorage<8, 24, ::std::vector<::ISceneStack::SceneElement>> mScreenStack;
156 ::ll::TypedStorage<8, 8, ::CachedScenes&> mCachedScreens;
157 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::SceneStack::SceneStackEvent>>> mStackEvents;
158 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::SceneStack::SceneStackEvent>>> mQueuedStackEvents;
159 ::ll::TypedStorage<8, 24, ::std::vector<::ScreenThreshold>> mScreenThresholds;
160 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mDestroyScreenTaskGroup;
161 ::ll::TypedStorage<4, 4, int> mActiveStackSize;
162 ::ll::TypedStorage<4, 4, int> mScheduledScreenPushCount;
163 ::ll::TypedStorage<4, 4, int> mScheduledScreenPopCount;
164 ::ll::TypedStorage<1, 1, bool> mScreenNeedsEntrance;
165 ::ll::TypedStorage<8, 32, ::std::string> mLastPoppedScreenName;
166 ::ll::TypedStorage<1, 1, bool> mChangedThisFrame;
167 ::ll::TypedStorage<1, 1, bool> mScreenIsTicking;
168 ::ll::TypedStorage<1, 1, bool> mReloadScenesOnNextPop;
169 ::ll::TypedStorage<1, 1, bool> mDeferUpdatesUntilNextTick;
170 ::ll::TypedStorage<1, 1, bool> mBufferTextCharEvents;
171 ::ll::TypedStorage<8, 24, ::std::vector<::TextCharEventData>> mBufferedTextCharEventData;
172 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::OptionRegistry>> mOptions;
173 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mAsyncLoadOptionSubscription;
174 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mScreenAnimationsSubscription;
175 ::ll::TypedStorage<8, 128, ::Bedrock::PubSub::Publisher<void(), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
176 mSceneStackDestroyedPublisher;
177 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<void*, ::std::function<void(::AbstractScene&)>>>>
178 mSceneChangeCallbacks;
179 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<void*, ::std::function<void(::AbstractScene&)>>>>
180 mPrePushSceneCallbacks;
181 ::ll::TypedStorage<
182 8,
183 24,
184 ::std::vector<::std::pair<
185 void*,
186 ::std::function<void(::std::shared_ptr<::AbstractScene>, ::std::optional<::OreUI::RouteAction>)>>>>
187 mPushSceneCallbacks;
188 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<void*, ::std::function<void(::AbstractScene*)>>>>
189 mPrePopSceneCallbacks;
190 ::ll::TypedStorage<
191 8,
192 24,
193 ::std::vector<::std::pair<
194 void*,
195 ::std::function<void(::std::shared_ptr<::AbstractScene>, bool, ::std::optional<::OreUI::RouteAction>)>>>>
196 mPopSceneCallbacks;
197 ::ll::TypedStorage<
198 8,
199 24,
200 ::std::vector<
201 ::std::pair<void*, ::std::function<void(::std::vector<::std::shared_ptr<::AbstractScene>> const&)>>>>
202 mPopRangeSceneCallbacks;
203 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<void*, ::std::function<void(::OreUI::RouteAction const&)>>>>
204 mRouteActionCallbacks;
205 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SceneStackProxy>> mProxy;
206 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::UIEventCoordinator>> mUIEventCoordinator;
207 ::ll::TypedStorage<8, 64, ::std::function<bool()>> mGetSuspended;
208 // NOLINTEND
209
210public:
211 // prevent constructor by default
212 SceneStack& operator=(SceneStack const&);
213 SceneStack(SceneStack const&);
214 SceneStack();
215
216public:
217 // virtual functions
218 // NOLINTBEGIN
219 virtual ~SceneStack() /*override*/;
220
221 virtual void reload() /*override*/;
222
223 virtual void setOptions(::std::weak_ptr<::OptionRegistry> options) /*override*/;
224
225 virtual void
226 registerSceneChangeCallback(void* token, ::std::function<void(::AbstractScene&)> sceneChangeCallback) /*override*/;
227
228 virtual void unregisterSceneChangeCallback(void* token) /*override*/;
229
230 virtual void registerPrePushSceneCallback(
231 void* token,
232 ::std::function<void(::AbstractScene&)> prePushSceneCallback
233 ) /*override*/;
234
235 virtual void unregisterPrePushSceneCallback(void* token) /*override*/;
236
237 virtual void registerPushSceneCallback(
238 void* token,
239 ::std::function<void(::std::shared_ptr<::AbstractScene>, ::std::optional<::OreUI::RouteAction>)>
240 pushSceneCallback
241 ) /*override*/;
242
243 virtual void unregisterPushSceneCallback(void* token) /*override*/;
244
245 virtual void
246 registerPrePopSceneCallback(void* token, ::std::function<void(::AbstractScene*)> prePopSceneCallback) /*override*/;
247
248 virtual void unregisterPrePopSceneCallback(void* token) /*override*/;
249
250 virtual void registerPopSceneCallback(
251 void* token,
252 ::std::function<void(::std::shared_ptr<::AbstractScene>, bool, ::std::optional<::OreUI::RouteAction>)>
253 popSceneCallback
254 ) /*override*/;
255
256 virtual void unregisterPopSceneCallback(void* token) /*override*/;
257
258 virtual void registerPopRangeSceneCallback(
259 void* token,
260 ::std::function<void(::std::vector<::std::shared_ptr<::AbstractScene>> const&)> popRangeSceneCallback
261 ) /*override*/;
262
263 virtual void unregisterPopRangeSceneCallback(void* token) /*override*/;
264
265 virtual void registerRouteActionCallback(
266 void* token,
267 ::std::function<void(::OreUI::RouteAction const&)> routeActionCallback
268 ) /*override*/;
269
270 virtual void unregisterRouteActionCallback(void* token) /*override*/;
271
272 virtual void forEachVisibleScreen(
273 ::brstd::function_ref<void(::AbstractScene&)> callback,
274 bool tickedLastFrame,
275 bool splitscreenRenderBypassThisFrame
276 ) /*override*/;
277
278 virtual void forEachScreen(::brstd::function_ref<bool(::AbstractScene&)> callback, bool topDown) /*override*/;
279
280 virtual void forEachScreenConst(::brstd::function_ref<bool(::AbstractScene const&)> callback, bool topDown) const
281 /*override*/;
282
283 virtual void forEachAlwaysAcceptInputScreen(
284 ::brstd::function_ref<void(::AbstractScene&)> callback,
285 ::AbstractScene const* ignoreScreen
286 ) /*override*/;
287
288 virtual void
289 forEachAlwaysAcceptInputScreenWithTop(::brstd::function_ref<void(::AbstractScene&)> callback) /*override*/;
290
291 virtual void pushScreenWithRouteAction(
292 ::std::shared_ptr<::AbstractScene> newScreen,
293 ::OreUI::RouteAction const& routeAction
294 ) /*override*/;
295
296 virtual void popScreenWithRouteAction(::OreUI::RouteAction const& routeAction) /*override*/;
297
298 virtual void scheduleRouteAction(::OreUI::RouteAction const& routeAction) /*override*/;
299
300 virtual void pushScreen(::std::shared_ptr<::AbstractScene> newScreen, bool flush) /*override*/;
301
302 virtual void schedulePopScreen(int totalPopNumber) /*override*/;
303
304 virtual void
305 schedulePopScreenWithExpectedNames(::std::vector<::std::string> const& expectedScreenNames) /*override*/;
306
307 virtual void flushStack(::ISceneStack::FlushMode mode, ::std::function<void()> postFlushCallback) /*override*/;
308
309 virtual void deferUpdatesUntilNextTick() /*override*/;
310
311 virtual ::std::optional<uint64> getFirstSceneIndexOfSceneType(::ui::SceneType sceneType) const /*override*/;
312
313 virtual bool popScreensBackTo(::ui::SceneType const sceneType) /*override*/;
314
315 virtual bool popScreensBackToFirstInstanceOf(::ui::SceneType const sceneType) /*override*/;
316
317 virtual bool popTopScreensOfType(::ui::SceneType const sceneType) /*override*/;
318
319 virtual bool update() /*override*/;
320
321 virtual void resetScreenChangeDirtyFlag() /*override*/;
322
323 virtual bool hasChangedThisFrame() const /*override*/;
324
325 virtual bool isEmpty() const /*override*/;
326
327 virtual uint64 getSize() const /*override*/;
328
329 virtual void setScreenTickingFlag(bool screenIsTicking) /*override*/;
330
331 virtual bool getScreenTickingFlag() const /*override*/;
332
333 virtual ::ui::SceneType getNonTerminatingSceneType() const /*override*/;
334
335 virtual ::std::vector<::std::string> getScreenNames() const /*override*/;
336
337 virtual ::std::vector<::std::string> getScreenTelemetryNames() const /*override*/;
338
339 virtual ::std::string getScreenName() const /*override*/;
340
341 virtual ::std::string getScreenTelemetry() const /*override*/;
342
343 virtual ::std::string const& getLastPoppedScreenName() const /*override*/;
344
345 virtual void handleLicenseChanged() /*override*/;
346
347 virtual void onGameEventNotification(::ui::GameEventNotification notification) /*override*/;
348
349 virtual ::AbstractScene* getTopScene() /*override*/;
350
351 virtual ::AbstractScene const* getTopScene() const /*override*/;
352
353 virtual ::std::shared_ptr<::AbstractScene> getTopSceneShared() const /*override*/;
354
355 virtual ::AbstractScene* getActiveScene() /*override*/;
356
357 virtual ::AbstractScene const* getActiveScene() const /*override*/;
358
359 virtual ::std::shared_ptr<::AbstractScene> getSharedNonTerminatingActiveScene() /*override*/;
360
361 virtual ::std::shared_ptr<::AbstractScene const> const getSharedNonTerminatingActiveScene() const /*override*/;
362
363 virtual ::gsl::span<::ISceneStack::SceneElement const> getScreenStackView() const /*override*/;
364
365 virtual ::std::vector<::ISceneStack::PendingSceneStackChange> getPendingSceneStackChanges() const /*override*/;
366
367 virtual int getScheduledPopCount() const /*override*/;
368
369 virtual bool isScreenReplaceable() const /*override*/;
370
371 virtual void handleTextChar(::std::string_view inputUtf8) /*override*/;
372
373 virtual void setBufferTextCharEvents(bool pushTextCharEvents) /*override*/;
374
375 virtual bool isBufferingTextCharEvents() const /*override*/;
376
377 virtual bool isOnSceneStack(::ui::SceneType sceneType) const /*override*/;
378
379 virtual bool isOnSceneStack(::std::string_view screenName) const /*override*/;
380
381 virtual ::SceneStackProxy* getProxy() /*override*/;
382
383 virtual bool hasScheduledScreens() const /*override*/;
384
385 virtual bool hasScheduledEvents() const /*override*/;
386
387 virtual void setScreenThreshold(::ScreenThreshold const& screenThreshold) /*override*/;
388
389 virtual ::Bedrock::PubSub::Subscription
390 registerSceneStackDestroyedListener(::std::function<void()> callback) /*override*/;
391 // NOLINTEND
392
393public:
394 // member functions
395 // NOLINTBEGIN
396 MCNAPI SceneStack(
397 ::CachedScenes& cachedScenes,
398 ::Bedrock::NotNullNonOwnerPtr<::UIEventCoordinator> const& uiEventCoordinator,
399 ::std::function<bool()> const& getSuspended,
400 ::std::function<::std::unique_ptr<::TaskGroup>(::std::string)> const& taskGroupProvider
401 );
402
403 MCNAPI bool _animationsEnabled() const;
404
405 MCNAPI bool _popScreens(
406 int& popCount,
407 bool ignoreTransitions,
408 ::std::optional<::OreUI::RouteAction> routeAction,
409 ::std::vector<::std::string> const& expectedScreenNames
410 );
411
413 int totalPopNumber,
414 ::std::optional<::OreUI::RouteAction> routeAction,
415 ::std::vector<::std::string> const& expectedScreenNames
416 );
417
419 ::std::shared_ptr<::AbstractScene> newScreen,
420 bool flush,
421 ::std::optional<::OreUI::RouteAction> routeAction
422 );
423 // NOLINTEND
424
425public:
426 // static functions
427 // NOLINTBEGIN
428 MCNAPI static void _forEachVisibleScreen(
429 ::brstd::function_ref<void(::AbstractScene&)> callback,
430 ::std::function<::AbstractScene*(int)> getScreen,
431 bool,
432 bool splitscreenRenderBypassThisFrame,
433 uint64 topStackIndex,
434 uint64 startIndex,
435 uint64 endIndex,
436 bool renderDrawLastScreens
437 );
438
439 MCNAPI static void forEachVisibleScreen(
440 ::brstd::function_ref<void(::AbstractScene&)> callback,
441 ::std::function<::AbstractScene*(int)> getScreen,
442 bool tickedLastFrame,
443 bool splitscreenRenderBypassThisFrame,
444 int size
445 );
446 // NOLINTEND
447
448public:
449 // constructor thunks
450 // NOLINTBEGIN
451 MCNAPI void* $ctor(
452 ::CachedScenes& cachedScenes,
453 ::Bedrock::NotNullNonOwnerPtr<::UIEventCoordinator> const& uiEventCoordinator,
454 ::std::function<bool()> const& getSuspended,
455 ::std::function<::std::unique_ptr<::TaskGroup>(::std::string)> const& taskGroupProvider
456 );
457 // NOLINTEND
458
459public:
460 // destructor thunk
461 // NOLINTBEGIN
462 MCNAPI void $dtor();
463 // NOLINTEND
464
465public:
466 // virtual function thunks
467 // NOLINTBEGIN
468 MCNAPI void $reload();
469
470 MCNAPI void $setOptions(::std::weak_ptr<::OptionRegistry> options);
471
472 MCNAPI void $registerSceneChangeCallback(void* token, ::std::function<void(::AbstractScene&)> sceneChangeCallback);
473
474 MCNAPI void $unregisterSceneChangeCallback(void* token);
475
476 MCNAPI void
477 $registerPrePushSceneCallback(void* token, ::std::function<void(::AbstractScene&)> prePushSceneCallback);
478
479 MCNAPI void $unregisterPrePushSceneCallback(void* token);
480
482 void* token,
483 ::std::function<void(::std::shared_ptr<::AbstractScene>, ::std::optional<::OreUI::RouteAction>)>
484 pushSceneCallback
485 );
486
487 MCNAPI void $unregisterPushSceneCallback(void* token);
488
489 MCNAPI void $registerPrePopSceneCallback(void* token, ::std::function<void(::AbstractScene*)> prePopSceneCallback);
490
491 MCNAPI void $unregisterPrePopSceneCallback(void* token);
492
494 void* token,
495 ::std::function<void(::std::shared_ptr<::AbstractScene>, bool, ::std::optional<::OreUI::RouteAction>)>
496 popSceneCallback
497 );
498
499 MCNAPI void $unregisterPopSceneCallback(void* token);
500
502 void* token,
503 ::std::function<void(::std::vector<::std::shared_ptr<::AbstractScene>> const&)> popRangeSceneCallback
504 );
505
506 MCNAPI void $unregisterPopRangeSceneCallback(void* token);
507
508 MCNAPI void
509 $registerRouteActionCallback(void* token, ::std::function<void(::OreUI::RouteAction const&)> routeActionCallback);
510
511 MCNAPI void $unregisterRouteActionCallback(void* token);
512
514 ::brstd::function_ref<void(::AbstractScene&)> callback,
515 bool tickedLastFrame,
516 bool splitscreenRenderBypassThisFrame
517 );
518
519 MCNAPI void $forEachScreen(::brstd::function_ref<bool(::AbstractScene&)> callback, bool topDown);
520
521 MCNAPI void $forEachScreenConst(::brstd::function_ref<bool(::AbstractScene const&)> callback, bool topDown) const;
522
524 ::brstd::function_ref<void(::AbstractScene&)> callback,
525 ::AbstractScene const* ignoreScreen
526 );
527
528 MCNAPI void $forEachAlwaysAcceptInputScreenWithTop(::brstd::function_ref<void(::AbstractScene&)> callback);
529
530 MCNAPI void
531 $pushScreenWithRouteAction(::std::shared_ptr<::AbstractScene> newScreen, ::OreUI::RouteAction const& routeAction);
532
533 MCNAPI void $popScreenWithRouteAction(::OreUI::RouteAction const& routeAction);
534
535 MCNAPI void $scheduleRouteAction(::OreUI::RouteAction const& routeAction);
536
537 MCNAPI void $pushScreen(::std::shared_ptr<::AbstractScene> newScreen, bool flush);
538
539 MCNAPI void $schedulePopScreen(int totalPopNumber);
540
541 MCNAPI void $schedulePopScreenWithExpectedNames(::std::vector<::std::string> const& expectedScreenNames);
542
543 MCNAPI void $flushStack(::ISceneStack::FlushMode mode, ::std::function<void()> postFlushCallback);
544
546
547 MCNAPI ::std::optional<uint64> $getFirstSceneIndexOfSceneType(::ui::SceneType sceneType) const;
548
549 MCNAPI bool $popScreensBackTo(::ui::SceneType const sceneType);
550
551 MCNAPI bool $popScreensBackToFirstInstanceOf(::ui::SceneType const sceneType);
552
553 MCNAPI bool $popTopScreensOfType(::ui::SceneType const sceneType);
554
555 MCNAPI bool $update();
556
558
559 MCNAPI bool $hasChangedThisFrame() const;
560
561 MCNAPI bool $isEmpty() const;
562
563 MCNAPI uint64 $getSize() const;
564
565 MCNAPI void $setScreenTickingFlag(bool screenIsTicking);
566
567 MCNAPI bool $getScreenTickingFlag() const;
568
569 MCNAPI ::ui::SceneType $getNonTerminatingSceneType() const;
570
571 MCNAPI ::std::vector<::std::string> $getScreenNames() const;
572
573 MCNAPI ::std::vector<::std::string> $getScreenTelemetryNames() const;
574
575 MCNAPI ::std::string $getScreenName() const;
576
577 MCNAPI ::std::string $getScreenTelemetry() const;
578
579 MCNAPI ::std::string const& $getLastPoppedScreenName() const;
580
582
583 MCNAPI void $onGameEventNotification(::ui::GameEventNotification notification);
584
586
587 MCNAPI ::AbstractScene const* $getTopScene() const;
588
589 MCNAPI ::std::shared_ptr<::AbstractScene> $getTopSceneShared() const;
590
592
593 MCNAPI ::AbstractScene const* $getActiveScene() const;
594
596
597 MCNAPI ::std::shared_ptr<::AbstractScene const> const $getSharedNonTerminatingActiveScene() const;
598
599 MCNAPI ::gsl::span<::ISceneStack::SceneElement const> $getScreenStackView() const;
600
602
603 MCNAPI int $getScheduledPopCount() const;
604
605 MCNAPI bool $isScreenReplaceable() const;
606
607 MCNAPI void $handleTextChar(::std::string_view inputUtf8);
608
609 MCNAPI void $setBufferTextCharEvents(bool pushTextCharEvents);
610
611 MCNAPI bool $isBufferingTextCharEvents() const;
612
613 MCNAPI bool $isOnSceneStack(::ui::SceneType sceneType) const;
614
615 MCNAPI bool $isOnSceneStack(::std::string_view screenName) const;
616
618
619 MCNAPI bool $hasScheduledScreens() const;
620
621 MCNAPI bool $hasScheduledEvents() const;
622
623 MCNAPI void $setScreenThreshold(::ScreenThreshold const& screenThreshold);
624
625 MCNAPI ::Bedrock::PubSub::Subscription $registerSceneStackDestroyedListener(::std::function<void()> callback);
626 // NOLINTEND
627};
Definition AbstractScene.h:5
Definition CachedScenes.h:5
Definition ISceneStack.h:5
Definition OptionRegistry.h:5
Definition SceneStackProxy.h:5
Definition SceneStack.h:31
Definition SceneStack.h:29
Definition SceneStack.h:27
Definition SceneStack.h:25
Definition SceneStack.h:33
Definition SceneStack.h:35
Definition SceneStack.h:19
Definition SceneStack.h:5
MCAPI void $registerSceneChangeCallback(void *token, ::std::function< void(::AbstractScene &)> sceneChangeCallback)
MCAPI bool $popScreensBackToFirstInstanceOf(::ui::SceneType const sceneType)
static MCAPI void _forEachVisibleScreen(::brstd::function_ref< void(::AbstractScene &)> callback, ::std::function<::AbstractScene *(int)> getScreen, bool, bool splitscreenRenderBypassThisFrame, uint64 topStackIndex, uint64 startIndex, uint64 endIndex, bool renderDrawLastScreens)
MCAPI void $setScreenThreshold(::ScreenThreshold const &screenThreshold)
MCAPI bool $isOnSceneStack(::ui::SceneType sceneType) const
MCAPI void $forEachAlwaysAcceptInputScreen(::brstd::function_ref< void(::AbstractScene &)> callback, ::AbstractScene const *ignoreScreen)
MCAPI void $forEachVisibleScreen(::brstd::function_ref< void(::AbstractScene &)> callback, bool tickedLastFrame, bool splitscreenRenderBypassThisFrame)
MCAPI bool $update()
MCAPI void $forEachAlwaysAcceptInputScreenWithTop(::brstd::function_ref< void(::AbstractScene &)> callback)
MCAPI void $pushScreen(::std::shared_ptr<::AbstractScene > newScreen, bool flush)
MCAPI void $popScreenWithRouteAction(::OreUI::RouteAction const &routeAction)
MCAPI void $setOptions(::std::weak_ptr<::OptionRegistry > options)
MCAPI bool $isEmpty() const
MCAPI void _schedulePushScreen(::std::shared_ptr<::AbstractScene > newScreen, bool flush, ::std::optional<::OreUI::RouteAction > routeAction)
MCAPI ::std::optional< uint64 > $getFirstSceneIndexOfSceneType(::ui::SceneType sceneType) const
MCAPI::Bedrock::PubSub::Subscription $registerSceneStackDestroyedListener(::std::function< void()> callback)
MCAPI bool $hasScheduledEvents() const
MCAPI void $unregisterPopRangeSceneCallback(void *token)
MCAPI void $scheduleRouteAction(::OreUI::RouteAction const &routeAction)
MCAPI int $getScheduledPopCount() const
MCAPI::std::string $getScreenTelemetry() const
MCAPI uint64 $getSize() const
MCAPI bool _popScreens(int &popCount, bool ignoreTransitions, ::std::optional<::OreUI::RouteAction > routeAction, ::std::vector<::std::string > const &expectedScreenNames)
MCAPI void $unregisterPrePopSceneCallback(void *token)
MCAPI bool _animationsEnabled() const
MCAPI void $forEachScreenConst(::brstd::function_ref< bool(::AbstractScene const &)> callback, bool topDown) const
MCAPI void $deferUpdatesUntilNextTick()
MCAPI bool $isBufferingTextCharEvents() const
MCAPI void $unregisterRouteActionCallback(void *token)
MCAPI ::std::shared_ptr<::AbstractScene > $getTopSceneShared() const
MCAPI ::std::vector<::std::string > $getScreenTelemetryNames() const
MCAPI ::gsl::span<::ISceneStack::SceneElement const > $getScreenStackView() const
MCAPI ::std::vector<::ISceneStack::PendingSceneStackChange > $getPendingSceneStackChanges() const
MCAPI void $registerPrePopSceneCallback(void *token, ::std::function< void(::AbstractScene *)> prePopSceneCallback)
MCAPI void $unregisterPushSceneCallback(void *token)
MCAPI ::std::shared_ptr<::AbstractScene > $getSharedNonTerminatingActiveScene()
MCAPI void $setScreenTickingFlag(bool screenIsTicking)
MCAPI bool $popTopScreensOfType(::ui::SceneType const sceneType)
MCAPI void $pushScreenWithRouteAction(::std::shared_ptr<::AbstractScene > newScreen, ::OreUI::RouteAction const &routeAction)
MCAPI void $dtor()
MCAPI void $unregisterPopSceneCallback(void *token)
MCAPI::ui::SceneType $getNonTerminatingSceneType() const
MCAPI void $registerPopSceneCallback(void *token, ::std::function< void(::std::shared_ptr<::AbstractScene >, bool, ::std::optional<::OreUI::RouteAction >)> popSceneCallback)
MCAPI::std::string const & $getLastPoppedScreenName() const
MCAPI void $resetScreenChangeDirtyFlag()
MCAPI void $schedulePopScreen(int totalPopNumber)
MCAPI::AbstractScene * $getTopScene()
MCAPI bool $isScreenReplaceable() const
MCAPI void $unregisterSceneChangeCallback(void *token)
MCAPI void $schedulePopScreenWithExpectedNames(::std::vector<::std::string > const &expectedScreenNames)
MCAPI void $registerPopRangeSceneCallback(void *token, ::std::function< void(::std::vector<::std::shared_ptr<::AbstractScene > > const &)> popRangeSceneCallback)
MCAPI::SceneStackProxy * $getProxy()
MCAPI bool $hasChangedThisFrame() const
MCAPI void $handleLicenseChanged()
MCAPI void * $ctor(::CachedScenes &cachedScenes, ::Bedrock::NotNullNonOwnerPtr<::UIEventCoordinator > const &uiEventCoordinator, ::std::function< bool()> const &getSuspended, ::std::function<::std::unique_ptr<::TaskGroup >(::std::string)> const &taskGroupProvider)
MCAPI void $registerPrePushSceneCallback(void *token, ::std::function< void(::AbstractScene &)> prePushSceneCallback)
MCAPI void $registerRouteActionCallback(void *token, ::std::function< void(::OreUI::RouteAction const &)> routeActionCallback)
MCAPI void $registerPushSceneCallback(void *token, ::std::function< void(::std::shared_ptr<::AbstractScene >, ::std::optional<::OreUI::RouteAction >)> pushSceneCallback)
MCAPI bool $getScreenTickingFlag() const
MCAPI bool $hasScheduledScreens() const
MCAPI bool $popScreensBackTo(::ui::SceneType const sceneType)
MCAPI void $unregisterPrePushSceneCallback(void *token)
MCAPI void _schedulePopScreen(int totalPopNumber, ::std::optional<::OreUI::RouteAction > routeAction, ::std::vector<::std::string > const &expectedScreenNames)
MCAPI void $handleTextChar(::std::string_view inputUtf8)
MCAPI::std::string $getScreenName() const
MCAPI::AbstractScene * $getActiveScene()
MCAPI void $setBufferTextCharEvents(bool pushTextCharEvents)
MCAPI ::std::vector<::std::string > $getScreenNames() const
MCAPI void $onGameEventNotification(::ui::GameEventNotification notification)
MCAPI void $flushStack(::ISceneStack::FlushMode mode, ::std::function< void()> postFlushCallback)
MCAPI void $reload()
MCAPI void $forEachScreen(::brstd::function_ref< bool(::AbstractScene &)> callback, bool topDown)
Definition TaskGroup.h:85
Definition UIEventCoordinator.h:5
STL namespace.
Definition ISceneStack.h:18
Definition ISceneStack.h:16
Definition ScreenThreshold.h:5
Definition TextCharEventData.h:5