private void _DrawSubMenuHumidity() { if (_biomeDistribution == null) { return; } IBiomeIdentifier identifier = new BasicBiomeIdentifier(_biomeDistribution); for (var i = 0; i < _biomeDistribution.HumidityVariety; i++) { var humidityNo = string.Format("Humidity {0}", i.ToString()); if (GUILayout.Button(humidityNo, GUILayout.MinWidth(200))) { var count = 0; _ShowTerrainMapCondition(_tileData, (t) => { bool valid = identifier.IsHumidityInVarietyIndex(t.Humidity, i); count += valid ? 1 : 0; return(valid); }); _descriptionTxt = string.Format("num: {0}", count); } } }
private IEnumerator _CreateNewWorldMonad() { Random.InitState(_seed); var genTerrainMonad = new BlockMonad <float[]>(r => _terrainGen.GenerateHeightMap( _width, _height, Random.Range(0, 10000), Random.Range(0, 10000), _paramTerrain, r)); var genHumidityMonad = new BlockMonad <float[]>(r => _humidityGen.GenerateWeatherMap( _width, _height, Random.Range(0, 10000), Random.Range(0, 10000), _paramWeather, r)); var genTemperatureMonad = new BlockMonad <float[]>(r => _temperatureGen.GenerateWeatherMap( _width, _height, Random.Range(0, 10000), Random.Range(0, 10000), _paramTemperature, r)); var genManaMonad = new BlockMonad <float[]>(r => _manaGen.GenerateManaMap( _width, _height, _paramMana, r)); Debug.Log("start genTerrainMonad"); yield return(genTerrainMonad.Do()); Debug.Log("start genHumidityMonad"); yield return(genHumidityMonad.Do()); Debug.Log("start genTemperatureMonad"); yield return(genTemperatureMonad.Do()); Debug.Log("start genManaMonad"); yield return(genManaMonad.Do()); var terrainMap = genTerrainMonad.Result; var humidityMap = genHumidityMonad.Result; var temperatureMap = genTemperatureMonad.Result; var manaMap = genManaMonad.Result; var genRiverMonad = new BlockMonad <float[]>(r => _riverGen.GenerateRiverMap( _width, _height, terrainMap, _paramRain, r)); Debug.Log("start genRiverMonad"); yield return(genRiverMonad.Do()); var riverMap = genRiverMonad.Result; var tileUnitMap = new TileUnit[_width * _height]; IBiomeIdentifier identifier = new BasicBiomeIdentifier(_biomeDistribution); for (int x = 0; x < _width; x++) { for (int y = 0; y < _height; y++) { var idx = MathUtility.MapIndex(x, y, _height); var height = terrainMap[idx]; var humidity = humidityMap[idx]; var temperature = temperatureMap[idx]; var mana = manaMap[idx]; var river = riverMap[idx]; BiomeData biome = identifier.IdentifyBiome(humidity, height, temperature); tileUnitMap[idx] = new TileUnit( height, humidity, temperature, mana, river, biome.Biome); } } _tileData = new TileDataUnit { Map = tileUnitMap, Width = _width, Height = _height, }; _noticeTxt = "New world created."; }