diff options
author | Aki <please@ignore.pl> | 2022-04-25 01:49:48 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-04-25 01:49:48 +0200 |
commit | c1c7fb82aed0c403865896a941388a9e2cc486d0 (patch) | |
tree | 7407e44a90d394bd285d5a02841188ed219a3267 /EnemyFactory.cpp | |
parent | 63c64254a80564e11987ba4af289cf8d47774668 (diff) | |
download | bullethell2022-c1c7fb82aed0c403865896a941388a9e2cc486d0.zip bullethell2022-c1c7fb82aed0c403865896a941388a9e2cc486d0.tar.gz bullethell2022-c1c7fb82aed0c403865896a941388a9e2cc486d0.tar.bz2 |
Extended test staged with new enemies
Diffstat (limited to 'EnemyFactory.cpp')
-rw-r--r-- | EnemyFactory.cpp | 64 |
1 files changed, 56 insertions, 8 deletions
diff --git a/EnemyFactory.cpp b/EnemyFactory.cpp index a154ae5..fc94cd5 100644 --- a/EnemyFactory.cpp +++ b/EnemyFactory.cpp @@ -4,28 +4,35 @@ #include <raylib.h> +#include "ArcGenerator.h" #include "ConstantVelocity.h" #include "Enemy.h" -#include "ExampleGenerator.h" #include "FallingAndOscillating.h" -#include "WaveGenerator.h" Enemy -EnemyFactory::make_example( +EnemyFactory::make_small( ConstantVelocityBullet::Vector& bullets, const float x, const float y, const float hold, const bool mirror) { auto position = std::make_shared<Vector2>(Vector2{x, y}); - auto generator = std::make_shared<ExampleGenerator>(position, bullets); + auto generator = std::make_shared<ArcGenerator>(position, bullets); auto behaviour = std::make_shared<FallingAndOscillating>(position, generator); + generator->m_interval = 1.2f; + generator->m_speed = 60; + generator->m_segments = 15; + generator->m_radius = 5; if (mirror) { generator->m_color = Color{100, 0, 255, 255}; - generator->m_direction *= -1; + generator->m_rotation = -0.2f; + generator->m_angle = 1.f; behaviour->m_phase = 1.f; } + else { + generator->m_rotation = 0.2f; + } Enemy enemy(position, generator, behaviour); enemy.m_hold = hold; return enemy; @@ -33,14 +40,55 @@ EnemyFactory::make_example( Enemy -EnemyFactory::make_waver( +EnemyFactory::make_thick( ConstantVelocityBullet::Vector& bullets, const float x, const float y, - const float hold) + const float hold, + const float angle) { auto position = std::make_shared<Vector2>(Vector2{x, y}); - auto generator = std::make_shared<WaveGenerator>(position, bullets); + auto generator = std::make_shared<ArcGenerator>(position, bullets); auto behaviour = std::make_shared<Falling>(position, generator); + generator->m_interval = 2.3f; + generator->m_arc = 0.3f; + generator->m_angle = 0.5f; + generator->m_last = true; + generator->m_segments = 25; + generator->m_radius = 9; + generator->m_color = Color{160, 30, 50, 200}; + generator->m_angle = angle; + behaviour->m_speed = 20; + Enemy enemy(position, generator, behaviour); + enemy.m_hold = hold; + return enemy; +} + + +Enemy +EnemyFactory::make_rotator( + ConstantVelocityBullet::Vector& bullets, + const float x, const float y, + const float hold, + const bool mirror) +{ + auto position = std::make_shared<Vector2>(Vector2{x, y}); + auto generator = std::make_shared<ArcGenerator>(position, bullets); + auto behaviour = std::make_shared<Falling>(position, generator); + generator->m_interval = 0.4f; + generator->m_speed = 100; + generator->m_arc = 0.1f; + generator->m_segments = 2; + generator->m_last = true; + generator->m_radius = 4; + if (mirror) { + generator->m_color = Color{30, 80, 170, 255}; + generator->m_rotation = -0.6f; + generator->m_angle = 1.f; + } + else { + generator->m_color = Color{30, 170, 80, 255}; + generator->m_rotation = 0.6f; + } Enemy enemy(position, generator, behaviour); enemy.m_hold = hold; return enemy; |