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); }
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)); }
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); }