using Godot; using Polonium.Attributes; namespace GlobalClasses; [ProxyNode] [GlobalClass] [Tool] public partial class SelectableTileMapLayer : TileMapLayer { [Signal] public delegate void CellSelectedEventHandler(Vector2I pos); [Signal] public delegate void CellEnteredEventHandler(Vector2I pos); private Vector2I HoveredCell { get; set; } = new Vector2I(-1, -1); public sealed override void _Process(double delta) { Vector2 mousePos = GetGlobalMousePosition(); Vector2 localMousePos = ToLocal(mousePos); Vector2I cell = LocalToMap(localMousePos); if(cell != HoveredCell) { EmitSignalCellEntered(cell); HoveredCell = cell; } __Process(delta); base._Process(delta); } public override void _UnhandledInput(InputEvent @event) { if (@event is InputEventMouseButton mouseEvent) if (mouseEvent.ButtonIndex == MouseButton.Left && mouseEvent.Pressed) EmitSignalCellSelected(HoveredCell); } [ProxyMethod] public virtual void __Process(double delta) { } }