Add XCUI runtime screen stack helper
This commit is contained in:
54
engine/include/XCEngine/UI/Runtime/UIScreenStackController.h
Normal file
54
engine/include/XCEngine/UI/Runtime/UIScreenStackController.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
|
||||
#include <XCEngine/UI/Runtime/UISystem.h>
|
||||
|
||||
#include <cstddef>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace UI {
|
||||
namespace Runtime {
|
||||
|
||||
struct UIScreenStackEntry {
|
||||
UIScreenLayerId layerId = 0;
|
||||
UIScreenAsset asset = {};
|
||||
UIScreenLayerOptions options = {};
|
||||
};
|
||||
|
||||
class UIScreenStackController {
|
||||
public:
|
||||
explicit UIScreenStackController(UISystem& system);
|
||||
|
||||
UIScreenLayerId PushScreen(
|
||||
const UIScreenAsset& asset,
|
||||
const UIScreenLayerOptions& options = UIScreenLayerOptions());
|
||||
UIScreenLayerId PushMenu(
|
||||
const UIScreenAsset& asset,
|
||||
const std::string& debugName = {});
|
||||
UIScreenLayerId PushModal(
|
||||
const UIScreenAsset& asset,
|
||||
const std::string& debugName = {});
|
||||
UIScreenLayerId PushHud(
|
||||
const UIScreenAsset& asset,
|
||||
const std::string& debugName = {});
|
||||
|
||||
bool ReplaceTop(
|
||||
const UIScreenAsset& asset,
|
||||
const UIScreenLayerOptions& options = UIScreenLayerOptions());
|
||||
bool Pop();
|
||||
bool Remove(UIScreenLayerId layerId);
|
||||
void Clear();
|
||||
|
||||
std::size_t GetEntryCount() const;
|
||||
const UIScreenStackEntry* GetTop() const;
|
||||
const std::vector<UIScreenStackEntry>& GetEntries() const;
|
||||
|
||||
private:
|
||||
UISystem* m_system = nullptr;
|
||||
std::vector<UIScreenStackEntry> m_entries = {};
|
||||
};
|
||||
|
||||
} // namespace Runtime
|
||||
} // namespace UI
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user