Files
nodewars/ConnectionArea.cs
2026-05-31 19:14:19 +02:00

69 lines
1019 B
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;
}
return;
void HandleNoduleEntered(Nodule newNodule)
{
if (newNodule.BuildMode)
{
return;
}
EmitSignalNoduleEntered(newNodule);
}
}
private void OnAreaExited(Area2D area)
{
switch (area)
{
case Nodule nodule:
HandleNoduleExited(nodule);
break;
}
return;
void HandleNoduleExited(Nodule newNodule)
{
if (newNodule.BuildMode)
{
return;
}
EmitSignalNoduleExited(newNodule);
}
}
public float GetRadius()
{
return ((CircleShape2D)_.CollisionShape2D.Shape).Radius;
}
}