diff options
Diffstat (limited to 'battles/src/RandomSpawner.cpp')
-rw-r--r-- | battles/src/RandomSpawner.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/battles/src/RandomSpawner.cpp b/battles/src/RandomSpawner.cpp new file mode 100644 index 0000000..a81a18c --- /dev/null +++ b/battles/src/RandomSpawner.cpp @@ -0,0 +1,38 @@ +#include "RandomSpawner.h" + +#include <cmath> + +#include <kurator/battles/components.h> +#include <kurator/battles/Point.h> + + +namespace kurator +{ +namespace battles +{ + + +RandomSpawner::RandomSpawner(const int total_teams, const double distance, const double variation) : + angle_step {2.0 * M_PI / total_teams}, + device {}, + distribution_d {distance - distance * variation, distance + distance * variation}, + distribution_a {-variation * M_PI, variation * M_PI} +{ +} + + +Transform +RandomSpawner::get(const int team) +{ + const double distance = distribution_d(device); + const double angle = angle_step * team + distribution_a(device); + const Point position { + distance * std::cos(angle), + distance * std::sin(angle), + }; + return {position, {}}; +} + + +} // namespace battles +} // namespace kurator |