using Godot; using System; using System.Collections.Generic; using System.Linq; public partial class BasicMovement : PegAction { public override void _Ready() { base._Ready(); _category = "movement"; _priority = 0; _cost = 1; _range = 2^32; _usesMax = 2^32; _usesRemaining = _usesMax; } public override Tween CreateAnimation(Peg PEG) { GD.Print(PEG._address); PegController pegController = PEG._pegController; Map map = pegController._playArea._map; Vector2I cell = PEG._path[0]; Tween subtween = CreateTween(); Vector2 target = map.GetCellPositionFromAddress(cell); subtween.TweenProperty(PEG, "global_position", target, 0.25f); PEG._path.RemoveAt(0); return subtween; } public override void DoImmediately(Peg PEG) { List path = PEG.GetBestPath(); PegController pegController = PEG._pegController; Map map = pegController._playArea._map; if (path?.Count == 0) { return; } Vector2I cell = path[0]; map.SetCellPeg(cell, PEG); PEG._path.Add(cell); } public override bool MeetsCriteria(Peg PEG) { return base.MeetsCriteria(PEG) && PEG._address.Y > PEG._pegController._playArea._map._firstOpenRow; } }