44 lines
1,005 B
C#
44 lines
1,005 B
C#
using Godot;
|
|
|
|
[Tool]
|
|
public partial class ZE_GridContainer : Control
|
|
{
|
|
private PackedScene rowEditorScene = ResourceLoader.Load<PackedScene>("uid://buvnw8a7pku78");
|
|
private WaveData waveData;
|
|
[Signal] public delegate void SaveCallbackEventHandler();
|
|
public void SetData(WaveData data)
|
|
{
|
|
waveData = data;
|
|
foreach (var child in GetChildren())
|
|
{
|
|
child.QueueFree();
|
|
}
|
|
foreach (var spawn in waveData.zombiesOrdered)
|
|
{
|
|
InitEditor(spawn);
|
|
}
|
|
}
|
|
public void AddSpawn()
|
|
{
|
|
var spawn = new RowSpawn();
|
|
waveData.zombiesOrdered.Add(spawn);
|
|
InitEditor(spawn);
|
|
}
|
|
public void RemoveSpawn()
|
|
{
|
|
var editor = GetChild<ZE_RowEditor>(GetChildCount() - 1);
|
|
waveData.zombiesOrdered.Remove(editor.editedSpawn);
|
|
editor.QueueFree();
|
|
}
|
|
private void InitEditor(RowSpawn spawn)
|
|
{
|
|
var editor = rowEditorScene.Instantiate<ZE_RowEditor>();
|
|
editor.editedSpawn = spawn;
|
|
editor.SaveCallback += Save;
|
|
AddChild(editor);
|
|
}
|
|
private void Save()
|
|
{
|
|
EmitSignal(SignalName.SaveCallback);
|
|
}
|
|
}
|