From 2a9f378c66b28cef1c5ee063cf4d7e4e2889076e Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 13 Feb 2023 22:52:18 +0100 Subject: Created sim::State object to hold overall state of simulation This is seems like it creats even more chaotic binding between the components but it is a very nice and testable intermediate step before moving everything to standalone systems and shoving state into the... well, State. --- sim/src/sim.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sim/src/sim.cpp (limited to 'sim/src/sim.cpp') diff --git a/sim/src/sim.cpp b/sim/src/sim.cpp new file mode 100644 index 0000000..f915d20 --- /dev/null +++ b/sim/src/sim.cpp @@ -0,0 +1,36 @@ +#include + +#include +#include +#include +#include + +#include "Builder.h" +#include "RandomSpawner.h" + + +namespace kurator +{ +namespace sim +{ + + +void +load_scenario(State& ctx, const campaign::Scenario& scenario) +{ + RandomSpawner spawner {scenario.last_team(), scenario.radius, 0.1}; + Builder build {ctx.registry, spawner}; + for (const auto& ship : scenario.ships) { + const auto entity = build(ship.loadout.type, ship.team); + ctx.registry.emplace(entity, ship.identifier); + auto& state = ctx.registry.get(entity); + for (const auto& turret_type : ship.loadout.turrets) { + build(turret_type, entity); + state.keep_at_range = std::min(state.keep_at_range, turret_type.optimal_range); + } + } +} + + +} // namespace sim +} // namespace kurator -- cgit v1.1