//Pillars terrain - 18
    public void MakePillarsTerrain()
    {
        tileSize = 3;
        seed     = new Seed(100, 100);
        seedGen  = new SeedGenerator(seed);
        System.Random random = new System.Random();
        seedGen.SeedProperties(false, false, false, false, false);
        //Lower the terrain
        Vector2 radius = new Vector2(seed.X / 2, seed.Y / 2);
        Vector2 center = new Vector2(seed.X / 2, seed.Y / 2);

        seedGen.SquareFill(radius, center, random.NextDouble() - random.Next(1, 3));

        //Small Hills
        seedGen.SetMapDouble();

        //Blur small hills
        if (RandomBool())
        {
            seedGen.BlurMap();
        }

        //Large Hills - locked to keep shape
        seedGen.SeedProperties(true, false, false, false, false);
        int count = random.Next(0, 15);

        for (int i = 0; i < count; i++)
        {
            int height = random.Next(2, 15);
            radius = new Vector2(random.Next(5, 15), random.Next(5, 15));
            center = new Vector2(random.Next(0, seed.X - 1), random.Next(0, seed.Y - 1));
            seedGen.MountainGradual(radius, center, height, true);
            seedGen.BlurAreaCircle(radius, center);
        }

        seed.SetSeedLock(false);

        //Large Craters - locked to keep shape
        seedGen.SeedProperties(false, true, false, false, false);
        count = random.Next(0, 15);
        for (int i = 0; i < count; i++)
        {
            int height = random.Next(2, 15);
            radius = new Vector2(random.Next(5, 15), random.Next(5, 15));
            center = new Vector2(random.Next(0, seed.X - 1), random.Next(0, seed.Y - 1));
            seedGen.MountainGradual(radius, center, height, true);
            seedGen.BlurAreaCircle(radius, center);
        }

        seed.SetSeedLock(false);

        seedGen.BlurMap();

        RunTerrainMaker();
    }
    //Swamp terrain - 10
    public void MakeSwampTerrain()
    {
        System.Random random = new System.Random();
        tileSize = 5;

        seed    = new Seed(100, 100);
        seedGen = new SeedGenerator(seed);
        seedGen.SetMapDouble();

        //Set Map blur random values
        if (RandomBool())
        {
            seedGen.SeedProperties(RandomBool(), false, false, false, false);
            seedGen.BlurMap();
            seedGen.SeedProperties(false, false, false, false, false);
        }

        //TODO: add for symmetry
        //seedGen.SeedProperties(false, false, false, false);
        int numCircles = random.Next(1, 5);

        for (int x = 0; x < numCircles; x++)
        {
            Vector2 radius = new Vector2(random.Next(3, seed.X), random.Next(3, seed.Y));
            Vector2 center = new Vector2(random.Next(0, seed.X), random.Next(0, seed.Y));
            seedGen.CircleFill(radius, center, random.NextDouble() + random.Next(-1, 3));
            seedGen.BlurAreaCircle(radius, center);
        }

        //Set Double
        if (RandomBool())
        {
            seedGen.SeedProperties(RandomBool(), false, false, false, false);
            seedGen.SetMapDouble();
            seedGen.SeedProperties(false, false, false, false, false);
        }

        //Set Map blur
        if (RandomBool())
        {
            seedGen.SeedProperties(RandomBool(), false, false, false, false);
            seedGen.BlurMap();
            seedGen.SeedProperties(false, false, false, false, false);
        }

        //Add Water
        if (RandomBool())
        {
            water[0].gameObject.SetActive(true);
        }

        RunTerrainMaker();
    }
    //Oasis Terrain - 3
    public void MakeOasisTerrain()
    {
        System.Random random = new System.Random();
        tileSize = 4f;
        seed     = new Seed(125, 125);
        seedGen  = new SeedGenerator(seed);

        seedGen.SeedProperties(false, false, false, false, false);

        //Lower the terrain
        Vector2 radius = new Vector2(seed.X / 2, seed.Y / 2);
        Vector2 center = new Vector2(seed.X / 2, seed.Y / 2);

        seedGen.SquareFill(radius, center, random.NextDouble() - random.Next(1, 3));

        //Left side - mesa
        for (int y = 0; y < 4; y++)
        {
            for (int i = 0; i < 2; i++)
            {
                radius = new Vector2(random.Next(5, 20), random.Next(5, 20));
                center = new Vector2(0, random.Next((4 - (y + 1)) * seed.Y / 4, (4 - y) * seed.Y / 4));
                seedGen.CircleFill(radius, center, random.Next(15, 50));
            }
        }
        //Right side - mesa
        for (int y = 0; y < 4; y++)
        {
            for (int i = 0; i < 2; i++)
            {
                radius = new Vector2(random.Next(5, 20), random.Next(5, 20));
                center = new Vector2(seed.X - 1, random.Next((4 - (y + 1)) * seed.Y / 4, (4 - y) * seed.Y / 4));
                seedGen.CircleFill(radius, center, random.Next(15, 50));
            }
        }
        //Top side - mesa
        for (int x = 0; x < 4; x++)
        {
            for (int i = 0; i < 2; i++)
            {
                float randomX = random.Next((4 - (x + 1)) * seed.X / 4, (4 - x) * seed.X / 4);
                radius = new Vector2(random.Next(5, 20), random.Next(5, 20));
                center = new Vector2(randomX, seed.Y - 1);
                seedGen.CircleFill(radius, center, random.Next(15, 50));
            }
        }
        //Bottom side - mesa
        for (int x = 0; x < 4; x++)
        {
            for (int i = 0; i < 2; i++)
            {
                float randomX = random.Next((4 - (x + 1)) * seed.X / 4, (4 - x) * seed.X / 4);
                radius = new Vector2(random.Next(5, 20), random.Next(5, 20));
                center = new Vector2(randomX, 0);
                seedGen.CircleFill(radius, center, random.Next(15, 50));
            }
        }

        //Blur 4 corners
        radius = new Vector2(seed.X / 2, seed.Y / 2);
        center = new Vector2(0, 0);
        seedGen.BlurAreaCircle(radius, center);
        center = new Vector2(seed.X - 1, 0);
        seedGen.BlurAreaCircle(radius, center);
        center = new Vector2(0, seed.Y - 1);
        seedGen.BlurAreaCircle(radius, center);
        center = new Vector2(seed.X - 1, seed.Y - 1);
        seedGen.BlurAreaCircle(radius, center);

        seedGen.SeedProperties(true, false, false, false, false);
        //Bottom-Left - islands
        for (int i = 0; i < 4; i++)
        {
            float randomX = random.Next(seed.X / 4, seed.X / 2);
            float randomY = random.Next(seed.Y / 4, seed.Y / 2);
            radius = new Vector2(random.Next(10, 15), random.Next(10, 15));
            center = new Vector2(randomX, randomY);
            seedGen.MountainGradual(radius, center, random.Next(10, 15), true);
        }
        //Bottom-Right - islands
        for (int i = 0; i < 4; i++)
        {
            float randomX = random.Next(seed.X / 2, 3 * seed.X / 4);
            float randomY = random.Next(seed.Y / 4, seed.Y / 2);
            radius = new Vector2(random.Next(10, 15), random.Next(10, 15));
            center = new Vector2(randomX, randomY);
            seedGen.MountainGradual(radius, center, random.Next(10, 15), true);
        }
        //Top-Left - islands
        for (int i = 0; i < 4; i++)
        {
            float randomX = random.Next(seed.X / 4, seed.X / 2);
            float randomY = random.Next(seed.X / 2, 3 * seed.X / 4);
            radius = new Vector2(random.Next(10, 15), random.Next(10, 15));
            center = new Vector2(randomX, randomY);
            seedGen.MountainGradual(radius, center, random.Next(10, 15), true);
        }
        //Top-Right - islands
        for (int i = 0; i < 4; i++)
        {
            float randomX = random.Next(seed.X / 2, 3 * seed.X / 4);
            float randomY = random.Next(seed.X / 2, 3 * seed.X / 4);
            radius = new Vector2(random.Next(10, 15), random.Next(10, 15));
            center = new Vector2(randomX, randomY);
            seedGen.MountainGradual(radius, center, random.Next(10, 15), true);
        }

        seedGen.BlurMap();
        AddWater(true);

        RunTerrainMaker();
    }