Exemple #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);
        }
Exemple #2
0
        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));
        }