Beispiel #1
0
 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);
             }
         }
     }
 }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
            }
        }