diff options
-rw-r--r-- | engine/enemy.cpp | 28 | ||||
-rw-r--r-- | engine/enemy.h | 22 | ||||
-rw-r--r-- | engine/stage.cpp | 5 |
3 files changed, 49 insertions, 6 deletions
diff --git a/engine/enemy.cpp b/engine/enemy.cpp index ed07dec..87e9e87 100644 --- a/engine/enemy.cpp +++ b/engine/enemy.cpp @@ -6,10 +6,8 @@ Enemy::Enemy(const Vector2& initpos, std::vector<BulletPattern*>& stage_patterns) : patterns(stage_patterns) { pos = initpos; - - texture = new TextureSDL("textures/enemy.png"); - patterns.push_back(new BulletPattern1(Vector2(0.5, 0.8))); + texture = new TextureSDL("textures/enemy.png"); } void Enemy::update() { @@ -28,3 +26,27 @@ void Enemy::draw() { glDisable(GL_TEXTURE_2D); } + +Enemy1::Enemy1(const Vector2& initpos, std::vector<BulletPattern*>& stage_patterns) : Enemy(initpos, stage_patterns) { + steps = 0; + + patterns.push_back(new BulletPattern1(initpos)); +} + +void Enemy1::update() { + steps++; + if(steps == 180) { + patterns.push_back(new BulletPattern2(pos)); + } +} + +Enemy2::Enemy2(const Vector2& initpos, std::vector<BulletPattern*>& stage_patterns) : Enemy(initpos, stage_patterns) { + steps = 0; +} + +void Enemy2::update() { + steps++; + if(steps == 660) { + patterns.push_back(new BulletPattern3(pos)); + } +} diff --git a/engine/enemy.h b/engine/enemy.h index 9ccdc86..9a5c4d3 100644 --- a/engine/enemy.h +++ b/engine/enemy.h @@ -16,9 +16,29 @@ class Enemy { public: Enemy(const Vector2& initpos, std::vector<BulletPattern*>& stage_patterns); - void update(); + virtual void update(); void draw(); }; +class Enemy1 : public Enemy { + protected: + unsigned int steps; + + public: + Enemy1(const Vector2& initpos, std::vector<BulletPattern*>& stage_patterns); + + virtual void update(); +}; + +class Enemy2 : public Enemy { + protected: + unsigned int steps; + + public: + Enemy2(const Vector2& initpos, std::vector<BulletPattern*>& stage_patterns); + + virtual void update(); +}; + #endif diff --git a/engine/stage.cpp b/engine/stage.cpp index 84a4cc7..59fda88 100644 --- a/engine/stage.cpp +++ b/engine/stage.cpp @@ -15,8 +15,9 @@ Stage::Stage() { texture = new TextureSDL("textures/shot1.png"); shader = new GLShaderProgram(); - enemy_list.push_back(new Enemy(Vector2(0.25, 0.75), patterns)); - enemy_list.push_back(new Enemy(Vector2(0.75, 0.75), patterns)); + enemy_list.push_back(new Enemy1(Vector2(0.25, 0.75), patterns)); + enemy_list.push_back(new Enemy1(Vector2(0.75, 0.75), patterns)); + enemy_list.push_back(new Enemy2(Vector2(0.50, 0.80), patterns)); //patterns.push_back(new BulletPattern3(Vector2(0.5, 0.5))); //patterns.push_back(new BulletPattern1(Vector2(0.5, 0.8))); |