using System.Collections; using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace TBTK{ public class CollectibleManager : MonoBehaviour { #if UNITY_EDITOR public static bool inspector=false; #endif public int activeItemLimit=4; public bool generateInGame=true; public int maxSpawnPerTurn=2; public float spawnChance=0.5f; public VisualObject effectOnSpawn; public List unavailableIDList=new List(); public List itemList=new List(); //filled up in runtime public List activeItemList=new List(); private static CollectibleManager instance; public static void Init(){ if(instance==null) instance=(CollectibleManager)FindObjectOfType(typeof(CollectibleManager)); if(instance==null) return; for(int i=0; i=activeItemLimit) return false; bool spawned=false; for(int i=0; i=activeItemLimit) break; if(Random.value>spawnChance) continue; Node node=GetRandomNode(); if(node==null) continue; int rand=Random.Range(0, itemList.Count); GameObject itemObj=(GameObject)Instantiate(itemList[rand].gameObject); PlaceItemAtNode(itemObj.GetComponent(), node); effectOnSpawn.Spawn(node.GetPos()); spawned=true; } return spawned; } void InitItemList(){ itemList=new List( CollectibleDB.GetList() ); for(int i=0; i0){ iterateCount+=1; if(iterateCount>10) break; Node node=GetRandomNode(); if(node==null) break; if(node.HasObstacle()) Debug.Log("real strange"); int rand=Rand.Range(0, itemList.Count); #if UNITY_EDITOR GameObject itemObj=(GameObject)PrefabUtility.InstantiatePrefab(itemList[rand].gameObject); #else GameObject itemObj=(GameObject)MonoBehaviour.Instantiate(itemList[rand].gameObject); #endif PlaceItemAtNode(itemObj.GetComponent(), node); itemCount-=1; } } private Node GetRandomNode(){ Node node=null; List> grid=GridManager.GetGrid(); int iterateCount=0; while(true){ iterateCount+=1; if(iterateCount>20) break; node=grid[Rand.Range(0, GridManager.DimensionX())][Rand.Range(0, GridManager.DimensionZ()-1)]; if(!node.walkable || !node.IsEmpty() || node.deployFacID>=0) continue; break; } return node; } } }