Frostbite2D/Fostbite2D/src/fostbite2D/app/application.cpp

66 lines
1.1 KiB
C++

#include <SDL2/SDL.h>
#include <fostbite2D/app/application.h>
namespace frostbite2D {
Application &Application::get() {
static Application instance;
return instance;
}
void Application::use(Module &m) {
for (auto *existing : modules_) {
if (existing == &m) {
return;
}
}
modules_.push_back(&m);
}
void Application::use(std::initializer_list<Module *> modules) {
for (auto *m : modules) {
if (m) {
use(*m);
}
}
}
bool Application::init() {
AppConfig cfg;
return init(cfg);
}
bool Application::init(const AppConfig &config) {
if (initialized_) {
return true;
}
this->window_ = new Window();
if (!window_->create(config.windowConfig)) {
SDL_Log("Failed to create window");
return false;
}
return true;
}
void Application::shutdown() {
if (!initialized_)
return;
// VRAMMgr::get().printStats();
// ServiceLocator::instance().clear();
// window_ = nullptr;
initialized_ = false;
running_ = false;
}
Application::~Application() {
if (initialized_) {
shutdown();
}
}
} // namespace frostbite2D