using Godot; [Tool] public partial class ZE_GridContainer : Control { private PackedScene rowEditorScene = ResourceLoader.Load("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(GetChildCount() - 1); waveData.zombiesOrdered.Remove(editor.editedSpawn); editor.QueueFree(); } private void InitEditor(RowSpawn spawn) { var editor = rowEditorScene.Instantiate(); editor.editedSpawn = spawn; editor.SaveCallback += Save; AddChild(editor); } private void Save() { EmitSignal(SignalName.SaveCallback); } }