public void Validate(IMapNavigator <GridDirection> navigator) { var br = navigator.NavigateTo(Direction, Origin, out var result, Steps); br.Should().Be(Result); result.Should().Be(ExpectedPosition, "we navigated from origin {0} in direction {1}", Origin, Direction, ExpectedPosition); }
public static void ValidateAll(this IEnumerable <NavigationTestCase> en, IMapNavigator <GridDirection> nav) { foreach (var testCase in en) { testCase.Validate(nav); } }
public BaseTileSelector(GridMatcher matcher, IMapNavigator <GridDirection> gridNavigator, Func <int, int, TContext> contextProvider = null) { ContextProvider = contextProvider ?? DefaultContextProvider; GridNavigator = gridNavigator ?? throw new ArgumentNullException(nameof(gridNavigator)); Matcher = matcher ?? throw new ArgumentNullException(nameof(matcher)); }
public static MapCoordinate NavigateUnconditionally(this IMapNavigator <GridDirection> nav, GridDirection d, MapCoordinate coord, int steps = 1) { nav.NavigateTo(d, coord, out MapCoordinate results, steps); return(results); }
public LimitedRangeNavigator(IMapNavigator <T> parent, int lowerX, int lowerY, int upperX, int upperY) { this.parent = parent ?? throw new ArgumentNullException(nameof(parent)); this.lowerX = lowerX; this.lowerY = lowerY; this.upperX = upperX - 1; this.upperY = upperY - 1; }
public CachingPlotOperation(IRenderPlotOperation <TRenderTile, TContext> parent, IMapNavigator <GridDirection> mapNavigator, IMapRenderArea viewport) { this.recordingRenderer = new RecordingRenderer(viewport, mapNavigator, parent.ActiveRenderer); this.parent = parent; this.parent.Renderer = recordingRenderer; }
public RoadCornerTileSelector(GridMatcher matcher, IMapNavigator <GridDirection> gridNavigator, string prefix, ITileRegistryEx <Direction, TRenderTile> registry, Func <int, int, TContext> contextProvider = null) : base(matcher, gridNavigator, contextProvider) { FillInTags(prefix, registry, out tiles, out tileExists); }
public BasicTileSelector(GridMatcher matcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistry <TRenderTile> registry, string tag, Func <int, int, TContext> contextProvider = null) : base(matcher, gridNavigator, contextProvider) { tileExists = registry.TryFind(tag, out tile); }
public GridPlotter(IMapRenderArea viewport, IMapNavigator <GridDirection> navigator, IMapNavigator <GridDirection> screenNavigator = null) { //this.plotOperation = plotOperation ?? throw new ArgumentNullException(nameof(plotOperation)); this.viewport = viewport ?? throw new ArgumentNullException(nameof(viewport)); mapAccessNavigator = navigator ?? throw new ArgumentNullException(nameof(navigator)); this.screenNavigator = screenNavigator ?? GridNavigation.CreateNavigator(viewport.RenderType); }
public FixedOffsetRotationGridNavigator(IMapNavigator <GridDirection> parent, int rotationSteps) { this.parent = parent ?? throw new ArgumentNullException(nameof(parent)); this.directions = new GridDirection[9]; for (var i = 0; i < directions.Length; i += 1) { directions[i] = RotationGridNavigator.RotateBy((GridDirection)i, rotationSteps); } }
public SeparateNeighbourTileSelector(GridMatcher matcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistryEx <NeighbourMatchPosition, TRenderTile> registry, string prefix, Func <int, int, TContext> contextProvider = null) : base( matcher, gridNavigator, contextProvider) { positions = (NeighbourMatchPosition[])Enum.GetValues(typeof(NeighbourMatchPosition)); Prepopulate(prefix, registry, out tiles, out tileExists); }
public CardinalTileSelector(GridMatcher matcher, GridMatcher selfMatcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistryEx <CardinalTileSelectorKey, TRenderTile> registry, string prefix, Func <int, int, TContext> contextProvider = null) : base(matcher, gridNavigator, contextProvider) { this.selfMatcher = selfMatcher ?? throw new ArgumentNullException(nameof(selfMatcher)); PrecomputeTags(prefix, registry, out tags, out tagExists); }
public CornerTileSelector(GridMatcher matcher, GridMatcher selfMatcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistryEx <CornerTileSelectionKey, TRenderTile> registry, string prefix, Func <int, int, TContext> contextProvider = null) { this.selfMatcher = selfMatcher ?? throw new ArgumentNullException(nameof(selfMatcher)); Matcher = matcher; GridNavigator = gridNavigator; this.contextProvider = contextProvider ?? DefaultContextProvider; selectors = PrepareSelectors(prefix, registry); }
public WrapAroundNavigator(IMapNavigator <T> parent, Range x, Range y) { this.parent = parent ?? throw new ArgumentNullException(nameof(parent)); lowerX = Math.Min(x.Min, x.Max); lowerY = Math.Min(y.Min, y.Max); var upperX = Math.Max(x.Min, x.Max); var upperY = Math.Max(y.Min, y.Max); deltaX = upperX - lowerX; deltaY = upperY - lowerY; }
public CellMapTileSelector(ICellMatcher matchers, IMapNavigator <GridDirection> gridNavigator, ITileRegistryEx <CellMapTileSelectorKey, TRenderTile> registry, string prefix, Func <int, int, TContext> contextProvider = null) { this.matchers = matchers ?? throw new ArgumentNullException(); this.gridNavigator = gridNavigator; this.registry = registry; this.prefix = prefix; this.contextProvider = contextProvider ?? DefaultContextProvider; Prepare(out tiles, out tileExists); }
public BlendNeighboursSelector2(ITileRegistryEx <CardinalIndex, TRenderTile> registry, IMapNavigator <GridDirection> gridNavigator, MapQuery <string> mapQuery, MapQuery <bool> isBlending, MapQuery <TContext> contextProvider = null) { this.registry = registry; this.gridNavigator = gridNavigator; this.mapQuery = mapQuery; this.isBlending = isBlending; this.contextProvider = contextProvider ?? DefaultContextProvider; this.directions = new[] { CardinalIndex.North, CardinalIndex.East, CardinalIndex.South, CardinalIndex.West }; }
public RoadParityTileSelector(GridMatcher matcher, GridMatcher selfMatcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistry <TRenderTile> isolatedRegistry, ITileRegistryEx <CardinalTileSelectorKey, TRenderTile> cardinalRegistry, ITileRegistryEx <DiagonalTileSelectionKey, TRenderTile> diagonalRegistry, string tag) { isolatedTileMatcher = new BasicTileSelector <TRenderTile, TContext>(selfMatcher, gridNavigator, isolatedRegistry, tag); diagonalTileSelector = new DiagonalTileSelector <TRenderTile, TContext>(matcher, selfMatcher, gridNavigator, diagonalRegistry, tag); cardinalTileSelector = new CardinalTileSelector <TRenderTile, TContext>(matcher, selfMatcher, gridNavigator, cardinalRegistry, tag); }
public RiverOutletTileSelector(GridMatcher matcher, GridMatcher selfMatcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistryEx <CardinalIndex, TRenderTile> outletRegistry, string prefix, Func <int, int, TContext> contextProvider = null) : base(matcher, gridNavigator, contextProvider) { this.selfMatcher = selfMatcher ?? throw new ArgumentNullException(nameof(selfMatcher)); this.northTileExists = outletRegistry.TryFind(prefix, CardinalIndex.North, out northTile); this.eastTileExists = outletRegistry.TryFind(prefix, CardinalIndex.East, out eastTile); this.southTileExists = outletRegistry.TryFind(prefix, CardinalIndex.South, out southTile); this.westTileExists = outletRegistry.TryFind(prefix, CardinalIndex.West, out westTile); }
public static MapCoordinate[] NavigateCardinalNeighbours(this IMapNavigator <GridDirection> nav, MapCoordinate coord, MapCoordinate[] retval = null) { if (retval == null || retval.Length < 4) { retval = new MapCoordinate[4]; } nav.NavigateTo(GridDirection.North, coord, out retval[0]); nav.NavigateTo(GridDirection.East, coord, out retval[1]); nav.NavigateTo(GridDirection.South, coord, out retval[2]); nav.NavigateTo(GridDirection.West, coord, out retval[3]); return(retval); }
public CornerCellSelector(ICellMatcher matchers, GridMatcher selfMatcher, IMapNavigator <GridDirection> gridNavigator, ITileRegistryEx <CellMapTileSelectorKey, TRenderTile> registry, string prefix, Func <int, int, TContext> contextProvider = null) { this.registry = registry; this.prefix = prefix; this.selfMatcher = selfMatcher ?? throw new ArgumentNullException(nameof(selfMatcher)); Matchers = matchers ?? throw new ArgumentNullException(); GridNavigator = gridNavigator; this.contextProvider = contextProvider ?? DefaultContextProvider; directionTileTagSelection = TileTagEntries.CreateDirectionTagEntries(); selectors = PrepareSelectors(); Prepare(out tiles, out tileExists); }
public WrappingFogMap(IFogMap parent, IMapNavigator <GridDirection> navigator) { this.navigator = navigator; this.parent = parent ?? throw new ArgumentNullException(nameof(parent)); }
public RotationGridNavigator(IMapNavigator <GridDirection> parent, int rotationSteps) { this.parent = parent ?? throw new ArgumentNullException(nameof(parent)); this.directions = new GridDirection[9]; RotationSteps = Math.Sign(rotationSteps) * (Math.Abs(rotationSteps) % 8); }
public WrapAroundNavigator(IMapNavigator <T> parent, int upperX, int upperY) : this(parent, new Range(0, upperX), new Range(0, upperY)) { }
public LimitedRangeNavigator(IMapNavigator <T> parent, int upperX, int upperY) : this(parent, 0, 0, upperX, upperY) { }