using ProjectSeaplane.MovementStrategy; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProjectSeaplane.MovementStrategy { public class MoveToBorder : AbstractStrategy { protected override bool IsTargetDestinaion() { var objParams = GetObjectParameters; if (objParams == null) { return false; } return objParams.ObjectRightBorder <= FieldWidth && objParams.ObjectRightBorder + GetStep() >= FieldWidth && objParams.ObjectDownBorder <= FieldHeight && objParams.ObjectDownBorder + GetStep() >= FieldHeight; } protected override void MoveToTarget() { var objParams = GetObjectParameters; if (objParams == null) { return; } var diffX = objParams.ObjectRightBorder - FieldWidth; if (Math.Abs(diffX) > GetStep()) { if (diffX > 0) { MoveLeft(); } else { MoveRight(); } } var diffY = objParams.ObjectDownBorder - FieldHeight; if (Math.Abs(diffY) > GetStep()) { if (diffY > 0) { MoveUp(); } else { MoveDown(); } } } } }