AronaCore/core/application/application.h

53 lines
997 B
C++

#pragma once
#include <string>
class renderer;
class render_target;
class texture;
class application;
extern bool g_is_running;
extern bool g_exit_requested;
extern application* g_app_instance;
struct window_params {
std::string title;
int width;
int height;
bool fullscreen;
bool borderless;
bool resizable;
bool minimized;
bool maximized;
bool hi_dpi;
bool always_on_top;
};
class CORE_API application {
public:
application() {
g_app_instance = this;
}
virtual ~application() = default;
application(const application&) = delete;
application(application&&) = delete;
static application* get() {
return g_app_instance;
}
virtual void init(const window_params& in_window_params, int argc, char** argv);
virtual void shutdown();
void request_exit();
virtual void draw_gui() = 0;
virtual void tick(float delta_time) {}
protected:
std::shared_ptr<spdlog::logger> async_spdlog_;
};