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