newlon/addons/pvzadventure/scripts/ZE_GridContainer.cs
2025-07-16 22:14:15 +05:00

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);
}
}