diff options
author | Aki <please@ignore.pl> | 2022-11-11 17:20:11 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-11-11 17:20:11 +0100 |
commit | 53d45e11743909b8816ef95f50ac1c2b6467a3b7 (patch) | |
tree | da8f95fd5f127ac2bb09a9662340b9877bb066d5 | |
parent | bd8b0a9ba1bdd68b915fed75f1e901851b340efd (diff) | |
download | kurator-53d45e11743909b8816ef95f50ac1c2b6467a3b7.zip kurator-53d45e11743909b8816ef95f50ac1c2b6467a3b7.tar.gz kurator-53d45e11743909b8816ef95f50ac1c2b6467a3b7.tar.bz2 |
Changed rotation to be represented by angle
-rw-r--r-- | battles/include/kurator/battles/components.h | 2 | ||||
-rw-r--r-- | battles/src/Battle.cpp | 9 | ||||
-rw-r--r-- | battles/src/RandomSpawner.cpp | 8 | ||||
-rw-r--r-- | kurator/src/Battle.cpp | 2 |
4 files changed, 15 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}; } diff --git a/kurator/src/Battle.cpp b/kurator/src/Battle.cpp index 7320c19..f78675c 100644 --- a/kurator/src/Battle.cpp +++ b/kurator/src/Battle.cpp @@ -1,6 +1,7 @@ #include "Battle.h" #include <algorithm> +#include <cmath> #include <memory> #include <utility> @@ -49,6 +50,7 @@ Battle::draw() const const int x = width/2 + transform.position.x*scale; const int y = height/2 + transform.position.y*scale; DrawCircle(x, y, 5, color); + DrawLine(x, y, x + 6 * std::cos(transform.angle), y + 6 * std::sin(transform.angle), WHITE); DrawText(ship_type.name.c_str(), x+10, y-10, 20.0f, GRAY); } } |