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); }
CacheEntry CacheTryFindSourceMask(CardinalIndex dir) { if (cardinalMaskRegistry.TryFind("mask.blending", dir, out var providedTile) && providedTile.HasTexture) { return(new CacheEntry(true, textureOperations.ExtractData(providedTile.Texture, providedTile.Texture.Bounds), providedTile.Anchor)); } var sourceArea = textureOperations.TileAreaForCardinalDirection(tileSize, dir); if (renderType.IsIsometric()) { if (ditherMask.HasTexture) { return(new CacheEntry(true, textureOperations.ExtractData(ditherMask.Texture, sourceArea), ditherMask.Anchor)); } } return(new CacheEntry(false, null, default)); }