#include "wave.h" #include "game_state.h" #include "components.h" WaveInfo getWaveInfo(i32 idx) { BZ_ASSERT(idx >= 0); WaveData waveData; if (idx >= NUM_WAVES) { waveData = predefWaves[NUM_WAVES - 1]; waveData.difficultyScale += (idx - NUM_WAVES) * 0.1f; } else { waveData = predefWaves[idx]; } WaveInfo info = { .number = idx, .data = waveData, .orcsToSend = waveData.numOrcs, .goblinsToSend = waveData.numGoblins, }; info.data.timeBeforeStart /= 60; return info; } void updateWave(WaveInfo *wave, f32 dt) { wave->orcsElapsed += dt; wave->goblinsElapsed += dt; wave->elapsed += dt; if (wave->elapsed < wave->data.timeBeforeStart) return; wave->started = true; } bool isWaveSendingOver(const WaveInfo *wave) { return wave->orcsToSend == 0 && wave->goblinsToSend == 0; } bool isWaveOver(const WaveInfo *wave) { if (!isWaveSendingOver(wave)) return false; return wave->started && ecs_count_id(ECS, ecs_id(Swarm)) == 0; }