minor refactor & fixes

This commit is contained in:
MihailRis 2024-02-12 02:01:28 +03:00
parent e4f7315cc3
commit 5724778117
4 changed files with 19 additions and 23 deletions

View File

@ -13,6 +13,11 @@
AssetsLoader::AssetsLoader(Assets* assets, const ResPaths* paths)
: assets(assets), paths(paths) {
addLoader(ASSET_SHADER, assetload::shader);
addLoader(ASSET_TEXTURE, assetload::texture);
addLoader(ASSET_FONT, assetload::font);
addLoader(ASSET_ATLAS, assetload::atlas);
addLoader(ASSET_LAYOUT, assetload::layout);
}
void AssetsLoader::addLoader(int tag, aloader_func func) {
@ -42,14 +47,6 @@ bool AssetsLoader::loadNext() {
return status;
}
void AssetsLoader::createDefaults(AssetsLoader& loader) {
loader.addLoader(ASSET_SHADER, assetload::shader);
loader.addLoader(ASSET_TEXTURE, assetload::texture);
loader.addLoader(ASSET_FONT, assetload::font);
loader.addLoader(ASSET_ATLAS, assetload::atlas);
loader.addLoader(ASSET_LAYOUT, assetload::layout);
}
void addLayouts(int env, const std::string& prefix, const fs::path& folder, AssetsLoader& loader) {
if (!fs::is_directory(folder)) {
return;

View File

@ -44,7 +44,6 @@ public:
bool hasNext() const;
bool loadNext();
static void createDefaults(AssetsLoader& loader);
static void addDefaults(AssetsLoader& loader, const Content* content);
const ResPaths* getPaths() const;

View File

@ -42,7 +42,8 @@
namespace fs = std::filesystem;
Engine::Engine(EngineSettings& settings, EnginePaths* paths)
: settings(settings), paths(paths) {
: settings(settings), paths(paths)
{
if (Window::initialize(settings.display)){
throw initialize_error("could not initialize window");
}
@ -52,18 +53,21 @@ Engine::Engine(EngineSettings& settings, EnginePaths* paths)
std::cout << "-- loading assets" << std::endl;
std::vector<fs::path> roots {resdir};
resPaths.reset(new ResPaths(resdir, roots));
assets.reset(new Assets());
resPaths = std::make_unique<ResPaths>(resdir, roots);
assets = std::make_unique<Assets>();
AssetsLoader loader(assets.get(), resPaths.get());
AssetsLoader::createDefaults(loader);
AssetsLoader::addDefaults(loader, nullptr);
Shader::preprocessor->setPaths(resPaths.get());
while (loader.hasNext()) {
if (!loader.loadNext()) {
assets.reset();
scripting::close();
Window::terminate();
throw initialize_error("could not to initialize assets");
throw initialize_error("could not to load assets");
}
}
@ -73,7 +77,6 @@ Engine::Engine(EngineSettings& settings, EnginePaths* paths)
settings.ui.language = langs::locale_by_envlocale(platform::detect_locale(), paths->getResources());
}
setLanguage(settings.ui.language);
std::cout << "-- initializing finished" << std::endl;
}
void Engine::updateTimers() {
@ -98,12 +101,11 @@ void Engine::updateHotkeys() {
void Engine::mainloop() {
setScreen(std::make_shared<MenuScreen>(this));
std::cout << "-- preparing systems" << std::endl;
Batch2D batch(1024);
lastTime = Window::time();
std::cout << "-- initialized" << std::endl;
while (!Window::isShouldClose()){
assert(screen != nullptr);
updateTimers();
@ -129,12 +131,11 @@ void Engine::mainloop() {
}
Engine::~Engine() {
screen = nullptr;
std::cout << "-- shutting down" << std::endl;
screen.reset();
content.reset();
Audio::finalize();
std::cout << "-- shutting down" << std::endl;
assets.reset();
scripting::close();
Window::terminate();
@ -184,7 +185,6 @@ void Engine::loadContent() {
std::unique_ptr<Assets> new_assets(new Assets());
std::cout << "-- loading assets" << std::endl;
AssetsLoader loader(new_assets.get(), resPaths.get());
AssetsLoader::createDefaults(loader);
AssetsLoader::addDefaults(loader, content.get());
while (loader.hasNext()) {
if (!loader.loadNext()) {
@ -244,4 +244,4 @@ EnginePaths* Engine::getPaths() {
std::shared_ptr<Screen> Engine::getScreen() {
return screen;
}
}

View File

@ -67,4 +67,4 @@ public:
std::shared_ptr<Screen> getScreen();
};
#endif // SRC_ENGINE_H_
#endif // SRC_ENGINE_H_