using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AsteroidManager : MonoBehaviour
{
public static AsteroidManager Instance { get; private set; } // Static object of the class.
[SerializeField] GameObject asteroidParent;
[SerializeField] int asteroidCount;
private List<GameObject> asteroids;
private void Awake() // Ensure there is only one instance.
{
if (Instance == null)
{
Instance = this;
Initialize();
}
else
{
Destroy(gameObject); // Destroy duplicate instances.
}
}
void Initialize()
{
asteroids = new List<GameObject>();
SpawnAsteroids();
}
void SpawnAsteroids()
{
float offSet = 12f / (asteroidCount / 2);
for (int i = 0; i < asteroidCount / 2; i++)
{
GameObject roidInst = GameObject.Instantiate(asteroidParent, new Vector3(-6f + i * offSet + offSet / 2, 4f, 0f), Quaternion.identity);
asteroids.Add(roidInst);
roidInst = GameObject.Instantiate(asteroidParent, new Vector3(-6f + i * offSet + offSet / 2, -4f, 0f), Quaternion.identity);
asteroids.Add(roidInst);
}
}
public List<GameObject> GetAsteroids()
{
return asteroids;
}
public void DeleteAsteroid(int index)
{
Destroy(asteroids[index]);
asteroids.RemoveAt(index);
if (Game.Instance != null)
Game.Instance.SOMA.PlaySound("Explode");
}
public void spawnAsteroidNew(Vector2 pos)
{
GameObject roidInst1 = GameObject.Instantiate(asteroidParent, new Vector3(pos.x, pos.y, 0f), Quaternion.identity);
asteroids.Add(roidInst1);
roidInst1.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
// Create second asteroid
GameObject roidInst2 = GameObject.Instantiate(asteroidParent, new Vector3(pos.x, pos.y, 0f), Quaternion.identity);
asteroids.Add(roidInst2);
roidInst2.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
}
}