public static void Populate() { for (int x = 0; x < TerrainMap.Size; x++) { for (int y = 0; y < TerrainMap.Size; y++) { if (Generator.Random.NextFloat() < GetPercent(TerrainMap.GetTerrainType(x, y))) { Create(x, y); } } } }
private void Spread() { for (int i = 0; i < SpreadCount; i++) { var dx = Generator.Random.Next(_gameObject.X - 1, _gameObject.X + 1); var dy = Generator.Random.Next(_gameObject.Y - 1, _gameObject.Y + 1); dx = (int)MathF.Clamp(dx, 0, TerrainMap.Size); dy = (int)MathF.Clamp(dy, 0, TerrainMap.Size); if (TerrainMap.GetTerrainType(dx, dy) == _gameObject.Terrain) { Vegetation.Create(dx, dy); } } }
private void SetXY(int pX, int pY) { X = pX; Y = pY; Terrain = TerrainMap.GetTerrainType(pX, pY); Position = TerrainMap.GetPosition(new Vector2(pX, pY)); switch (Terrain) { case TerrainType.Water: _render.SetBitmap("v_water"); _life.LifeTime = Generator.Random.Next(20, 40); _life.SpreadCount = Generator.Random.Next(1, 2); Food = 10; break; case TerrainType.Grassland: _life.LifeTime = Generator.Random.Next(20, 40); _life.SpreadCount = 1; _render.SetBitmap("v_grassland"); Food = 10; break; case TerrainType.Shrubland: _life.LifeTime = Generator.Random.Next(10, 20); _life.SpreadCount = Generator.Random.Next(0, 3); _render.SetBitmap("v_shrubland"); Food = 5; break; case TerrainType.TemperateDeciduous: _life.LifeTime = Generator.Random.Next(40, 60); _life.SpreadCount = Generator.Random.Next(1, 2); _render.SetBitmap("v_temperatedeciduous"); Food = 20; break; case TerrainType.Desert: _life.LifeTime = Generator.Random.Next(60, 80); _life.SpreadCount = 1; _render.SetBitmap("v_desert"); Food = 10; break; default: throw new UnknownEnumException(typeof(TerrainType), Terrain); } }