protected void IntelliTrace(Coordinate aim) { if (!IntelliCutsAnything(new Area(aim, Position), 1)) { return; } Trace(aim); if (!IntelliCutsAnything(new Area(aim, Position), 1)) { return; } var direction = Direction.Up; do { Trace(GetReboundingPositionToShoot(aim, direction)); if (direction == Direction.Left) { break; } direction = DirectionFunctionality.Next(direction); } while (IntelliCutsAnything(new Area(aim, Position), 1)); }
public void Move(Direction direction) { if (DirectionValid(direction) && !Engine.Animations.Any( animation => (animation.AnimatedObject.Id == Id) && (((NormalMoveAnimation)animation).Direction == direction))) { Engine.Animations = new ObservableCollection <Animation.Animation>(Engine.Animations.Where( animation => !((animation.AnimatedObject.Id == Id) && (((NormalMoveAnimation)animation).Direction == DirectionFunctionality.Inverted(direction)))) .ToList()) { new NormalMoveAnimation(this, direction, 3) } } ; { Moves.Add(direction); } }