newlon/addons/pvzadventure/scripts/InitialEditor.cs
2025-07-17 20:28:47 +05:00

46 lines
1 KiB
C#

using Godot;
[Tool]
public partial class InitialEditor : Node
{
public AdventureLevelResource editedResource;
[Signal] public delegate void SaveCallbackEventHandler();
public override void _Ready()
{
foreach (var child in GetChild(0).GetChildren())
{
if (child is UNI_GridItem gridItem)
{
gridItem.ResourceChanged += OnResourceChanged;
}
}
}
public void SetData(AdventureLevelResource resource)
{
editedResource = resource;
for (int i = 0; i < GetChild(0).GetChildCount(); i++)
{
if (GetChild(0).GetChild(i) is UNI_GridItem gridItem)
{
gridItem.index = i;
if (editedResource.initialScenes[i] == null)
gridItem.SetData("");
else
gridItem.SetData(editedResource.initialScenes[i].ResourcePath);
}
}
}
public void OnResourceChanged(string to, int index)
{
if (ResourceLoader.Exists(to))
{
editedResource.initialScenes[index] = ResourceLoader.Load<PackedScene>(to);
}
else
{
editedResource.initialScenes[index] = null;
}
EmitSignal(SignalName.SaveCallback);
}
}