using Newtonsoft.Json.Linq; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ContentGenerator : MonoBehaviour { public GameObject[] enemies; public GameObject[] trees; public GameObject[] stones; public GameObject grass; public GameObject boss; public GameObject npc; public GameObject house; static System.Random rand = new System.Random(); public GameObject generateEnemy() { int index = rand.Next(0, enemies.Length); return enemies[index]; } public GameObject generateContent(string tiletype) { switch (tiletype.ToLower()) { case "plane": return generateTileContent(); case "mountains": return generateStoneTileContent(); case "forest": return generateTreeTileContent(); case "river": return generateRiverTileContent(); case "lake": return generateLakeTileContent(); case "city": return generateCityTileContent(); } return null; } public GameObject generateTileContent() { int chance = rand.Next(1, 101); if (chance < 50) { return null; } else if (chance >= 50 && chance < 90) { if (rand.Next(0,2) == 0) { return trees[rand.Next(0, trees.Length)]; } else { return stones[rand.Next(0, stones.Length)]; } } else if (chance >= 90 && chance < 95) { return generateEnemy(); } else if(chance >= 95 && chance < 99) { return boss; } else { return npc; } } public GameObject generateStoneTileContent() { int chance = rand.Next(1, 101); if (chance < 60) { return stones[rand.Next(0, stones.Length)]; } else if (chance >= 60 && chance < 90) { return trees[rand.Next(0, trees.Length)]; } else if (chance >= 90 && chance < 95) { return generateEnemy(); } else if (chance >= 95 && chance < 99) { return boss; } else { return npc; } } public GameObject generateTreeTileContent() { int chance = rand.Next(1, 101); if (chance < 60) { return trees[rand.Next(0, trees.Length)]; } else if (chance >= 60 && chance < 90) { return stones[rand.Next(0, stones.Length)]; } else if (chance >= 90 && chance < 95) { return generateEnemy(); } else if (chance >= 95 && chance < 99) { return boss; } else { return npc; } } public GameObject generateRiverTileContent() { int chance = rand.Next(1, 101); if (chance < 50) { return null; } else if (chance >= 50 && chance < 90) { if (rand.Next(0, 2) == 0) { return trees[rand.Next(0, trees.Length)]; } else { return stones[rand.Next(0, stones.Length)]; } } else if (chance >= 90 && chance < 95) { return generateEnemy(); } else if (chance >= 95 && chance < 99) { return boss; } else { return npc; } } public GameObject generateLakeTileContent() { int chance = rand.Next(1, 101); if (chance < 75) { return null; } else if (chance >= 75 && chance < 90) { return stones[rand.Next(0, stones.Length)]; } else if (chance >= 90 && chance < 95) { return generateEnemy(); } else if (chance >= 95 && chance < 99) { return boss; } else { return npc; } } public GameObject loadObject(JToken json) { GameObject result = gameObject; string name = json["objectname"].ToString().Replace("(Clone)", ""); if (name.ToLower().Contains("rock") || name.ToLower().Contains("ore")) { foreach (GameObject stone in stones) { if (stone.name == name) { result = stone; break; } } } else if(name.ToLower().Contains("tree")) { foreach (GameObject tree in trees) { if (tree.name == name) { result = tree; break; } } } else if(name.ToLower().Contains("npc")){ result = npc; } else if(name.ToLower().Contains("house")){ result = house; } return result; } public GameObject loadEnemy(JToken json) { GameObject result = gameObject; string name = json["enemyname"].ToString().Replace("(Clone)", ""); if (name.Split(' ').Length > 1) { name = name.Split(' ')[1]; } if (name == "(Boss)") { result = boss; } else { switch (name) { case "Metal": name = "SlimeMetalIdle"; break; case "MiniBoss": name = "SlimeMiniBossIdle"; break; case "Forest": name = "SlimeForestIdle"; break; case "Mage": name = "SlimeMageIdle"; break; case "Warrior": name = "SlimeWarriorIdle"; break; default: name = "SlimeBaseIdle"; break; } foreach (GameObject enemy in enemies) { if (enemy.name == name) { result = enemy; break; } } } return result; } public GameObject generateCityTileContent(){ int chance = rand.Next(1, 101); if (chance < 10) { return null; } else if (chance >= 10 && chance < 40) { return house; } else if (chance >= 40 && chance < 65) { return trees[rand.Next(0, trees.Length)]; } else if (chance >= 65 && chance < 90) { return stones[rand.Next(0, stones.Length)]; } else { return npc; } } }