14 : m_entityManager(entityManager), m_levelTime(0.0f), m_currentWaveIndex(0), m_waveSpawnTimer(0.0f),
15 m_enabled(false), m_totalEnemiesSpawned(0), m_yDistribution(100.0f, 980.0f)
17 const auto seed =
static_cast<unsigned int>(std::chrono::system_clock::now().time_since_epoch().count());
46 int totalToSpawn = wave.basicEnemyCount + wave.advancedEnemyCount + (wave.bossSpawn ? 1 : 0);
47 if (wave.spawnedCount >= totalToSpawn)
79 wave.spawnedCount = 0;
166 utl::Logger::log(
"EnemySpawnSystem: Spawned BOSS at (" + std::to_string(spawnX) +
", " +
167 std::to_string(spawnY) +
")",
177 utl::Logger::log(
"EnemySpawnSystem: Spawned basic enemy at (" + std::to_string(spawnX) +
", " +
178 std::to_string(spawnY) +
")",
188 utl::Logger::log(
"EnemySpawnSystem: Spawned advanced enemy at (" + std::to_string(spawnX) +
", " +
189 std::to_string(spawnY) +
")",
Server-side enemy spawning system for R-Type game progression.
This file contains the Logger class.
Class for managing entities and their components.
std::mt19937 m_rng
Random number generator for spawn positions.
void processWave(SpawnWave &wave, float deltaTime)
Process a single spawn wave.
void initializeWaves()
Initialize all spawn waves for the level.
EntityManager & m_entityManager
Entity manager for spawning enemies.
size_t m_currentWaveIndex
Index of current/next wave to process.
EnemySpawnSystem(EntityManager &entityManager)
Constructor.
void reset()
Reset the spawn system to initial state.
void update(ecs::Registry ®istry, float deltaTime) override
Update the spawn system (called each frame)
float m_waveSpawnTimer
Timer for spawning enemies within current wave.
bool m_enabled
Whether spawning is currently enabled.
float m_levelTime
Elapsed time since level start (seconds)
std::vector< SpawnWave > m_waves
List of all spawn waves for the level.
std::uniform_real_distribution< float > m_yDistribution
Distribution for random Y positions.
float getRandomY()
Generate random Y position for enemy spawn.
size_t m_totalEnemiesSpawned
Total number of enemies spawned this session.
float getSpawnX() const
Get X position for enemy spawns (right side of screen)
Central entity lifecycle manager for the R-Type game server.
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.
static void log(const std::string &message, const LogLevel &logLevel)
Configuration data for a single enemy spawn wave.
bool bossSpawn
Whether this wave spawns a boss enemy.
float spawnInterval
Time between individual enemy spawns within wave (seconds)
int basicEnemyCount
Number of basic enemies to spawn in this wave.
int spawnedCount
Number of enemies already spawned from this wave (internal counter)
int advancedEnemyCount
Number of advanced enemies to spawn in this wave.
float spawnTime
Time from level start when wave begins (seconds)