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 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 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 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 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 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); }
protected override ICollector <GridEntity> GetTrigger(IContext <GridEntity> context) { return(context.CreateCollector(GridMatcher.AllOf(GridMatcher.Grid, GridMatcher.GridSize) .NoneOf(GridMatcher.GridInitialized))); }
protected override ICollector <GridEntity> GetTrigger(IContext <GridEntity> context) { return(context.CreateCollector(GridMatcher.AllOf(GridMatcher.Grid, GridMatcher.GridChanged))); }