3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/GameEventNotification.h"
7#include "mc/client/gui/SceneType.h"
8#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
9#include "mc/platform/brstd/function_ref.h"
34 virtual ~ISceneStack() ;
36 virtual void reload() = 0;
38 virtual void setOptions(::std::weak_ptr<::Options>) = 0;
40 virtual void registerSceneChangeCallback(
void*, ::std::function<
void(::AbstractScene&)>) = 0;
42 virtual void unregisterSceneChangeCallback(
void*) = 0;
44 virtual void registerPrePushSceneCallback(
void*, ::std::function<
void(::AbstractScene&)>) = 0;
46 virtual void unregisterPrePushSceneCallback(
void*) = 0;
48 virtual void registerPushSceneCallback(
50 ::std::function<
void(::std::shared_ptr<::AbstractScene>, ::std::optional<::OreUI::RouteAction>)>
53 virtual void unregisterPushSceneCallback(
void*) = 0;
55 virtual void registerPrePopSceneCallback(
void*, ::std::function<
void(::AbstractScene*)>) = 0;
57 virtual void unregisterPrePopSceneCallback(
void*) = 0;
59 virtual void registerPopSceneCallback(
61 ::std::function<
void(::std::shared_ptr<::AbstractScene>,
bool, ::std::optional<::OreUI::RouteAction>)>
64 virtual void unregisterPopSceneCallback(
void*) = 0;
66 virtual void forEachVisibleScreen(::brstd::function_ref<
void(::AbstractScene&)>,
bool,
bool) = 0;
68 virtual void forEachScreen(::brstd::function_ref<
bool(::AbstractScene&)>,
bool) = 0;
70 virtual void forEachScreenConst(::brstd::function_ref<
bool(::AbstractScene
const&)>,
bool)
const = 0;
73 forEachAlwaysAcceptInputScreen(::brstd::function_ref<
void(::AbstractScene&)>, ::AbstractScene
const*) = 0;
75 virtual void forEachAlwaysAcceptInputScreenWithTop(::brstd::function_ref<
void(::AbstractScene&)>) = 0;
77 virtual void pushScreenWithRouteAction(::std::shared_ptr<::AbstractScene>, ::OreUI::RouteAction
const&) = 0;
79 virtual void popScreenWithRouteAction(::OreUI::RouteAction
const&) = 0;
81 virtual void pushScreen(::std::shared_ptr<::AbstractScene>,
bool) = 0;
83 virtual void schedulePopScreen(
int) = 0;
85 virtual void schedulePopScreenWithExpectedNames(::std::vector<::std::string>
const&) = 0;
87 virtual void flushStack(
bool,
bool,
bool, ::std::function<
void()>) = 0;
89 virtual void deferUpdatesUntilNextTick() = 0;
91 virtual ::std::optional<uint64> getFirstSceneIndexOfSceneType(::ui::SceneType)
const = 0;
93 virtual bool popScreensBackTo(::ui::SceneType
const) = 0;
95 virtual bool popScreensBackToFirstInstanceOf(::ui::SceneType
const) = 0;
97 virtual bool popTopScreensOfType(::ui::SceneType
const) = 0;
99 virtual bool update() = 0;
101 virtual void resetScreenChangeDirtyFlag() = 0;
103 virtual bool hasChangedThisFrame()
const = 0;
105 virtual bool isEmpty()
const = 0;
107 virtual uint64 getSize()
const = 0;
109 virtual void setScreenTickingFlag(
bool) = 0;
111 virtual bool getScreenTickingFlag()
const = 0;
113 virtual ::ui::SceneType getNonTerminatingSceneType()
const = 0;
115 virtual ::std::vector<::std::string> getScreenNames()
const = 0;
117 virtual ::std::vector<::std::string> getScreenTelemetryNames()
const = 0;
119 virtual ::std::string getScreenName()
const = 0;
121 virtual ::std::string getScreenTelemetry()
const = 0;
123 virtual ::std::string
const& getLastPoppedScreenName()
const = 0;
125 virtual void handleLicenseChanged() = 0;
127 virtual void onGameEventNotification(::ui::GameEventNotification) = 0;
129 virtual ::AbstractScene* getTopScene() = 0;
131 virtual ::AbstractScene
const* getTopScene()
const = 0;
133 virtual ::std::shared_ptr<::AbstractScene> getTopSceneShared()
const = 0;
135 virtual ::AbstractScene* getActiveScene() = 0;
137 virtual ::AbstractScene
const* getActiveScene()
const = 0;
139 virtual ::std::shared_ptr<::AbstractScene> getSharedNonTerminatingActiveScene() = 0;
141 virtual ::std::shared_ptr<::AbstractScene const>
const getSharedNonTerminatingActiveScene()
const = 0;
143 virtual ::gsl::span<::ISceneStack::SceneElement const> getScreenStackView()
const = 0;
145 virtual int getScheduledPopCount()
const = 0;
147 virtual bool isScreenReplaceable()
const = 0;
149 virtual void handleTextChar(::std::string
const&) = 0;
151 virtual void setBufferTextCharEvents(
bool) = 0;
153 virtual bool isBufferingTextCharEvents()
const = 0;
155 virtual bool isOnSceneStack(::ui::SceneType)
const = 0;
157 virtual bool isOnSceneStack(::std::string
const&)
const = 0;
159 virtual ::SceneStackProxy* getProxy() = 0;
161 virtual bool hasScheduledScreens()
const = 0;
163 virtual bool hasScheduledEvents()
const = 0;
165 virtual void setScreenThreshold(::ScreenThreshold
const&) = 0;
167 virtual ::Bedrock::PubSub::Subscription registerSceneStackDestroyedListener(::std::function<
void()>) = 0;
Definition AbstractScene.h:5
Definition EnableNonOwnerReferences.h:7
Definition Subscription.h:10
Definition ISceneStack.h:5
Definition SceneStackProxy.h:5
Definition ISceneStack.h:13
Definition RouteAction.h:7
Definition ScreenThreshold.h:5