Server-side system that manages enemy wave spawning and level progression. More...
#include <EnemySpawnSystem.hpp>
Inheritance diagram for gme::EnemySpawnSystem:
Collaboration diagram for gme::EnemySpawnSystem:Public Member Functions | |
| EnemySpawnSystem (EntityManager &entityManager) | |
| Constructor. | |
| ~EnemySpawnSystem () override=default | |
| Destructor. | |
| EnemySpawnSystem (const EnemySpawnSystem &)=delete | |
| Deleted copy constructor (non-copyable) | |
| EnemySpawnSystem & | operator= (const EnemySpawnSystem &)=delete |
| Deleted copy assignment operator (non-copyable) | |
| EnemySpawnSystem (EnemySpawnSystem &&)=delete | |
| Deleted move constructor (non-movable) | |
| EnemySpawnSystem & | operator= (EnemySpawnSystem &&)=delete |
| Deleted move assignment operator (non-movable) | |
| void | update (ecs::Registry ®istry, float deltaTime) override |
| Update the spawn system (called each frame) | |
| void | reset () |
| Reset the spawn system to initial state. | |
| void | setEnabled (bool enabled) |
| Enable or disable enemy spawning. | |
| bool | isEnabled () const |
| Check if enemy spawning is currently enabled. | |
| size_t | getTotalEnemiesSpawned () const |
| Get total number of enemies spawned since reset. | |
| size_t | getCurrentWaveIndex () const |
| Get current wave index. | |
| float | getLevelTime () const |
| Get elapsed time since level start. | |
Public Member Functions inherited from ecs::ASystem | |
| bool | isEnable () override |
| void | setEnable (const bool enable) override |
Public Member Functions inherited from ecs::ISystem | |
| virtual | ~ISystem ()=default |
Private Member Functions | |
| void | initializeWaves () |
| Initialize all spawn waves for the level. | |
| void | processWave (SpawnWave &wave, float deltaTime) |
| Process a single spawn wave. | |
| float | getRandomY () |
| Generate random Y position for enemy spawn. | |
| float | getSpawnX () const |
| Get X position for enemy spawns (right side of screen) | |
Private Attributes | |
| EntityManager & | m_entityManager |
| Entity manager for spawning enemies. | |
| float | m_levelTime |
| Elapsed time since level start (seconds) | |
| size_t | m_currentWaveIndex |
| Index of current/next wave to process. | |
| float | m_waveSpawnTimer |
| Timer for spawning enemies within current wave. | |
| bool | m_enabled |
| Whether spawning is currently enabled. | |
| size_t | m_totalEnemiesSpawned |
| Total number of enemies spawned this session. | |
| std::vector< SpawnWave > | m_waves |
| List of all spawn waves for the level. | |
| std::mt19937 | m_rng |
| Random number generator for spawn positions. | |
| std::uniform_real_distribution< float > | m_yDistribution |
| Distribution for random Y positions. | |
Server-side system that manages enemy wave spawning and level progression.
This ECS system controls the flow of enemy spawns throughout a game session. Features include:
The system maintains internal state for level time and wave progression, and spawns enemies at the right edge of the screen with random Y positions. All spawning is deterministic based on server time to ensure synchronized gameplay across all clients.
Definition at line 59 of file EnemySpawnSystem.hpp.
|
explicit |
Constructor.
| entityManager | Entity manager for creating enemy entities |
Initializes the spawn system and sets up initial wave configurations
Definition at line 13 of file EnemySpawnSystem.cpp.
References utl::INFO, initializeWaves(), utl::Logger::log(), m_rng, and m_waves.
Here is the call graph for this function:
|
overridedefault |
Destructor.
|
delete |
Deleted copy constructor (non-copyable)
|
delete |
Deleted move constructor (non-movable)
|
inline |
Get current wave index.
Returns the index in the wave array, useful for level progression tracking
Definition at line 123 of file EnemySpawnSystem.hpp.
References m_currentWaveIndex.
|
inline |
Get elapsed time since level start.
Used for wave timing and level progression
Definition at line 130 of file EnemySpawnSystem.hpp.
References m_levelTime.
|
private |
Generate random Y position for enemy spawn.
Uses uniform distribution to place enemies at various heights
Definition at line 197 of file EnemySpawnSystem.cpp.
References m_rng, and m_yDistribution.
Referenced by processWave().
Here is the caller graph for this function:
|
inlineprivate |
Get X position for enemy spawns (right side of screen)
Enemies spawn off-screen to the right and move left
Definition at line 172 of file EnemySpawnSystem.hpp.
Referenced by processWave().
Here is the caller graph for this function:
|
inline |
Get total number of enemies spawned since reset.
Useful for statistics and debugging
Definition at line 116 of file EnemySpawnSystem.hpp.
References m_totalEnemiesSpawned.
|
private |
Initialize all spawn waves for the level.
Populates the m_waves vector with predefined wave configurations including timing, enemy counts, and boss spawns
Definition at line 85 of file EnemySpawnSystem.cpp.
References gme::SpawnWave::advancedEnemyCount, gme::SpawnWave::basicEnemyCount, gme::SpawnWave::bossSpawn, m_waves, gme::SpawnWave::spawnedCount, gme::SpawnWave::spawnInterval, and gme::SpawnWave::spawnTime.
Referenced by EnemySpawnSystem().
Here is the caller graph for this function:
|
inline |
Check if enemy spawning is currently enabled.
Definition at line 109 of file EnemySpawnSystem.hpp.
References m_enabled.
|
delete |
Deleted copy assignment operator (non-copyable)
|
delete |
Deleted move assignment operator (non-movable)
|
private |
Process a single spawn wave.
| wave | Wave configuration to process |
| deltaTime | Time elapsed since last frame |
Handles the spawning of enemies from this wave according to spawn interval, spawning enemies gradually over time
Definition at line 140 of file EnemySpawnSystem.cpp.
References gme::SpawnWave::advancedEnemyCount, gme::SpawnWave::basicEnemyCount, gme::SpawnWave::bossSpawn, gme::EntityManager::createAdvancedEnemy(), gme::EntityManager::createBasicEnemy(), gme::EntityManager::createBoss(), getRandomY(), getSpawnX(), utl::INFO, utl::Logger::log(), m_entityManager, m_totalEnemiesSpawned, m_waveSpawnTimer, gme::SpawnWave::spawnedCount, and gme::SpawnWave::spawnInterval.
Referenced by update().
Here is the call graph for this function:
Here is the caller graph for this function:| void gme::EnemySpawnSystem::reset | ( | ) |
Reset the spawn system to initial state.
Resets level time, wave index, and spawn counters. Used when starting a new game.
Definition at line 68 of file EnemySpawnSystem.cpp.
References utl::INFO, utl::Logger::log(), m_currentWaveIndex, m_enabled, m_levelTime, m_totalEnemiesSpawned, m_waves, and m_waveSpawnTimer.
Here is the call graph for this function:
|
inline |
Enable or disable enemy spawning.
| enabled | True to enable spawning, false to disable |
When disabled, no enemies will spawn regardless of wave timing
Definition at line 103 of file EnemySpawnSystem.hpp.
References m_enabled.
|
overridevirtual |
Update the spawn system (called each frame)
| registry | ECS registry containing all entities |
| deltaTime | Time elapsed since last frame (in seconds) |
Advances level time, checks for wave triggers, and spawns enemies according to wave configurations
Implements ecs::ISystem.
Definition at line 26 of file EnemySpawnSystem.cpp.
References utl::INFO, utl::Logger::log(), m_currentWaveIndex, m_enabled, m_levelTime, m_waves, m_waveSpawnTimer, and processWave().
Here is the call graph for this function:
|
private |
Index of current/next wave to process.
Definition at line 135 of file EnemySpawnSystem.hpp.
Referenced by getCurrentWaveIndex(), reset(), and update().
|
private |
Whether spawning is currently enabled.
Definition at line 137 of file EnemySpawnSystem.hpp.
Referenced by isEnabled(), reset(), setEnabled(), and update().
|
private |
Entity manager for spawning enemies.
Definition at line 133 of file EnemySpawnSystem.hpp.
Referenced by processWave().
|
private |
Elapsed time since level start (seconds)
Definition at line 134 of file EnemySpawnSystem.hpp.
Referenced by getLevelTime(), reset(), and update().
|
private |
Random number generator for spawn positions.
Definition at line 141 of file EnemySpawnSystem.hpp.
Referenced by EnemySpawnSystem(), and getRandomY().
|
private |
Total number of enemies spawned this session.
Definition at line 138 of file EnemySpawnSystem.hpp.
Referenced by getTotalEnemiesSpawned(), processWave(), and reset().
|
private |
List of all spawn waves for the level.
Definition at line 140 of file EnemySpawnSystem.hpp.
Referenced by EnemySpawnSystem(), initializeWaves(), reset(), and update().
|
private |
Timer for spawning enemies within current wave.
Definition at line 136 of file EnemySpawnSystem.hpp.
Referenced by processWave(), reset(), and update().
|
private |
Distribution for random Y positions.
Definition at line 142 of file EnemySpawnSystem.hpp.
Referenced by getRandomY().