#include "Enemy.h" #include #include #include #include "Behaviour.h" #include "Generator.h" #include "Static.h" Enemy::Enemy(std::unique_ptr generator) : Enemy( std::make_shared(), std::move(generator), std::make_unique()) { } Enemy::Enemy( std::shared_ptr position, std::unique_ptr generator, std::unique_ptr behaviour) : m_hold {0}, m_position {position}, m_generator {std::move(generator)}, m_behaviour {std::move(behaviour)} { m_position->x = 400; m_position->y = 40; m_generator->attach(m_position); } void Enemy::update(const float dt) { if (m_hold > 0) { m_hold -= dt; return; } m_behaviour->update(dt, *m_position, *m_generator); m_generator->update(dt); } void Enemy::draw() { if (m_hold > 0) return; DrawCircle(m_position->x, m_position->y, 6, DARKGRAY); } void 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; }