Example #1
0
        public static TerrainGraphic FindFirstTerrain(this IStrategyGameTileSet tileSet, ITerrain t)
        {
            foreach (var tg in t.AllGraphicTags())
            {
                if (tileSet.TryGetTerrain(tg, out TerrainGraphic g))
                {
                    return(g);
                }
            }

            return(null);
        }
Example #2
0
 public StrategyGameBlendLayerBuilder(GameRenderingConfig renderingConfig,
                                      IDerivedTileProducer <TTile, TTexture> tileProducer,
                                      ITextureOperations <TTexture, TColor> textureOperations,
                                      StrategyGameData gameData,
                                      IStrategyGameTileSet tileSet,
                                      ITileRegistry <TTile> tileRegistry)
 {
     this.renderingConfig   = renderingConfig;
     this.tileProducer      = tileProducer;
     this.textureOperations = textureOperations;
     this.tileSet           = tileSet;
     this.tileRegistry      = tileRegistry;
     GameData      = gameData;
     mappingHelper = new TerrainToGraphicTagMapping(gameData.Rules.TerrainTypes, tileSet);
 }
Example #3
0
        public TerrainToGraphicTagMapping(IEnumerable <ITerrain> terrainData,
                                          IStrategyGameTileSet tileSet)
        {
            forwardMapping = new Dictionary <ITerrain, TerrainGraphic>();
            reverseMapping = new Dictionary <string, List <ITerrain> >();

            foreach (var t in terrainData)
            {
                var first = tileSet.FindFirstTerrain(t);
                if (first == null)
                {
                    throw new Exception($"No graphics mapping for terrain type {t.Id}");
                }

                forwardMapping.Add(t, first);
                if (!reverseMapping.TryGetValue(first.GraphicTag, out List <ITerrain> terrains))
                {
                    terrains = new List <ITerrain>();
                    reverseMapping.Add(first.GraphicTag, terrains);
                }

                terrains.Add(t);
            }
        }