public static IEnumerable <Point> NearPoints(this Point point) { foreach (Direction d in Enum.GetValues(typeof(Direction))) { yield return(point.AddDirection(d)); } }
public static IEnumerable <Direction> GetAvailableDirections(Point current) { foreach (Direction dir in Enum.GetValues(typeof(Direction))) { if (Nodes.TryGetValue(current.AddDirection(dir), out var node) && node != HexType.Rock) { yield return(dir); } } }
public PathVariant AddMove(Direction direction, int acceleration) { var result = new PathVariant(); Moves.ForEach(result.Moves.Add); result.Speed = Speed + acceleration; result.Direction = direction; result.TotalTime += 1m / result.Speed; result.Point = Point.AddDirection(direction); result.Moves.Add(new Move() { Direction = direction, Acceleration = acceleration, Point = result.Point }); return(result); }