//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(); }
//Flat Terrain - 0 public void MakeFlatTerrain() { tileSize = 5; seed = new Seed(100, 100); seedGen = new SeedGenerator(seed); seedGen.SetMapDouble(); seedGen.BlurMap(); 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(); }