summaryrefslogtreecommitdiffhomepage
path: root/Enemy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Enemy.cpp')
-rw-r--r--Enemy.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/Enemy.cpp b/Enemy.cpp
index b8329a2..1be3c76 100644
--- a/Enemy.cpp
+++ b/Enemy.cpp
@@ -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;
+}