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; 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) { case "Plane": return generateTileContent(); case "Mountain": return generateStoneTileContent(); case "Forest": return generateTreeTileContent(); case "River": return generateRiverTileContent(); case "Lake": return generateLakeTileContent(); } 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("stone")) { foreach (GameObject stone in stones) { if (stone.name == name) { result = stone; break; } } } else { foreach (GameObject tree in trees) { if (tree.name == name) { result = tree; break; } } } 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; } }