46 lines
1 KiB
C#
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);
|
|
}
|
|
|
|
}
|