From 49571905c06046a9db0e60e063bf48c92fbb73a9 Mon Sep 17 00:00:00 2001 From: Aki Date: Tue, 3 Jan 2023 00:15:11 +0100 Subject: Added rather naive interface for repository iteration --- universe/include/kurator/universe/Repository.h | 3 +++ universe/src/SampleRepository.cpp | 23 ++++++++++++++++++++--- universe/src/SampleRepository.h | 3 +++ 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'universe') diff --git a/universe/include/kurator/universe/Repository.h b/universe/include/kurator/universe/Repository.h index 8d44793..3758421 100644 --- a/universe/include/kurator/universe/Repository.h +++ b/universe/include/kurator/universe/Repository.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "ShipType.h" @@ -18,6 +19,8 @@ public: virtual ~Repository() = default; virtual ShipType ship_type(const std::string& id) const = 0; virtual TurretType turret_type(const std::string& id) const = 0; + virtual void for_ship_types(std::function func) const = 0; + virtual void for_turret_types(std::function func) const = 0; }; diff --git a/universe/src/SampleRepository.cpp b/universe/src/SampleRepository.cpp index 0f29073..a81c2bb 100644 --- a/universe/src/SampleRepository.cpp +++ b/universe/src/SampleRepository.cpp @@ -1,8 +1,9 @@ #include "SampleRepository.h" +#include #include #include -#include +#include #include #include @@ -15,14 +16,14 @@ namespace universe { -static const std::unordered_map ships { +static const std::map ships { {"Anvil", {"Anvil", 600.0, 218.0}}, {"Eclipse", {"Eclipse", 600.0, 263.0}}, {"Warbringer", {"Warbringer", 600.0, 336.0}}, }; -static const std::unordered_map turrets { +static const std::map turrets { {"ChargeLaser", {"ChargeLaser", 1, 85.0, 4.5, 0.0, 7000.0, 0.05}}, {"BurstLaser", {"BurstLaser", 3, 21.0, 0.25, 2.75, 3500.0, 0.05}}, {"GaussCannon", {"GaussCannon", 2, 55.0, 0.0, 5.5, 12000.0, 0.2}}, @@ -49,5 +50,21 @@ catch (const std::out_of_range&) { } +void +SampleRepository::for_ship_types(std::function func) const +{ + for (const auto& [_, type] : ships) + func(type); +} + + +void +SampleRepository::for_turret_types(std::function func) const +{ + for (const auto& [_, type] : turrets) + func(type); +} + + } // namespace universe } // namespace kurator diff --git a/universe/src/SampleRepository.h b/universe/src/SampleRepository.h index 1cf4fb4..769af09 100644 --- a/universe/src/SampleRepository.h +++ b/universe/src/SampleRepository.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -18,6 +19,8 @@ class SampleRepository : public Repository public: ShipType ship_type(const std::string& id) const override; TurretType turret_type(const std::string& id) const override; + void for_ship_types(std::function func) const; + void for_turret_types(std::function func) const; }; -- cgit v1.1