package laba1Loco;

public class MoveToBorder extends AbstractStrategy{
    protected boolean IsTargetDestinaion()
    {
        var objParams = GetObjectParameters();
        if (objParams == null)
        {
            return false;
        }
        return objParams.RightBorder() <= FieldWidth &&
            objParams.RightBorder() + GetStep() >= FieldWidth &&
            objParams.DownBorder() <= FieldHeight &&
            objParams.DownBorder() + GetStep() >= FieldHeight;
    }
    protected void MoveToTarget()
    {
        var objParams = GetObjectParameters();
        if (objParams == null)
        {
            return;
        }
        var diffX = objParams.RightBorder() - FieldWidth;
        if (Math.abs(diffX) > GetStep())
        {
            if (diffX > 0)
            {
                MoveLeft();
            }
            else
            {
                MoveRight();
            }
        }
        var diffY = objParams.DownBorder() - FieldHeight;
        if (Math.abs(diffY) > GetStep())
        {
            if (diffY > 0)
            {
                MoveUp();
            }
            else
            {
                MoveDown();
            }
        }
    }
}