diff --git a/headers/enduro2d/core/engine.hpp b/headers/enduro2d/core/engine.hpp index dcc070db..df50e01c 100644 --- a/headers/enduro2d/core/engine.hpp +++ b/headers/enduro2d/core/engine.hpp @@ -62,7 +62,7 @@ namespace e2d class engine::debug_parameters { public: - debug_parameters& log_filename(str_view value); + debug_parameters& log_filename(str value) noexcept; debug_parameters& file_logging(bool value) noexcept; debug_parameters& console_logging(bool value) noexcept; @@ -81,7 +81,7 @@ namespace e2d class engine::window_parameters { public: - window_parameters& caption(str_view value); + window_parameters& caption(str value) noexcept; window_parameters& size(const v2u& value) noexcept; window_parameters& vsync(bool value) noexcept; window_parameters& resizable(bool value) noexcept; @@ -123,16 +123,16 @@ namespace e2d class engine::parameters { public: parameters() = delete; - parameters(str_view game_name, str_view company_name); + parameters(str game_name, str company_name) noexcept; - parameters& game_name(str_view value); - parameters& company_name(str_view value); + parameters& game_name(str value) noexcept; + parameters& company_name(str value) noexcept; parameters& without_audio(bool value); parameters& without_network(bool value); parameters& without_graphics(bool value); - parameters& debug_params(const debug_parameters& value); - parameters& window_params(const window_parameters& value); - parameters& timer_params(const timer_parameters& value); + parameters& debug_params(debug_parameters value) noexcept; + parameters& window_params(window_parameters value) noexcept; + parameters& timer_params(timer_parameters value) noexcept; str& game_name() noexcept; str& company_name() noexcept; @@ -145,9 +145,9 @@ namespace e2d const str& game_name() const noexcept; const str& company_name() const noexcept; - const bool& without_audio() const noexcept; - const bool& without_network() const noexcept; - const bool& without_graphics() const noexcept; + bool without_audio() const noexcept; + bool without_network() const noexcept; + bool without_graphics() const noexcept; const debug_parameters& debug_params() const noexcept; const window_parameters& window_params() const noexcept; const timer_parameters& timer_params() const noexcept; diff --git a/headers/enduro2d/high/library.hpp b/headers/enduro2d/high/library.hpp index 03ed4235..4755cfd9 100644 --- a/headers/enduro2d/high/library.hpp +++ b/headers/enduro2d/high/library.hpp @@ -66,7 +66,7 @@ namespace e2d class library final : public module { public: - library(const url& root, deferrer& deferrer); + library(url root); ~library() noexcept final; const url& root() const noexcept; @@ -101,7 +101,6 @@ namespace e2d void wait_all_loading_assets_() noexcept; private: url root_; - deferrer& deferrer_; std::atomic cancelled_{false}; private: mutable asset_cache cache_; diff --git a/headers/enduro2d/high/library.inl b/headers/enduro2d/high/library.inl index ea57b966..8359bc7b 100644 --- a/headers/enduro2d/high/library.inl +++ b/headers/enduro2d/high/library.inl @@ -44,9 +44,8 @@ namespace e2d // library // - inline library::library(const url& root, deferrer& deferrer) - : root_(root) - , deferrer_(deferrer) {} + inline library::library(url root) + : root_(std::move(root)) {} inline library::~library() noexcept { cancelled_.store(true); @@ -73,7 +72,7 @@ namespace e2d template < typename Asset > typename Asset::load_result library::load_main_asset(str_view address) const { auto p = load_main_asset_async(address); - deferrer_.active_safe_wait_promise(p); + the().active_safe_wait_promise(p); return p.get_or_default(nullptr); } @@ -146,7 +145,7 @@ namespace e2d template < typename Asset, typename Nested > typename Nested::load_result library::load_asset(str_view address) const { auto p = load_asset_async(address); - deferrer_.active_safe_wait_promise(p); + the().active_safe_wait_promise(p); return p.get_or_default(nullptr); } @@ -210,7 +209,7 @@ namespace e2d } const auto loading_asset_copy = loading_assets_.back(); lock.unlock(); - loading_asset_copy->wait(deferrer_); + loading_asset_copy->wait(the()); } } diff --git a/headers/enduro2d/high/starter.hpp b/headers/enduro2d/high/starter.hpp index e313a000..22c92f69 100644 --- a/headers/enduro2d/high/starter.hpp +++ b/headers/enduro2d/high/starter.hpp @@ -19,6 +19,7 @@ namespace e2d class application; using application_uptr = std::unique_ptr; public: + class library_parameters; class parameters; public: starter(int argc, char *argv[], const parameters& params); @@ -41,6 +42,19 @@ namespace e2d virtual bool on_should_close(); }; + // + // starter::library_parameters + // + + class starter::library_parameters { + public: + library_parameters& root(url value) noexcept; + url& root() noexcept; + const url& root() const noexcept; + private: + url root_{"resources://bin/library"}; + }; + // // starter::parameters // @@ -48,19 +62,19 @@ namespace e2d class starter::parameters { public: parameters() = delete; - parameters(const engine::parameters& engine_params); + parameters(engine::parameters engine_params) noexcept; - parameters& library_root(const url& value); - parameters& engine_params(const engine::parameters& value); + parameters& engine_params(engine::parameters value) noexcept; + parameters& library_params(library_parameters value) noexcept; - url& library_root() noexcept; engine::parameters& engine_params() noexcept; + library_parameters& library_params() noexcept; - const url& library_root() const noexcept; const engine::parameters& engine_params() const noexcept; + const library_parameters& library_params() const noexcept; private: - url library_root_{"resources://bin/library"}; engine::parameters engine_params_; + library_parameters library_params_; }; } diff --git a/sources/enduro2d/core/engine.cpp b/sources/enduro2d/core/engine.cpp index 9efef894..3b9833fc 100644 --- a/sources/enduro2d/core/engine.cpp +++ b/sources/enduro2d/core/engine.cpp @@ -67,8 +67,8 @@ namespace e2d // engine::debug_parameters // - engine::debug_parameters& engine::debug_parameters::log_filename(str_view value) { - log_filename_ = value; + engine::debug_parameters& engine::debug_parameters::log_filename(str value) noexcept { + log_filename_ = std::move(value); return *this; } @@ -120,8 +120,8 @@ namespace e2d // engine::window_parameters // - engine::window_parameters& engine::window_parameters::caption(str_view value) { - caption_ = value; + engine::window_parameters& engine::window_parameters::caption(str value) noexcept { + caption_ = std::move(value); return *this; } @@ -169,17 +169,17 @@ namespace e2d // engine::parameters // - engine::parameters::parameters(str_view game_name, str_view company_name) - : game_name_(game_name) - , company_name_(company_name) {} + engine::parameters::parameters(str game_name, str company_name) noexcept + : game_name_(std::move(game_name)) + , company_name_(std::move(company_name)) {} - engine::parameters& engine::parameters::game_name(str_view value) { - game_name_ = value; + engine::parameters& engine::parameters::game_name(str value) noexcept { + game_name_ = std::move(value); return *this; } - engine::parameters& engine::parameters::company_name(str_view value) { - company_name_ = value; + engine::parameters& engine::parameters::company_name(str value) noexcept { + company_name_ = std::move(value); return *this; } @@ -198,18 +198,18 @@ namespace e2d return *this; } - engine::parameters& engine::parameters::debug_params(const debug_parameters& value) { - debug_params_ = value; + engine::parameters& engine::parameters::debug_params(debug_parameters value) noexcept { + debug_params_ = std::move(value); return *this; } - engine::parameters& engine::parameters::window_params(const window_parameters& value) { - window_params_ = value; + engine::parameters& engine::parameters::window_params(window_parameters value) noexcept { + window_params_ = std::move(value); return *this; } - engine::parameters& engine::parameters::timer_params(const timer_parameters& value) { - timer_params_ = value; + engine::parameters& engine::parameters::timer_params(timer_parameters value) noexcept { + timer_params_ = std::move(value); return *this; } @@ -253,15 +253,15 @@ namespace e2d return company_name_; } - const bool& engine::parameters::without_audio() const noexcept { + bool engine::parameters::without_audio() const noexcept { return without_audio_; } - const bool& engine::parameters::without_network() const noexcept { + bool engine::parameters::without_network() const noexcept { return without_network_; } - const bool& engine::parameters::without_graphics() const noexcept { + bool engine::parameters::without_graphics() const noexcept { return without_graphics_; } diff --git a/sources/enduro2d/high/starter.cpp b/sources/enduro2d/high/starter.cpp index 0ffede87..0a693b0f 100644 --- a/sources/enduro2d/high/starter.cpp +++ b/sources/enduro2d/high/starter.cpp @@ -116,46 +116,65 @@ namespace e2d return true; } + // + // starter::library_parameters + // + + starter::library_parameters& starter::library_parameters::root(url value) noexcept { + root_ = std::move(value); + return *this; + } + + url& starter::library_parameters::root() noexcept { + return root_; + } + + const url& starter::library_parameters::root() const noexcept { + return root_; + } + // // starter::parameters // - starter::parameters::parameters(const engine::parameters& engine_params) - : engine_params_(engine_params) {} + starter::parameters::parameters(engine::parameters engine_params) noexcept + : engine_params_(std::move(engine_params)) {} - starter::parameters& starter::parameters::library_root(const url& value) { - library_root_ = value; + starter::parameters& starter::parameters::engine_params(engine::parameters value) noexcept { + engine_params_ = std::move(value); return *this; } - starter::parameters& starter::parameters::engine_params(const engine::parameters& value) { - engine_params_ = value; + starter::parameters& starter::parameters::library_params(library_parameters value) noexcept { + library_params_ = std::move(value); return *this; } - url& starter::parameters::library_root() noexcept { - return library_root_; - } - engine::parameters& starter::parameters::engine_params() noexcept { return engine_params_; } - const url& starter::parameters::library_root() const noexcept { - return library_root_; + starter::library_parameters& starter::parameters::library_params() noexcept { + return library_params_; } const engine::parameters& starter::parameters::engine_params() const noexcept { return engine_params_; } + const starter::library_parameters& starter::parameters::library_params() const noexcept { + return library_params_; + } + // // starter // starter::starter(int argc, char *argv[], const parameters& params) { - safe_module_initialize(argc, argv, params.engine_params()); - safe_module_initialize(); + safe_module_initialize( + argc, argv, + params.engine_params()); + safe_module_initialize() .register_component("actor") .register_component("behaviour") @@ -172,7 +191,12 @@ namespace e2d .register_component("spine_player_cmd") .register_component("spine_player_evt") .register_component("sprite_renderer"); - safe_module_initialize(params.library_root(), the()); + + safe_module_initialize( + params.library_params().root()); + + safe_module_initialize(); + safe_module_initialize(); } @@ -180,9 +204,9 @@ namespace e2d the().collect_garbage(); modules::shutdown(); + modules::shutdown(); modules::shutdown(); modules::shutdown(); - modules::shutdown(); modules::shutdown(); }