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

46 lines
1.2 KiB
C#

using Godot;
[Tool]
public partial class UNI_GridItem : PanelContainer
{
private string path;
public int index;
[Signal] public delegate void ResourceChangedEventHandler(string path, int index);
public void SetData(string data)
{
path = data;
UpdateContent();
}
private void UpdateContent()
{
if (path == null || path == "")
{
GetNode<TextureRect>("Texture").Texture = null;
return;
}
GetNode<TextureRect>("Texture").Call("set_path", path);
}
public override Variant _GetDragData(Vector2 atPosition)
{
return path;
}
public override bool _CanDropData(Vector2 atPosition, Variant data)
{
return data.AsGodotDictionary<string, string>().ContainsKey("files") && ResourceLoader.Exists(data.AsGodotDictionary<string, Variant>()["files"].AsStringArray()[0]);
}
public override void _DropData(Vector2 atPosition, Variant data)
{
SetData(data.AsGodotDictionary<string, Variant>()["files"].AsStringArray()[0]);
EmitSignal(SignalName.ResourceChanged, path, index);
}
public override void _GuiInput(InputEvent @event)
{
if (@event is InputEventMouseButton buttonEvent && buttonEvent.ButtonIndex == MouseButton.Right )
{
SetData(null);
EmitSignal(SignalName.ResourceChanged, path, index);
}
}
}