diff options
author | Aki <please@ignore.pl> | 2022-11-12 14:28:39 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-11-12 14:28:39 +0100 |
commit | c6d17ef545978bec555c8af8ef5eaef82c44e5f1 (patch) | |
tree | 461fff66de35a9f26aebde8cffc6386efa8e104f /battles/src/BaseBattle.cpp | |
parent | 0e57ea98049658b4d82488c43d71b4ced534c2af (diff) | |
download | kurator-c6d17ef545978bec555c8af8ef5eaef82c44e5f1.zip kurator-c6d17ef545978bec555c8af8ef5eaef82c44e5f1.tar.gz kurator-c6d17ef545978bec555c8af8ef5eaef82c44e5f1.tar.bz2 |
Implemented very basic linear move-to-dest component
Diffstat (limited to 'battles/src/BaseBattle.cpp')
-rw-r--r-- | battles/src/BaseBattle.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/battles/src/BaseBattle.cpp b/battles/src/BaseBattle.cpp index a9ac45c..8527a56 100644 --- a/battles/src/BaseBattle.cpp +++ b/battles/src/BaseBattle.cpp @@ -28,6 +28,8 @@ BaseBattle::BaseBattle(const Scenario& scenario) : _registry.emplace<universe::ShipType>(entity, ship.type); _registry.emplace<Team>(entity, ship.team); _registry.emplace<Transform>(entity, spawner.get(ship.team)); + _registry.emplace<FloatingMovement>(entity, 0.4); + _registry.emplace<AIState>(entity, Point{0.0, 0.0}); } } @@ -42,10 +44,15 @@ BaseBattle::registry() void BaseBattle::update(const float dt) { - 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); + auto view = _registry.view<Transform, AIState, FloatingMovement>(); + for (auto&& [entity, transform, state, movement] : view.each()) { + const double speed = movement.speed * dt; + const Point diff = (state.destination - transform.position); + if (diff.magnitude() > speed) { + const Point eff = diff.normalized().scale(speed); + transform.position.x += eff.x; + transform.position.y += eff.y; + } } } |