#include "EnemyFactory.h" #include #include #include "ArcGenerator.h" #include "ConstantVelocity.h" #include "Enemy.h" #include "FallingAndOscillating.h" Enemy EnemyFactory::make_small( ConstantVelocityBullet::Vector& bullets, const float x, const float y, const float hold, const bool mirror) { auto position = std::make_shared(Vector2{x, y}); auto generator = std::make_shared(position, bullets); auto behaviour = std::make_shared(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_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; } Enemy EnemyFactory::make_thick( ConstantVelocityBullet::Vector& bullets, const float x, const float y, const float hold, const float angle) { auto position = std::make_shared(Vector2{x, y}); auto generator = std::make_shared(position, bullets); auto behaviour = std::make_shared(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{x, y}); auto generator = std::make_shared(position, bullets); auto behaviour = std::make_shared(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; }