14 : m_entityManager(entityManager), m_currentWaveIndex(-1), m_waveTimer(0.0f), m_spawnTimer(0.0f),
15 m_active(false), m_completed(false), m_waveInProgress(false), m_initialDelayPassed(false),
16 m_initialDelayTimer(0.0f)
34 std::cout <<
"[WaveManager] Initial delay complete, waves starting!" << std::endl;
61 bool shouldAdvance =
false;
88 std::cout <<
"[WaveManager] Wave " << (
m_currentWaveIndex + 1) <<
" completed!" << std::endl;
100 std::cout <<
"[WaveManager] All waves completed!" << std::endl;
116 std::cout <<
"[WaveManager] Wave system started with " <<
m_waves.size()
117 <<
" waves (initial delay: " <<
INITIAL_DELAY <<
"s)" << std::endl;
131 std::cout <<
"[WaveManager] Wave system reset" << std::endl;
150 std::cout <<
"[WaveManager] Default waves created (" <<
m_waves.size() <<
" waves)" << std::endl;
173 <<
" enemies" << std::endl;
180 return enemies.empty();
193 for (
size_t i = 0; i < currentWave.
enemies.size(); ++i)
206 float spawnX =
static_cast<float>(screenWidth) + spawn.
x;
207 float spawnY = spawn.
y;
214 std::cout <<
"[WaveManager] Spawned Basic Enemy at (" << spawnX <<
", " << spawnY <<
")"
220 std::cout <<
"[WaveManager] Spawned Advanced Enemy at (" << spawnX <<
", " << spawnY <<
")"
226 std::cout <<
"[WaveManager] Spawned Boss at (" << spawnX <<
", " << spawnY <<
")" << std::endl;
230 std::cerr <<
"[WaveManager] Unknown enemy type in spawn!" << std::endl;
Wave-based enemy spawning management system for R-Type server.
Class for managing entities and their components.
Central entity lifecycle manager for the R-Type game server.
const std::unordered_map< std::uint32_t, ecs::Entity > & getEnemies() const
Get all enemy entities.
ecs::Entity createBoss(float x, float y, float health=1000.0f)
Create a boss enemy entity.
ecs::Entity createAdvancedEnemy(float x, float y, float health=100.0f)
Create an advanced enemy entity.
ecs::Entity createBasicEnemy(float x, float y, float health=50.0f)
Create a basic enemy entity.
bool m_waveInProgress
Whether a wave is currently spawning.
bool m_completed
Whether all waves are completed.
void startNextWave()
Start the next wave in sequence.
std::vector< Wave > m_waves
List of all configured waves.
void clearWaves()
Clear all configured waves.
float m_spawnTimer
Timer for processing enemy spawns.
void createWave3()
Create wave 3 configuration (increased difficulty)
void update(ecs::Registry ®istry, float dt, int screenWidth)
Update wave manager logic (called each frame)
void start()
Start the wave system.
static constexpr float INITIAL_DELAY
Initial delay in seconds (synced with client)
bool m_initialDelayPassed
Whether initial delay has elapsed.
float m_initialDelayTimer
Timer for initial delay countdown.
WaveManager(EntityManager &entityManager)
Constructor.
void reset()
Stop and reset the wave system to initial state.
void createWave1()
Create wave 1 configuration (basic introduction wave)
bool isWaveCleared() const
Check if current wave is cleared of all enemies.
int m_currentWaveIndex
Index of current/next wave (0-based)
std::vector< bool > m_enemiesSpawned
Track which enemies in current wave have spawned.
void processSpawns(float dt, int screenWidth)
Process enemy spawns for current wave.
EntityManager & m_entityManager
Reference to entity manager for spawning.
void createBossWave()
Create boss wave configuration (final challenge)
void setupDefaultWaves()
Initialize with default wave patterns.
void createWave4()
Create wave 4 configuration (final standard wave)
float m_waveTimer
Timer for current wave duration.
void addWave(const Wave &wave)
Add a custom wave to the wave list.
void createWave2()
Create wave 2 configuration (mixed enemies)
bool m_active
Whether wave system is active.
@ ENEMY_ADVANCED
Advanced enemy type (complex behavior)
@ ENEMY_BASIC
Basic enemy type (simple behavior)
@ BOSS
Boss enemy (high health, special patterns)
Definition of a single enemy spawn within a wave.
float spawnDelay
Delay in seconds from wave start before spawning this enemy.
float health
Initial health points for this enemy.
float y
Spawn Y position (vertical placement on screen)
float x
Spawn X position (typically off-screen right)
ServerEntityType type
Type of enemy to spawn (ENEMY_BASIC, ENEMY_ADVANCED, or BOSS)
Complete wave configuration containing multiple enemy spawns.
std::vector< EnemySpawn > enemies
List of all enemies to spawn in this wave.
int waveNumber
Wave sequence number (1-based)
std::function< void()> onComplete
Optional callback function invoked when wave completes.
bool waitForClear
If true, next wave starts only when all enemies are destroyed.
float duration
Maximum duration in seconds before next wave (if not waitForClear)