88 lines
3.1 KiB
C#
Executable File
88 lines
3.1 KiB
C#
Executable File
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<PickupItemSolo> m_activeMoons = new List<PickupItemSolo>();
|
|
private List<PickupItemSolo> m_pooledMoons = new List<PickupItemSolo>();
|
|
private List<PickupItemSolo> m_activeStars = new List<PickupItemSolo>();
|
|
private List<PickupItemSolo> m_pooledStars = new List<PickupItemSolo>();
|
|
[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;
|
|
}
|
|
}
|
|
}
|