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