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