fix some starter params

This commit is contained in:
2019-10-23 11:29:30 +07:00
parent 6701dc2ec4
commit 9381d52d72
6 changed files with 97 additions and 61 deletions

View File

@@ -62,7 +62,7 @@ namespace e2d
class engine::debug_parameters { class engine::debug_parameters {
public: public:
debug_parameters& log_filename(str_view value); debug_parameters& log_filename(str value) noexcept;
debug_parameters& file_logging(bool value) noexcept; debug_parameters& file_logging(bool value) noexcept;
debug_parameters& console_logging(bool value) noexcept; debug_parameters& console_logging(bool value) noexcept;
@@ -81,7 +81,7 @@ namespace e2d
class engine::window_parameters { class engine::window_parameters {
public: public:
window_parameters& caption(str_view value); window_parameters& caption(str value) noexcept;
window_parameters& size(const v2u& value) noexcept; window_parameters& size(const v2u& value) noexcept;
window_parameters& vsync(bool value) noexcept; window_parameters& vsync(bool value) noexcept;
window_parameters& resizable(bool value) noexcept; window_parameters& resizable(bool value) noexcept;
@@ -123,16 +123,16 @@ namespace e2d
class engine::parameters { class engine::parameters {
public: public:
parameters() = delete; 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& game_name(str value) noexcept;
parameters& company_name(str_view value); parameters& company_name(str value) noexcept;
parameters& without_audio(bool value); parameters& without_audio(bool value);
parameters& without_network(bool value); parameters& without_network(bool value);
parameters& without_graphics(bool value); parameters& without_graphics(bool value);
parameters& debug_params(const debug_parameters& value); parameters& debug_params(debug_parameters value) noexcept;
parameters& window_params(const window_parameters& value); parameters& window_params(window_parameters value) noexcept;
parameters& timer_params(const timer_parameters& value); parameters& timer_params(timer_parameters value) noexcept;
str& game_name() noexcept; str& game_name() noexcept;
str& company_name() noexcept; str& company_name() noexcept;
@@ -145,9 +145,9 @@ namespace e2d
const str& game_name() const noexcept; const str& game_name() const noexcept;
const str& company_name() const noexcept; const str& company_name() const noexcept;
const bool& without_audio() const noexcept; bool without_audio() const noexcept;
const bool& without_network() const noexcept; bool without_network() const noexcept;
const bool& without_graphics() const noexcept; bool without_graphics() const noexcept;
const debug_parameters& debug_params() const noexcept; const debug_parameters& debug_params() const noexcept;
const window_parameters& window_params() const noexcept; const window_parameters& window_params() const noexcept;
const timer_parameters& timer_params() const noexcept; const timer_parameters& timer_params() const noexcept;

View File

@@ -66,7 +66,7 @@ namespace e2d
class library final : public module<library> { class library final : public module<library> {
public: public:
library(const url& root, deferrer& deferrer); library(url root);
~library() noexcept final; ~library() noexcept final;
const url& root() const noexcept; const url& root() const noexcept;
@@ -101,7 +101,6 @@ namespace e2d
void wait_all_loading_assets_() noexcept; void wait_all_loading_assets_() noexcept;
private: private:
url root_; url root_;
deferrer& deferrer_;
std::atomic<bool> cancelled_{false}; std::atomic<bool> cancelled_{false};
private: private:
mutable asset_cache cache_; mutable asset_cache cache_;

View File

@@ -44,9 +44,8 @@ namespace e2d
// library // library
// //
inline library::library(const url& root, deferrer& deferrer) inline library::library(url root)
: root_(root) : root_(std::move(root)) {}
, deferrer_(deferrer) {}
inline library::~library() noexcept { inline library::~library() noexcept {
cancelled_.store(true); cancelled_.store(true);
@@ -73,7 +72,7 @@ namespace e2d
template < typename Asset > template < typename Asset >
typename Asset::load_result library::load_main_asset(str_view address) const { typename Asset::load_result library::load_main_asset(str_view address) const {
auto p = load_main_asset_async<Asset>(address); auto p = load_main_asset_async<Asset>(address);
deferrer_.active_safe_wait_promise(p); the<deferrer>().active_safe_wait_promise(p);
return p.get_or_default(nullptr); return p.get_or_default(nullptr);
} }
@@ -146,7 +145,7 @@ namespace e2d
template < typename Asset, typename Nested > template < typename Asset, typename Nested >
typename Nested::load_result library::load_asset(str_view address) const { typename Nested::load_result library::load_asset(str_view address) const {
auto p = load_asset_async<Asset, Nested>(address); auto p = load_asset_async<Asset, Nested>(address);
deferrer_.active_safe_wait_promise(p); the<deferrer>().active_safe_wait_promise(p);
return p.get_or_default(nullptr); return p.get_or_default(nullptr);
} }
@@ -210,7 +209,7 @@ namespace e2d
} }
const auto loading_asset_copy = loading_assets_.back(); const auto loading_asset_copy = loading_assets_.back();
lock.unlock(); lock.unlock();
loading_asset_copy->wait(deferrer_); loading_asset_copy->wait(the<deferrer>());
} }
} }

View File

@@ -19,6 +19,7 @@ namespace e2d
class application; class application;
using application_uptr = std::unique_ptr<application>; using application_uptr = std::unique_ptr<application>;
public: public:
class library_parameters;
class parameters; class parameters;
public: public:
starter(int argc, char *argv[], const parameters& params); starter(int argc, char *argv[], const parameters& params);
@@ -41,6 +42,19 @@ namespace e2d
virtual bool on_should_close(); 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 // starter::parameters
// //
@@ -48,19 +62,19 @@ namespace e2d
class starter::parameters { class starter::parameters {
public: public:
parameters() = delete; parameters() = delete;
parameters(const engine::parameters& engine_params); parameters(engine::parameters engine_params) noexcept;
parameters& library_root(const url& value); parameters& engine_params(engine::parameters value) noexcept;
parameters& engine_params(const engine::parameters& value); parameters& library_params(library_parameters value) noexcept;
url& library_root() noexcept;
engine::parameters& engine_params() 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 engine::parameters& engine_params() const noexcept;
const library_parameters& library_params() const noexcept;
private: private:
url library_root_{"resources://bin/library"};
engine::parameters engine_params_; engine::parameters engine_params_;
library_parameters library_params_;
}; };
} }

View File

@@ -67,8 +67,8 @@ namespace e2d
// engine::debug_parameters // engine::debug_parameters
// //
engine::debug_parameters& engine::debug_parameters::log_filename(str_view value) { engine::debug_parameters& engine::debug_parameters::log_filename(str value) noexcept {
log_filename_ = value; log_filename_ = std::move(value);
return *this; return *this;
} }
@@ -120,8 +120,8 @@ namespace e2d
// engine::window_parameters // engine::window_parameters
// //
engine::window_parameters& engine::window_parameters::caption(str_view value) { engine::window_parameters& engine::window_parameters::caption(str value) noexcept {
caption_ = value; caption_ = std::move(value);
return *this; return *this;
} }
@@ -169,17 +169,17 @@ namespace e2d
// engine::parameters // engine::parameters
// //
engine::parameters::parameters(str_view game_name, str_view company_name) engine::parameters::parameters(str game_name, str company_name) noexcept
: game_name_(game_name) : game_name_(std::move(game_name))
, company_name_(company_name) {} , company_name_(std::move(company_name)) {}
engine::parameters& engine::parameters::game_name(str_view value) { engine::parameters& engine::parameters::game_name(str value) noexcept {
game_name_ = value; game_name_ = std::move(value);
return *this; return *this;
} }
engine::parameters& engine::parameters::company_name(str_view value) { engine::parameters& engine::parameters::company_name(str value) noexcept {
company_name_ = value; company_name_ = std::move(value);
return *this; return *this;
} }
@@ -198,18 +198,18 @@ namespace e2d
return *this; return *this;
} }
engine::parameters& engine::parameters::debug_params(const debug_parameters& value) { engine::parameters& engine::parameters::debug_params(debug_parameters value) noexcept {
debug_params_ = value; debug_params_ = std::move(value);
return *this; return *this;
} }
engine::parameters& engine::parameters::window_params(const window_parameters& value) { engine::parameters& engine::parameters::window_params(window_parameters value) noexcept {
window_params_ = value; window_params_ = std::move(value);
return *this; return *this;
} }
engine::parameters& engine::parameters::timer_params(const timer_parameters& value) { engine::parameters& engine::parameters::timer_params(timer_parameters value) noexcept {
timer_params_ = value; timer_params_ = std::move(value);
return *this; return *this;
} }
@@ -253,15 +253,15 @@ namespace e2d
return company_name_; return company_name_;
} }
const bool& engine::parameters::without_audio() const noexcept { bool engine::parameters::without_audio() const noexcept {
return without_audio_; return without_audio_;
} }
const bool& engine::parameters::without_network() const noexcept { bool engine::parameters::without_network() const noexcept {
return without_network_; return without_network_;
} }
const bool& engine::parameters::without_graphics() const noexcept { bool engine::parameters::without_graphics() const noexcept {
return without_graphics_; return without_graphics_;
} }

View File

@@ -116,46 +116,65 @@ namespace e2d
return true; 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
// //
starter::parameters::parameters(const engine::parameters& engine_params) starter::parameters::parameters(engine::parameters engine_params) noexcept
: engine_params_(engine_params) {} : engine_params_(std::move(engine_params)) {}
starter::parameters& starter::parameters::library_root(const url& value) { starter::parameters& starter::parameters::engine_params(engine::parameters value) noexcept {
library_root_ = value; engine_params_ = std::move(value);
return *this; return *this;
} }
starter::parameters& starter::parameters::engine_params(const engine::parameters& value) { starter::parameters& starter::parameters::library_params(library_parameters value) noexcept {
engine_params_ = value; library_params_ = std::move(value);
return *this; return *this;
} }
url& starter::parameters::library_root() noexcept {
return library_root_;
}
engine::parameters& starter::parameters::engine_params() noexcept { engine::parameters& starter::parameters::engine_params() noexcept {
return engine_params_; return engine_params_;
} }
const url& starter::parameters::library_root() const noexcept { starter::library_parameters& starter::parameters::library_params() noexcept {
return library_root_; return library_params_;
} }
const engine::parameters& starter::parameters::engine_params() const noexcept { const engine::parameters& starter::parameters::engine_params() const noexcept {
return engine_params_; return engine_params_;
} }
const starter::library_parameters& starter::parameters::library_params() const noexcept {
return library_params_;
}
// //
// starter // starter
// //
starter::starter(int argc, char *argv[], const parameters& params) { starter::starter(int argc, char *argv[], const parameters& params) {
safe_module_initialize<engine>(argc, argv, params.engine_params()); safe_module_initialize<engine>(
safe_module_initialize<luasol>(); argc, argv,
params.engine_params());
safe_module_initialize<factory>() safe_module_initialize<factory>()
.register_component<actor>("actor") .register_component<actor>("actor")
.register_component<behaviour>("behaviour") .register_component<behaviour>("behaviour")
@@ -172,7 +191,12 @@ namespace e2d
.register_component<spine_player_cmd>("spine_player_cmd") .register_component<spine_player_cmd>("spine_player_cmd")
.register_component<spine_player_evt>("spine_player_evt") .register_component<spine_player_evt>("spine_player_evt")
.register_component<sprite_renderer>("sprite_renderer"); .register_component<sprite_renderer>("sprite_renderer");
safe_module_initialize<library>(params.library_root(), the<deferrer>());
safe_module_initialize<library>(
params.library_params().root());
safe_module_initialize<luasol>();
safe_module_initialize<world>(); safe_module_initialize<world>();
} }
@@ -180,9 +204,9 @@ namespace e2d
the<luasol>().collect_garbage(); the<luasol>().collect_garbage();
modules::shutdown<world>(); modules::shutdown<world>();
modules::shutdown<luasol>();
modules::shutdown<library>(); modules::shutdown<library>();
modules::shutdown<factory>(); modules::shutdown<factory>();
modules::shutdown<luasol>();
modules::shutdown<engine>(); modules::shutdown<engine>();
} }