diff --git a/src/assets/AssetsLoader.cpp b/src/assets/AssetsLoader.cpp index 8314b8e5..a4aef1c4 100644 --- a/src/assets/AssetsLoader.cpp +++ b/src/assets/AssetsLoader.cpp @@ -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; diff --git a/src/assets/AssetsLoader.h b/src/assets/AssetsLoader.h index 4cab14be..7e0e63a5 100644 --- a/src/assets/AssetsLoader.h +++ b/src/assets/AssetsLoader.h @@ -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; diff --git a/src/engine.cpp b/src/engine.cpp index 1dac3eb0..d1e85eeb 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -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 roots {resdir}; - resPaths.reset(new ResPaths(resdir, roots)); - assets.reset(new Assets()); + + resPaths = std::make_unique(resdir, roots); + assets = std::make_unique(); + + 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(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 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 Engine::getScreen() { return screen; -} \ No newline at end of file +} diff --git a/src/engine.h b/src/engine.h index 595b80da..1532e84b 100644 --- a/src/engine.h +++ b/src/engine.h @@ -67,4 +67,4 @@ public: std::shared_ptr getScreen(); }; -#endif // SRC_ENGINE_H_ \ No newline at end of file +#endif // SRC_ENGINE_H_