diff options
author | Aki <please@ignore.pl> | 2022-04-18 23:50:31 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-04-18 23:50:31 +0200 |
commit | 78097b5496209b56cef9d7fc8d6c13e4c87e0eb1 (patch) | |
tree | 29ccba95bafd04b594938a7f55be61c52bf4f4cc /Enemy.cpp | |
parent | 5bb6b95fe71d33956491b98c29bf464a440ad221 (diff) | |
download | bullethell2022-78097b5496209b56cef9d7fc8d6c13e4c87e0eb1.zip bullethell2022-78097b5496209b56cef9d7fc8d6c13e4c87e0eb1.tar.gz bullethell2022-78097b5496209b56cef9d7fc8d6c13e4c87e0eb1.tar.bz2 |
Added simple behaviours for enemies
I don't quite like FallingAndOscillating approach. Perhaps it will be
better to just make it a list/vector in the enemy to allow for
composition.
Diffstat (limited to 'Enemy.cpp')
-rw-r--r-- | Enemy.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
@@ -5,13 +5,28 @@ #include <raylib.h> +#include "Behaviour.h" #include "Generator.h" +#include "Static.h" Enemy::Enemy(std::unique_ptr<Generator> generator) : + Enemy( + std::make_shared<Vector2>(), + std::move(generator), + std::make_unique<Static>()) +{ +} + + +Enemy::Enemy( + std::shared_ptr<Vector2> position, + std::unique_ptr<Generator> generator, + std::unique_ptr<Behaviour> behaviour) : m_hold {0}, - m_position {std::make_shared<Vector2>()}, - m_generator {std::move(generator)} + m_position {position}, + m_generator {std::move(generator)}, + m_behaviour {std::move(behaviour)} { m_position->x = 400; m_position->y = 40; @@ -26,8 +41,8 @@ Enemy::update(const float dt) m_hold -= dt; return; } - if (m_generator) - m_generator->update(dt); + m_behaviour->update(dt, *m_position, *m_generator); + m_generator->update(dt); } @@ -46,3 +61,10 @@ Enemy::set_position(const float x, const float y) m_position->x = x; m_position->y = y; } + + +void +Enemy::set_hold(const float seconds) +{ + m_hold = seconds; +} |