示例#1
0
 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));
 }
示例#2
0
 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);
 }
示例#3
0
 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);
 }
示例#4
0
 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);
 }
示例#5
0
 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);
 }
示例#6
0
 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);
 }
示例#7
0
 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);
 }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
 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)));
 }