From 35a39b4172008546f0bb4640114a42fb3f3a6f77 Mon Sep 17 00:00:00 2001 From: Aki Date: Thu, 10 Nov 2022 23:22:15 +0100 Subject: Flattened Scenario and move sample to battles module --- battles/CMakeLists.txt | 1 + battles/include/kurator/battles/Scenario.h | 5 ++-- battles/include/kurator/battles/ShipConfig.h | 1 + battles/include/kurator/battles/scenarios.h | 19 ++++++++++++++ battles/src/Battle.cpp | 17 ++++-------- battles/src/scenarios.cpp | 39 ++++++++++++++++++++++++++++ kurator/src/Battle.cpp | 19 ++------------ 7 files changed, 70 insertions(+), 31 deletions(-) create mode 100644 battles/include/kurator/battles/scenarios.h create mode 100644 battles/src/scenarios.cpp diff --git a/battles/CMakeLists.txt b/battles/CMakeLists.txt index c9b2c19..44a6de0 100644 --- a/battles/CMakeLists.txt +++ b/battles/CMakeLists.txt @@ -2,6 +2,7 @@ project(battles) add_library( ${PROJECT_NAME} src/Battle.cpp + src/scenarios.cpp ) target_include_directories( ${PROJECT_NAME} diff --git a/battles/include/kurator/battles/Scenario.h b/battles/include/kurator/battles/Scenario.h index 94adf73..b9bcc09 100644 --- a/battles/include/kurator/battles/Scenario.h +++ b/battles/include/kurator/battles/Scenario.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "ShipConfig.h" @@ -13,8 +14,8 @@ namespace battles struct Scenario { - using TeamComposition = std::vector; - std::vector teams; + std::string name; + std::vector ships; }; diff --git a/battles/include/kurator/battles/ShipConfig.h b/battles/include/kurator/battles/ShipConfig.h index f2315fe..bc01ad2 100644 --- a/battles/include/kurator/battles/ShipConfig.h +++ b/battles/include/kurator/battles/ShipConfig.h @@ -14,6 +14,7 @@ namespace battles struct ShipConfig { + int team; universe::ShipType type; std::vector turrets; }; diff --git a/battles/include/kurator/battles/scenarios.h b/battles/include/kurator/battles/scenarios.h new file mode 100644 index 0000000..3d7e697 --- /dev/null +++ b/battles/include/kurator/battles/scenarios.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Scenario.h" + + +namespace kurator +{ +namespace battles +{ +namespace scenarios +{ + + +Scenario example(); + + +} // namespace scenarios +} // namespace battles +} // namespace kurator diff --git a/battles/src/Battle.cpp b/battles/src/Battle.cpp index e59f951..e410f07 100644 --- a/battles/src/Battle.cpp +++ b/battles/src/Battle.cpp @@ -1,10 +1,7 @@ #include -#include #include -#include - #include #include #include @@ -20,15 +17,11 @@ Battle::Battle(Scenario scenario) { std::random_device dev; std::uniform_real_distribution<> pos{-5.0, 5.0}; - int team = 0; - for (const auto& ships : scenario.teams) { - for (const auto& ship : ships) { - const auto entity = registry.create(); - registry.emplace(entity, ship.type); - registry.emplace(entity, team); - registry.emplace(entity, Point{pos(dev), pos(dev)}, Point{0.0, 0.0}); - } - team++; + for (const auto& ship : scenario.ships) { + const auto entity = registry.create(); + registry.emplace(entity, ship.type); + registry.emplace(entity, ship.team); + registry.emplace(entity, Point{pos(dev), pos(dev)}, Point{0.0, 0.0}); } } diff --git a/battles/src/scenarios.cpp b/battles/src/scenarios.cpp new file mode 100644 index 0000000..ffb4f27 --- /dev/null +++ b/battles/src/scenarios.cpp @@ -0,0 +1,39 @@ +#include + +#include +#include + + +namespace kurator +{ +namespace battles +{ +namespace scenarios +{ + + +Scenario +example() +{ + const universe::ShipType halo {"halo", 4.0}; + const universe::ShipType cube {"cube", 10.0}; + const universe::ShipType bell {"bell", 10.0}; + return { + "example", + { + {0, halo, {}}, + {0, halo, {}}, + {0, cube, {}}, + {0, bell, {}}, + {1, bell, {}}, + {1, cube, {}}, + {1, cube, {}}, + {1, bell, {}}, + }, + }; +} + + +} // namespace scenarios +} // namespace battles +} // namespace kurator diff --git a/kurator/src/Battle.cpp b/kurator/src/Battle.cpp index a68df17..7d924b5 100644 --- a/kurator/src/Battle.cpp +++ b/kurator/src/Battle.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "Session.h" @@ -19,25 +20,9 @@ namespace kurator { -static const battles::Scenario DEFAULT { - { - { - {{"cube", 10.0}, {}}, - {{"cube", 10.0}, {}}, - {{"else", 14.0}, {}}, - }, - { - {{"cube", 10.0}, {}}, - {{"cube", 10.0}, {}}, - {{"otto", 15.0}, {}}, - }, - }, -}; - - Battle::Battle(std::shared_ptr _session) : session {std::move(_session)}, - battle {DEFAULT} + battle {battles::scenarios::example()} { } -- cgit v1.1