using Assets.Scripts.InteractableObjects; 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 "plain": return generateTileContent(); case "mountains": return generateStoneTileContent(); case "forest": return generateTreeTileContent(); case "hills": return generateHillTileContent(); case "desert": return generateDesertTileContent(); 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 null; } 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 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 generateDesertTileContent() { int chance = rand.Next(1, 101); if (chance < 50) { return null; } else if (chance >= 50 && 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 generateHillTileContent() { 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; SlimeType slimeType = (SlimeType)System.Enum.Parse(typeof(SlimeType), json["enemytype"].ToString().ToUpper()); foreach (GameObject enemy in enemies) { if (enemy.GetComponent().slimeType == slimeType) { result = enemy; break; } } return result; } public GameObject generateCityTileContent() { int chance = rand.Next(1, 101); if (chance < 10) { return null; } else if (chance >= 10 && chance < 25) { return house; } else if (chance >= 25 && chance < 55) { return trees[rand.Next(0, trees.Length)]; } else if (chance >= 55 && chance < 85) { return stones[rand.Next(0, stones.Length)]; } else { return npc; } } }