Beispiel #1
0
        public List <TextureTile> Generate(TextureGrid grid)
        {
            var ni = new Dictionary <CardinalIndex, IntPoint>
            {
                { CardinalIndex.North, new IntPoint(0, 0) },
                { CardinalIndex.East, new IntPoint(1, 0) },
                { CardinalIndex.South, new IntPoint(0, 1) },
                { CardinalIndex.West, new IntPoint(1, 1) }
            };

            var reg = new CardinalIndexTileRegistry <string>(new ReflectorRegistry(),
                                                             TileTagEntries.CreateCardinalIndexTagEntries(),
                                                             grid.Pattern);

            var retval = new List <TextureTile>();

            foreach (var name in ni)
            {
                if (!reg.TryFind(grid.Name, name.Key, out var tileName))
                {
                    continue;
                }

                retval.Add(new TextureTile(true, name.Value.X, name.Value.Y, tileName)
                {
                    SelectorHint = name.Key.ToString()
                });
            }

            return(retval);
        }
Beispiel #2
0
        static string Format(CardinalTileSelectorKey k,
                             ITileTagEntrySelectionFactory <bool> formatProvider = null,
                             string format = null)
        {
            formatProvider ??= TileTagEntries.CreateFlagTagEntries();
            format ??= "n{0}e{1}s{2}w{3}";
            var n = formatProvider.Lookup(k.North).Tag;
            var e = formatProvider.Lookup(k.East).Tag;
            var s = formatProvider.Lookup(k.South).Tag;
            var w = formatProvider.Lookup(k.West).Tag;

            return(string.Format(format, n, e, s, w));
        }
Beispiel #3
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);
        }