diff options
author | Aki <please@ignore.pl> | 2022-11-16 23:37:17 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-11-16 23:37:17 +0100 |
commit | 057d4061a1dca1dc76096826fd8066316ce5447d (patch) | |
tree | 24d83019e27b461eb185004d30e41ec98d43abfe /battles/src/BaseBattle.cpp | |
parent | 282c56b6a1e1d9a47363e362ade013317a957b99 (diff) | |
download | kurator-057d4061a1dca1dc76096826fd8066316ce5447d.zip kurator-057d4061a1dca1dc76096826fd8066316ce5447d.tar.gz kurator-057d4061a1dca1dc76096826fd8066316ce5447d.tar.bz2 |
Extracted entity construction to Builder class
Diffstat (limited to 'battles/src/BaseBattle.cpp')
-rw-r--r-- | battles/src/BaseBattle.cpp | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/battles/src/BaseBattle.cpp b/battles/src/BaseBattle.cpp index 87f450a..fc4aa69 100644 --- a/battles/src/BaseBattle.cpp +++ b/battles/src/BaseBattle.cpp @@ -9,6 +9,8 @@ #include <kurator/battles/Scenario.h> #include <kurator/universe.h> +#include "Builder.h" + namespace kurator { @@ -24,22 +26,11 @@ BaseBattle::BaseBattle(const Scenario& scenario) : spawner {total_teams_in(scenario), 2.5, 0.1} { const auto repo = universe::load_sample(); + Builder build {_registry, spawner}; for (const auto& ship : scenario.ships) { - const auto entity = _registry.create(); - const auto type = repo->ship_type(ship.type); - _registry.emplace<std::decay<decltype(type)>::type>(entity, type); - _registry.emplace<Team>(entity, ship.team); - _registry.emplace<Transform>(entity, spawner.get(ship.team)); - _registry.emplace<FloatingMovement>(entity, 0.4); - _registry.emplace<AIState>(entity, Point{0.0, 0.0}); - _registry.emplace<HitPoints>(entity, type.base_health_points); - for (const auto& turret_name : ship.turrets) { - const auto turret = _registry.create(); - const auto def = repo->turret_type(turret_name); - _registry.emplace<std::decay<decltype(def)>::type>(turret, def); - _registry.emplace<TurretControl>(turret, 0.0, entity); - _registry.emplace<Transform>(turret, Point{0.0, 0.0}, 0.0, entity); - } + const auto entity = build(repo->ship_type(ship.type), ship.team); + for (const auto& turret_type : ship.turrets) + build(repo->turret_type(turret_type), entity); manager.add(ship.team, entity); // registry supports on construction events } } |