public static MapData build(MapBuildType mapType, int maxDist, Dictionary <TerrainType, Dictionary <string, ITerrainDef> > terrainDefs) { var terrainDict = new Dictionary <TerrainType, ITerrainDef>(); var map = new MapData(maxDist); BuildPlain(ref map, terrainDefs[TerrainType.PLAIN].Values); BuildRiver(ref map); var Type2Percent = calcPercent(mapType); BuildMount(ref map, Type2Percent[TerrainType.MOUNT], terrainDefs[TerrainType.MOUNT].Values); BuildHill(ref map, Type2Percent[TerrainType.HILL], terrainDefs[TerrainType.HILL].Values); BuildLake(ref map, Type2Percent[TerrainType.LAKE], terrainDefs[TerrainType.LAKE].Values); BuildMarsh(ref map, terrainDefs[TerrainType.MARSH].Values); ////BuildForest(ref map, 0.1); //BuildRiver(ref map); LOG.INFO("build" + map.ToString()); return(map); }
public static Dictionary <TerrainType, double> calcPercent(MapBuildType mapType) { switch (mapType) { case MapBuildType.MAP_PLAIN: return(new Dictionary <TerrainType, double>() { { TerrainType.PLAIN, 0.87 }, { TerrainType.HILL, 0.099 }, { TerrainType.MOUNT, 0.001 }, { TerrainType.LAKE, 0.03 }, }); case MapBuildType.MAP_SMALL_HILL: return(new Dictionary <TerrainType, double>() { { TerrainType.PLAIN, 0.47 }, { TerrainType.HILL, 0.35 }, { TerrainType.MOUNT, 0.15 }, { TerrainType.LAKE, 0.03 }, }); case MapBuildType.MAP_BIG_HILL: return(new Dictionary <TerrainType, double>() { { TerrainType.PLAIN, 0.27 }, { TerrainType.HILL, 0.5 }, { TerrainType.MOUNT, 0.2 }, { TerrainType.LAKE, 0.03 }, }); case MapBuildType.MAP_MOUNT: return(new Dictionary <TerrainType, double>() { { TerrainType.PLAIN, 0.17 }, { TerrainType.HILL, 0.4 }, { TerrainType.MOUNT, 0.4 }, { TerrainType.LAKE, 0.03 }, }); default: throw new Exception(); } }