public static void Drop(Beaver dropper, IEnumerable <Tile> targets, string resource) { if (!dropper.CanAct() || dropper.GetCount(resource) == 0) { return; } var target = targets.FirstOrDefault(t => t == dropper.Tile || dropper.Tile._HasNeighbor(t)); if (target != null) { dropper.Drop(target, resource, dropper.GetCount(resource)); } }
public static void MoveAndDrop(Beaver dropper, IEnumerable <Tile> targets, string resource) { if (!dropper.CanAct() || dropper.GetCount(resource) == 0) { return; } if (dropper.CanMove()) { var movePoints = targets.Concat(targets.SelectMany(t => t.GetNeighbors())) .Select(n => n.ToPoint()); Move(dropper, movePoints); } Drop(dropper, targets, resource); }