internal Position Check(GridSize gridSize) { if (_xCoordinate > -1 && _yCoordinate > -1 && gridSize.IsValid(_xCoordinate, _yCoordinate)) { return(this); } return(Invalid); }
internal Position Apply(GridSize gridSize, Position position) { foreach (var routeStep in _routeSteps) { position = position.Apply(routeStep) .Check(gridSize); if (position.Equals(Position.Invalid)) { throw new InvalidRouteException(); } } return(position); }
public static Arena From(GridSize gridSize, IEnumerable <Robot> robots) { return(new Arena(gridSize, robots)); }
private Arena(GridSize gridSize, IEnumerable <Robot> robots) { _gridSize = gridSize; _robots = robots; }
internal Position FollowRoute(GridSize gridSize) { return(_route.Apply(gridSize, _position)); }