diff options
Diffstat (limited to 'sim/src/sim.cpp')
-rw-r--r-- | sim/src/sim.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
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 <kurator/sim.h> + +#include <kurator/campaign/Scenario.h> +#include <kurator/sim/components.h> +#include <kurator/sim/State.h> +#include <kurator/universe/UniqueIdentifier.h> + +#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<universe::UniqueIdentifier>(entity, ship.identifier); + auto& state = ctx.registry.get<AIState>(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 |