diff options
Diffstat (limited to 'campaign')
-rw-r--r-- | campaign/CMakeLists.txt | 14 | ||||
-rw-r--r-- | campaign/include/kurator/campaign/Scenario.h | 24 | ||||
-rw-r--r-- | campaign/include/kurator/campaign/ShipConfig.h | 22 | ||||
-rw-r--r-- | campaign/include/kurator/campaign/scenarios.h | 19 | ||||
-rw-r--r-- | campaign/src/Scenario.cpp | 23 | ||||
-rw-r--r-- | campaign/src/scenarios.cpp | 43 |
6 files changed, 145 insertions, 0 deletions
diff --git a/campaign/CMakeLists.txt b/campaign/CMakeLists.txt new file mode 100644 index 0000000..ca2663a --- /dev/null +++ b/campaign/CMakeLists.txt @@ -0,0 +1,14 @@ +project(campaign) +add_library( + ${PROJECT_NAME} + src/Scenario.cpp + src/scenarios.cpp +) +target_include_directories( + ${PROJECT_NAME} + PUBLIC include +) +target_link_libraries( + ${PROJECT_NAME} + PUBLIC universe +) diff --git a/campaign/include/kurator/campaign/Scenario.h b/campaign/include/kurator/campaign/Scenario.h new file mode 100644 index 0000000..23647fc --- /dev/null +++ b/campaign/include/kurator/campaign/Scenario.h @@ -0,0 +1,24 @@ +#pragma once + +#include <string> +#include <vector> + +#include "ShipConfig.h" + + +namespace kurator +{ +namespace campaign +{ + + +struct Scenario +{ + std::string name; + std::vector<ShipConfig> ships; + int total_teams() const; +}; + + +} // namespace campaign +} // namespace kurator diff --git a/campaign/include/kurator/campaign/ShipConfig.h b/campaign/include/kurator/campaign/ShipConfig.h new file mode 100644 index 0000000..cb5ca48 --- /dev/null +++ b/campaign/include/kurator/campaign/ShipConfig.h @@ -0,0 +1,22 @@ +#pragma once + +#include <string> +#include <vector> + + +namespace kurator +{ +namespace campaign +{ + + +struct ShipConfig +{ + int team; + std::string type; + std::vector<std::string> turrets; +}; + + +} // namespace campaign +} // namespace kurator diff --git a/campaign/include/kurator/campaign/scenarios.h b/campaign/include/kurator/campaign/scenarios.h new file mode 100644 index 0000000..cdc1e19 --- /dev/null +++ b/campaign/include/kurator/campaign/scenarios.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Scenario.h" + + +namespace kurator +{ +namespace campaign +{ +namespace scenarios +{ + + +Scenario example(); + + +} // namespace scenarios +} // namespace campaign +} // namespace kurator diff --git a/campaign/src/Scenario.cpp b/campaign/src/Scenario.cpp new file mode 100644 index 0000000..cd5a1c6 --- /dev/null +++ b/campaign/src/Scenario.cpp @@ -0,0 +1,23 @@ +#include <kurator/campaign/Scenario.h> + + +namespace kurator +{ +namespace campaign +{ + + +int +Scenario::total_teams() const +{ + int last_team = 0; + for (const auto& ship : ships) { + if (ship.team > last_team) + last_team = ship.team; + } + return last_team + 1; +} + + +} // namespace campaign +} // namespace kurator diff --git a/campaign/src/scenarios.cpp b/campaign/src/scenarios.cpp new file mode 100644 index 0000000..06b4659 --- /dev/null +++ b/campaign/src/scenarios.cpp @@ -0,0 +1,43 @@ +#include <kurator/campaign/scenarios.h> + +#include <kurator/campaign/Scenario.h> + + +namespace kurator +{ +namespace campaign +{ +namespace scenarios +{ + + +Scenario +example() +{ + return { + "Example", + { + {0, "Anvil", {"ChargeLaser", "ChargeLaser"}}, + {0, "Anvil", {"ChargeLaser", "ChargeLaser"}}, + {0, "Anvil", {"ChargeLaser", "ChargeLaser"}}, + {0, "Warbringer", {"ChargeLaser"}}, + {0, "Warbringer", {"ChargeLaser"}}, + {0, "Eclipse", {"ChargeLaser"}}, + {0, "Eclipse", {"ChargeLaser"}}, + {0, "Eclipse", {"ChargeLaser"}}, + {1, "Anvil", {"ChargeLaser", "ChargeLaser"}}, + {1, "Anvil", {"ChargeLaser", "ChargeLaser"}}, + {1, "Anvil", {"ChargeLaser", "ChargeLaser"}}, + {1, "Warbringer", {"ChargeLaser"}}, + {1, "Warbringer", {"ChargeLaser"}}, + {1, "Eclipse", {"ChargeLaser"}}, + {1, "Eclipse", {"ChargeLaser"}}, + {1, "Eclipse", {"ChargeLaser"}}, + }, + }; +} + + +} // namespace scenarios +} // namespace campaign +} // namespace kurator |