Level runners
This commit is contained in:
parent
d52d4be5ff
commit
5010c61309
11 changed files with 398 additions and 110 deletions
37
scripts/level/LevelRunner.cs
Normal file
37
scripts/level/LevelRunner.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue