Files
nodewars/ConnectionArea.cs
2026-05-30 01:05:14 +02:00

70 lines
1.1 KiB
C#

using Godot;
namespace NodeWar;
[SceneTree]
public partial class ConnectionArea : Area2D
{
[Signal]
public delegate void NoduleEnteredEventHandler(Nodule nodule);
[Signal]
public delegate void NoduleExitedEventHandler(Nodule nodule);
public override void _Ready()
{
AreaEntered += OnAreaEntered;
AreaExited += OnAreaExited;
}
private void OnAreaEntered(Area2D area)
{
switch (area)
{
case Nodule nodule:
HandleNoduleEntered(nodule);
break;
case ConnectionArea connectionArea:
HandleNoduleEntered(connectionArea.GetParent() as Nodule);
break;
}
return;
void HandleNoduleEntered(Nodule newNodule)
{
if (newNodule.BuildMode)
{
return;
}
EmitSignalNoduleEntered(newNodule);
}
}
private void OnAreaExited(Area2D area)
{
switch (area)
{
case Nodule nodule:
HandleNoduleExited(nodule);
break;
case ConnectionArea connectionArea:
HandleNoduleExited(connectionArea.GetParent() as Nodule);
break;
}
return;
void HandleNoduleExited(Nodule newNodule)
{
if (newNodule.BuildMode)
{
return;
}
EmitSignalNoduleExited(newNodule);
}
}
}