public static PositionComponent GetNewPositionByDirection(this PositionComponent position, MovementDirection direction)
        {
            var newPosition = position.GetCopy();

            switch (direction)
            {
            case MovementDirection.North:
                newPosition.MoveBy(deltaY: -1, deltaX: 0);
                break;

            case MovementDirection.West:
                newPosition.MoveBy(deltaY: 0, deltaX: -1);
                break;

            case MovementDirection.South:
                newPosition.MoveBy(deltaY: 1, deltaX: 0);
                break;

            case MovementDirection.East:
                newPosition.MoveBy(deltaY: 0, deltaX: 1);
                break;

            case MovementDirection.NorthEast:
                newPosition.MoveBy(deltaY: -1, deltaX: 1);
                break;

            case MovementDirection.NorthWest:
                newPosition.MoveBy(deltaY: -1, deltaX: -1);
                break;

            case MovementDirection.SouthEast:
                newPosition.MoveBy(deltaY: 1, deltaX: 1);
                break;

            case MovementDirection.SouthWest:
                newPosition.MoveBy(deltaY: 1, deltaX: -1);
                break;
            }
            return(newPosition);
        }
 public static PositionComponent GetMovedByCopy(this PositionComponent thisComponent, int deltaY, int deltaX)
 {
     return(thisComponent.GetCopy().MoveBy(deltaY, deltaX));
 }