summaryrefslogtreecommitdiff
path: root/battles
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-11-11 17:20:11 +0100
committerAki <please@ignore.pl>2022-11-11 17:20:11 +0100
commit53d45e11743909b8816ef95f50ac1c2b6467a3b7 (patch)
treeda8f95fd5f127ac2bb09a9662340b9877bb066d5 /battles
parentbd8b0a9ba1bdd68b915fed75f1e901851b340efd (diff)
downloadkurator-53d45e11743909b8816ef95f50ac1c2b6467a3b7.zip
kurator-53d45e11743909b8816ef95f50ac1c2b6467a3b7.tar.gz
kurator-53d45e11743909b8816ef95f50ac1c2b6467a3b7.tar.bz2
Changed rotation to be represented by angle
Diffstat (limited to 'battles')
-rw-r--r--battles/include/kurator/battles/components.h2
-rw-r--r--battles/src/Battle.cpp9
-rw-r--r--battles/src/RandomSpawner.cpp8
3 files changed, 13 insertions, 6 deletions
diff --git a/battles/include/kurator/battles/components.h b/battles/include/kurator/battles/components.h
index 03b93a2..307acc3 100644
--- a/battles/include/kurator/battles/components.h
+++ b/battles/include/kurator/battles/components.h
@@ -14,7 +14,7 @@ namespace battles
struct Transform
{
Point position;
- Point rotation;
+ double angle;
entt::entity reference_frame = entt::null;
};
diff --git a/battles/src/Battle.cpp b/battles/src/Battle.cpp
index a28cdc6..7040dd0 100644
--- a/battles/src/Battle.cpp
+++ b/battles/src/Battle.cpp
@@ -1,5 +1,6 @@
#include <kurator/battles/Battle.h>
+#include <cmath>
#include <memory>
#include <random>
@@ -56,9 +57,11 @@ BaseBattle::registry()
void
BaseBattle::update(const float dt)
{
- auto view = _registry.view<Transform, Team>();
- for (auto&& [entity, transform, team] : view.each())
- transform.position.x += 0.1 * dt * (team.id * 2 - 1);
+ auto view = _registry.view<Transform>();
+ for (auto&& [entity, transform] : view.each()) {
+ transform.position.x += 0.1 * dt * std::cos(transform.angle);
+ transform.position.y += 0.1 * dt * std::sin(transform.angle);
+ }
}
diff --git a/battles/src/RandomSpawner.cpp b/battles/src/RandomSpawner.cpp
index a81a18c..b85d140 100644
--- a/battles/src/RandomSpawner.cpp
+++ b/battles/src/RandomSpawner.cpp
@@ -25,12 +25,16 @@ Transform
RandomSpawner::get(const int team)
{
const double distance = distribution_d(device);
- const double angle = angle_step * team + distribution_a(device);
+ const double clean_angle = angle_step * team;
+ const double angle = clean_angle + distribution_a(device);
+ double facing = clean_angle + M_PI;
+ if (facing > 2 * M_PI)
+ facing -= 2 * M_PI;
const Point position {
distance * std::cos(angle),
distance * std::sin(angle),
};
- return {position, {}};
+ return {position, facing};
}