using System.Collections; using System.Collections.Generic; using UnityEngine; public class MinigameManagerSolo : MonoBehaviour { public static MinigameManagerSolo instance{get; private set;} [SerializeField]private int MaxMoons; [SerializeField]private int MaxStars; [field:SerializeField]public float mapRadius {get; private set;} private List m_activeMoons = new List(); private List m_pooledMoons = new List(); private List m_activeStars = new List(); private List m_pooledStars = new List(); [SerializeField]private PickupItemSolo MoonPrefab,StarPrefab; [SerializeField]private Transform PickupsParent; void Awake(){ instance=this; } // Update is called once per frame void Update() { if(m_activeMoons.Count < MaxMoons){ SpawnMoons(MaxMoons - m_activeMoons.Count); } if(m_activeStars.Count < MaxStars){ SpawnStars(MaxStars - m_activeStars.Count); } if(Vector2.Distance(Vector2.zero, SpaceshipControllerSolo.player.transform.position) > mapRadius ){ SpaceshipControllerSolo.player.Die(); } } void SpawnMoons(int count){ int newCount = count - m_pooledMoons.Count; if(newCount >0){ for(int i =0; i < newCount; i++){ PickupItemSolo newItem = Instantiate(MoonPrefab, PickupsParent).Reposition(MinigameManager.getRandomPointInCirlce(Vector3.zero, mapRadius)); m_activeMoons.Add(newItem); } } for(int i=0; i < count - newCount; i++){ PickupItemSolo pooledMoon = m_pooledMoons[0]; pooledMoon.Reposition(MinigameManager.getRandomPointInCirlce(Vector3.zero, mapRadius)); m_activeMoons.Add(pooledMoon); m_pooledMoons.RemoveAt(0); } } void SpawnStars(int count){ int newCount = count - m_pooledStars.Count; if(newCount >0){ for(int i =0; i < newCount; i++){ PickupItemSolo newItem = Instantiate(StarPrefab, PickupsParent).Reposition(MinigameManager.getRandomPointInCirlce(Vector3.zero, mapRadius)); m_activeStars.Add(newItem); } } for(int i=0; i < count - newCount; i++){ PickupItemSolo pooledStar = m_pooledStars[0]; pooledStar.Reposition(MinigameManager.getRandomPointInCirlce(Vector3.zero, mapRadius)); m_activeStars.Add(pooledStar); m_pooledStars.RemoveAt(0); } } public static void DeactivatePickup(PickupItemSolo item){ switch(item.type){ case PickupItemSolo.PickupType.Moon: instance.m_activeMoons.Remove(item); instance.m_pooledMoons.Add(item); break; case PickupItemSolo.PickupType.Star: instance.m_activeStars.Remove(item); instance.m_pooledStars.Add(item); break; } } }