Win and loose conditions

This commit is contained in:
Rendo 2025-07-20 04:23:22 +05:00
commit b551c7f012
15 changed files with 193 additions and 122 deletions

View file

@ -22,6 +22,7 @@ public partial class LevelRunner : Node
[Signal] public delegate void HugeWaveInitiatedEventHandler(int waveNumber);
[Signal] public delegate void FinalWaveInitiatedEventHandler();
public override void _Ready()
{
waveTimer.Timeout += SummonWave;
@ -51,6 +52,7 @@ public partial class LevelRunner : Node
private void SummonWave()
{
waveIndex += 1;
hugeWaveApproaching = false;
EmitSignal(SignalName.WaveChanged, waveIndex);
if (resource.waves[waveIndex].isHugeWave) EmitSignal(SignalName.HugeWaveInitiated, waveIndex);
@ -69,9 +71,10 @@ public partial class LevelRunner : Node
}
private void OnHPChanged(float delta)
{
if (waveIndex == resource.waves.Count - 1) return;
waveHealth += delta;
if (waveIndex == resource.waves.Count - 1) return;
if (waveHealth / waveHealthMax <= resource.wavePercentage)
{
if (resource.waves[waveIndex + 1].isHugeWave && waveTimer.TimeLeft > 6)
@ -107,5 +110,18 @@ public partial class LevelRunner : Node
waveHealthMax += zombie.GetMaxHPMixed();
waveHealth = waveHealthMax;
zombie.HPChangedMixed += OnHPChanged;
if (waveIndex == resource.waves.Count - 1)
{
zombie.HasBeenKilled += (who) =>
{
if (waveHealth <= 0)
{
RuntimeLevelData.Instance.SetLevelState(RuntimeLevelData.LevelStates.Win);
}
};
}
}
}