This commit is contained in:
Rendo 2025-07-26 07:26:11 +05:00
commit 87f841e8e1
24 changed files with 203 additions and 57 deletions

View file

@ -0,0 +1,32 @@
using Godot;
namespace Newlon.Components.Plants;
public partial class DragAction : Node
{
[Signal] public delegate void DragBeginEventHandler();
[Signal] public delegate void DragEndEventHandler();
private bool dragging = false;
public override void _Ready()
{
GetParent<Area2D>().InputEvent += OnInputEvent;
}
public void OnInputEvent(Node viewport, InputEvent @event, long shape_index)
{
if (@event.IsActionPressed("primary_action"))
{
dragging = true;
EmitSignal(SignalName.DragBegin);
}
}
public override void _Input(InputEvent @event)
{
if (dragging && @event.IsActionReleased("primary_action"))
{
dragging = false;
EmitSignal(SignalName.DragEnd);
}
}
}

View file

@ -0,0 +1 @@
uid://cu63aiowp5bqd

View file

@ -0,0 +1,36 @@
using Godot;
namespace Newlon.Components.Plants;
public partial class SnipachBehaviour : BaseBehaviour
{
[Export] public AreaAttack attackBox;
[Export] public Timer timer;
[Export] public Timer guardTimer;
private bool dragging = false;
public void OnDragBegin()
{
if (timer.TimeLeft > 0 || guardTimer.TimeLeft > 0) return;
dragging = true;
attackBox.Visible = dragging;
}
public void OnDragEnd()
{
if (dragging == false) return;
attackBox.Attack();
dragging = false;
attackBox.Visible = dragging;
timer.Start();
}
public override void _PhysicsProcess(double delta)
{
if (dragging)
{
attackBox.GlobalPosition = (attackBox.GetGlobalMousePosition() / FieldParams.Tile).Ceil() * FieldParams.Tile - new Vector2(20, 14);
}
}
}

View file

@ -0,0 +1 @@
uid://csgksiyma0h4t