37 lines
839 B
C#
37 lines
839 B
C#
using Godot;
|
|
|
|
namespace Newlon.Components.Level;
|
|
|
|
[GlobalClass]
|
|
public partial class LevelRunner : Node
|
|
{
|
|
private AdventureLevelResource resource;
|
|
[Export] private RowSpawner rowSpawner;
|
|
[Export] private Timer waveTimer;
|
|
private int waveIndex = -1;
|
|
|
|
public override void _Ready()
|
|
{
|
|
waveTimer.Timeout += SummonWave;
|
|
}
|
|
|
|
public void SetLevelResource(AdventureLevelResource data)
|
|
{
|
|
resource = data;
|
|
waveTimer.Stop();
|
|
waveTimer.WaitTime = resource.initialWaveDelay;
|
|
waveTimer.Start();
|
|
|
|
}
|
|
|
|
private void SummonWave()
|
|
{
|
|
waveIndex += 1;
|
|
rowSpawner.Add(resource.waves[waveIndex].zombiesOrdered);
|
|
|
|
if (waveIndex == resource.waves.Count - 1) return;
|
|
|
|
waveTimer.WaitTime = resource.waves[waveIndex].customWaveDelay > 0 ? resource.waves[waveIndex].customWaveDelay : resource.standardWaveDelay;
|
|
waveTimer.Start();
|
|
}
|
|
}
|