コード例 #1
0
        public World(Random Random, MapGeneratorSettings Settings)
        {
            _Settings      = Settings;
            _Noise         = new LatticeNoiseGenerator(Random, Settings.Terrain);
            _MoistureNoise = new LatticeNoiseGenerator(Random, Settings.Moisture);
            _WaterLevel    = Settings.WaterLevel;

            _MicroRegions = new MicroRegion[Settings.Width, Settings.Height];
            _HeightMap    = new float[Settings.Width, Settings.Height];
            _MoistureMap  = new float[Settings.Width, Settings.Height];
            for (int i = 0; i < Settings.Width; ++i)
            {
                for (int j = 0; j < Settings.Height; ++j)
                {
                    float n = (float)_Noise.Generate(i, j);
                    float h = n > _WaterLevel ? (n - _WaterLevel) / (1 - _WaterLevel) : n / _WaterLevel - 1;
                    float m = (float)_MoistureNoise.Generate(i, j);
                    _HeightMap[i, j]   = h;
                    _MoistureMap[i, j] = m;
                    Biome B = Settings.BiomeMap.Closest(HeightAt(i, j), TemperatureAt(i, j), Moisture(i, j));
                    _MicroRegions[i, j] = new MicroRegion(i, j, B, this, h <= 0);
                }
            }
            _Shade = new FloatingImage(_HeightMap, Channel.RED)
                     .Filter(new Cence.Filters.Emboss()).GetChannel(Channel.RED);

            CreateRegions(Random, Settings.Regions, Settings.Language);
            CreateResources(Random, Settings.Population, Settings.Resource, Settings.Resources);
            InitializeEconomy();
        }
コード例 #2
0
ファイル: CultureMap.cs プロジェクト: jascou/ROTNS
 public Culture Generate(double X, double Y)
 {
     return(new Culture()
     {
         Individualism = (float)_Individualism.Generate(X, Y),
         Indulgence = (float)_Indulgence.Generate(X, Y),
         LongTermOrientation = (float)_LongTermOrientation.Generate(X, Y),
         PowerDistance = (float)_PowerDistance.Generate(X, Y),
         Toughness = (float)_Toughness.Generate(X, Y),
         UncertaintyAvoidance = (float)_UncertaintyAvoidance.Generate(X, Y)
     });
 }
コード例 #3
0
        void CreateResources(Random Random, LatticeNoiseSettings Population, LatticeNoiseSettings Resource, NaturalResource[] Resources)
        {
            Console.WriteLine("POPULATING");
            LatticeNoiseGenerator PopulationNoise = new LatticeNoiseGenerator(Random, Population);

            for (int i = 0; i < _Regions.Length; ++i)
            {
                float f = _Regions[i].Center.Biome.RegionSlow;
                _Regions[i].AddPopulation(this, (float)((PopulationNoise.Generate(_Regions[i].Center.X, _Regions[i].Center.Y)) * Math.Sqrt(f)) + .5f);
            }

            foreach (NaturalResource R in Resources)
            {
                Console.WriteLine("{0} {1}", R.Name, R.Noisy);
                LatticeNoiseGenerator Noise = R.Noisy ? new LatticeNoiseGenerator(Random, Resource) : null;
                foreach (Region Region in _Regions)
                {
                    float amount = (float)R.Distribute(
                        R.Noisy ? (float)Noise.Generate(Region.Center.X, Region.Center.Y) : 0, Region.Center);
                    Region.AddResource(R, amount);
                }
            }
        }