[nostalgia/core] Rename customData functions in Context and move them out of Context
This commit is contained in:
parent
c7cd54ae52
commit
7459d687b0
@ -25,6 +25,10 @@ class Drawer {
|
|||||||
|
|
||||||
// User Input Output
|
// User Input Output
|
||||||
class Context {
|
class Context {
|
||||||
|
friend constexpr void setApplicationData(Context *ctx, void *applicationData) noexcept;
|
||||||
|
template<typename T>
|
||||||
|
[[nodiscard]]
|
||||||
|
friend constexpr T *applicationData(Context *ctx) noexcept;
|
||||||
friend bool bgStatus(Context *ctx, unsigned bg) noexcept;
|
friend bool bgStatus(Context *ctx, unsigned bg) noexcept;
|
||||||
friend common::Size getScreenSize(Context *ctx) noexcept;
|
friend common::Size getScreenSize(Context *ctx) noexcept;
|
||||||
friend int getScreenHeight(Context *ctx) noexcept;
|
friend int getScreenHeight(Context *ctx) noexcept;
|
||||||
@ -60,10 +64,12 @@ class Context {
|
|||||||
AssetManager assetManager;
|
AssetManager assetManager;
|
||||||
#endif
|
#endif
|
||||||
private:
|
private:
|
||||||
void *m_customData = nullptr;
|
|
||||||
void *m_windowerData = nullptr;
|
void *m_windowerData = nullptr;
|
||||||
void *m_rendererData = nullptr;
|
void *m_rendererData = nullptr;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void *m_customData = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Context() noexcept = default;
|
Context() noexcept = default;
|
||||||
|
|
||||||
@ -71,16 +77,6 @@ class Context {
|
|||||||
Context(const Context &other) noexcept = delete;
|
Context(const Context &other) noexcept = delete;
|
||||||
Context(const Context &&other) noexcept = delete;
|
Context(const Context &&other) noexcept = delete;
|
||||||
|
|
||||||
constexpr void setCustomData(void *customData) noexcept {
|
|
||||||
m_customData = customData;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
[[nodiscard]]
|
|
||||||
constexpr T *customData() noexcept {
|
|
||||||
return static_cast<T*>(m_customData);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
template<typename T>
|
template<typename T>
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
@ -104,5 +100,15 @@ class Context {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
constexpr void setApplicationData(Context *ctx, void *applicationData) noexcept {
|
||||||
|
ctx->m_customData = applicationData;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
[[nodiscard]]
|
||||||
|
constexpr T *applicationData(Context *ctx) noexcept {
|
||||||
|
return static_cast<T*>(ctx->m_customData);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ ox::Error run(Context *ctx) noexcept {
|
|||||||
glfwSwapBuffers(id->window);
|
glfwSwapBuffers(id->window);
|
||||||
}
|
}
|
||||||
// destroy GLFW window
|
// destroy GLFW window
|
||||||
oxReturnError(renderer::shutdown(ctx, ctx->rendererData<void>()));
|
renderer::shutdown(ctx, ctx->rendererData<void>());
|
||||||
glfwDestroyWindow(id->window);
|
glfwDestroyWindow(id->window);
|
||||||
ctx->setWindowerData(nullptr);
|
ctx->setWindowerData(nullptr);
|
||||||
delete id;
|
delete id;
|
||||||
|
@ -12,7 +12,7 @@ namespace nostalgia::core::renderer {
|
|||||||
|
|
||||||
ox::Error init(Context *ctx, void **rendererData) noexcept;
|
ox::Error init(Context *ctx, void **rendererData) noexcept;
|
||||||
|
|
||||||
ox::Error shutdown(Context *ctx, void *rendererData) noexcept;
|
void shutdown(Context *ctx, void *rendererData) noexcept;
|
||||||
|
|
||||||
ox::Error loadBgTexture(void *rendererData, int section, void *pixels, int w, int h) noexcept;
|
ox::Error loadBgTexture(void *rendererData, int section, void *pixels, int w, int h) noexcept;
|
||||||
|
|
||||||
|
@ -195,10 +195,9 @@ ox::Error init(Context *ctx, void **rendererData) noexcept {
|
|||||||
return OxError(0);
|
return OxError(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ox::Error shutdown(Context*, void *rendererData) noexcept {
|
void shutdown(Context*, void *rendererData) noexcept {
|
||||||
const auto id = reinterpret_cast<GlImplData*>(rendererData);
|
const auto id = reinterpret_cast<GlImplData*>(rendererData);
|
||||||
delete id;
|
delete id;
|
||||||
return OxError(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ox::Error loadBgTexture(void *rendererData, int section, void *pixels, int w, int h) noexcept {
|
ox::Error loadBgTexture(void *rendererData, int section, void *pixels, int w, int h) noexcept {
|
||||||
|
@ -23,7 +23,7 @@ class StudioUIDrawer: public core::Drawer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int eventHandler(core::Context *ctx) noexcept {
|
static int eventHandler(core::Context *ctx) noexcept {
|
||||||
auto ui = ctx->customData<StudioUI>();
|
auto ui = core::applicationData<StudioUI>(ctx);
|
||||||
ui->update();
|
ui->update();
|
||||||
return 16;
|
return 16;
|
||||||
}
|
}
|
||||||
@ -32,9 +32,9 @@ static ox::Error run(ox::UniquePtr<ox::FileSystem> fs) noexcept {
|
|||||||
oxRequireM(ctx, core::init(std::move(fs), "NostalgiaStudio"));
|
oxRequireM(ctx, core::init(std::move(fs), "NostalgiaStudio"));
|
||||||
core::setWindowTitle(ctx.get(), "Nostalgia Studio");
|
core::setWindowTitle(ctx.get(), "Nostalgia Studio");
|
||||||
core::setEventHandler(ctx.get(), eventHandler);
|
core::setEventHandler(ctx.get(), eventHandler);
|
||||||
auto ui = ox::make_unique<StudioUI>(ctx.get());
|
StudioUI ui(ctx.get());
|
||||||
StudioUIDrawer drawer(ui.get());
|
StudioUIDrawer drawer(&ui);
|
||||||
ctx->setCustomData(ui.get());
|
core::setApplicationData(ctx.get(), &ui);
|
||||||
ctx->drawers.emplace_back(&drawer);
|
ctx->drawers.emplace_back(&drawer);
|
||||||
return core::run(ctx.get());
|
return core::run(ctx.get());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user