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 {
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;

View File

@@ -66,7 +66,7 @@ namespace e2d
class library final : public module<library> {
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<bool> cancelled_{false};
private:
mutable asset_cache cache_;

View File

@@ -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<Asset>(address);
deferrer_.active_safe_wait_promise(p);
the<deferrer>().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<Asset, Nested>(address);
deferrer_.active_safe_wait_promise(p);
the<deferrer>().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<deferrer>());
}
}

View File

@@ -19,6 +19,7 @@ namespace e2d
class application;
using application_uptr = std::unique_ptr<application>;
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_;
};
}

View File

@@ -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_;
}

View File

@@ -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<engine>(argc, argv, params.engine_params());
safe_module_initialize<luasol>();
safe_module_initialize<engine>(
argc, argv,
params.engine_params());
safe_module_initialize<factory>()
.register_component<actor>("actor")
.register_component<behaviour>("behaviour")
@@ -172,7 +191,12 @@ namespace e2d
.register_component<spine_player_cmd>("spine_player_cmd")
.register_component<spine_player_evt>("spine_player_evt")
.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>();
}
@@ -180,9 +204,9 @@ namespace e2d
the<luasol>().collect_garbage();
modules::shutdown<world>();
modules::shutdown<luasol>();
modules::shutdown<library>();
modules::shutdown<factory>();
modules::shutdown<luasol>();
modules::shutdown<engine>();
}