Dark_Matter/Assets/Scripts/Spielwelt/Enemie_Spawn_System.cs

130 lines
6.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Enemie_Spawn_System : MonoBehaviour
{
[SerializeField] public int roundCounter = 0; //Kann die Runden im Inspector manuell erhöhen
[SerializeField] public int roundModifierMax3 = 0; // regelt die schwierigkeit der Anfangsrunden
public int spawnCounter = 0; // zählt wie viele Enemies gespawnt wurden & sorgt dafür, dass der Shop wieder gespawnt wird
public GameObject Tank; // <---- Zu spawnende Prefab Einfügen
public GameObject Standart; // <---- Zu spawnende Prefab Einfügen
public GameObject Kamikaze; // <---- Zu spawnende Prefab Einfügen
public GameObject ShopPrefab;
public Transform SpawnShop; // Punkt, an welchem der Shop respawnt wird
public Transform SpawnMitteOben; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnMitteUnten; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnMitteLinks; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnMitteRechts; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnLinksUnten; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnRechtsUnten; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnLinksOben; // Punkt, von dem die Enemies gespawnt werden
public Transform SpawnRechtsOben; // Punkt, von dem die Enemies gespawnt werden
public TextMeshProUGUI Round_Counter; // <---- Kontrolliert die Rundenanzeige
public TextMeshProUGUI Enemie_Counter; // <---- Kontrolliert die Anzahlanzeige der Gegner
private bool canSpawnShop = false;
private void Start()
{
//ShopPrefab = Resources.Load<GameObject>("Shop Prefab");
canSpawnShop = false;
}
private void Update()
{
ShopRespawner();
}
public void SpawnEnemies()
{
if (Tank != null && Standart != null && Kamikaze != null && SpawnMitteOben != null && SpawnMitteUnten != null && SpawnMitteLinks != null && SpawnMitteRechts != null && SpawnLinksUnten != null && SpawnRechtsUnten != null && SpawnLinksOben != null && SpawnRechtsOben != null)
{
Destroy(GameObject.FindGameObjectWithTag("Shop Prefab"));
roundCounter++;
Round_Counter.text = roundCounter.ToString();
Instantiate(Standart, SpawnMitteOben.position, SpawnMitteOben.rotation);
Instantiate(Standart, SpawnMitteUnten.position, SpawnMitteUnten.rotation);
Instantiate(Kamikaze, SpawnMitteLinks.position, SpawnMitteLinks.rotation);
Instantiate(Kamikaze, SpawnMitteRechts.position, SpawnMitteRechts.rotation);
ChangeEnemyCounter(4);
if (roundCounter == roundModifierMax3) // Special-Runde0
{
Instantiate(Kamikaze, SpawnLinksUnten.position, SpawnLinksUnten.rotation);
Instantiate(Kamikaze, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation);
Instantiate(Kamikaze, SpawnLinksOben.position, SpawnLinksOben.rotation);
Instantiate(Kamikaze, SpawnRechtsOben.position, SpawnRechtsOben.rotation);
ChangeEnemyCounter(4);
}
if (roundCounter == roundModifierMax3 * 2) // Special-Runde1 Kamikaze
{
Instantiate(Standart, SpawnLinksUnten.position, SpawnLinksUnten.rotation);
Instantiate(Standart, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation);
Instantiate(Standart, SpawnLinksOben.position, SpawnLinksOben.rotation);
Instantiate(Standart, SpawnRechtsOben.position, SpawnRechtsOben.rotation);
ChangeEnemyCounter(4);
}
if (roundCounter == roundModifierMax3 * 3) // Special-Runde2 Standart Enemies & Tanks
{
Instantiate(Tank, SpawnLinksUnten.position, SpawnLinksUnten.rotation);
Instantiate(Tank, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation);
Instantiate(Tank, SpawnLinksOben.position, SpawnLinksOben.rotation);
Instantiate(Tank, SpawnRechtsOben.position, SpawnRechtsOben.rotation);
Instantiate(Standart, SpawnMitteOben.position, SpawnMitteOben.rotation);
Instantiate(Standart, SpawnMitteUnten.position, SpawnMitteUnten.rotation);
Instantiate(Standart, SpawnMitteLinks.position, SpawnMitteLinks.rotation);
Instantiate(Standart, SpawnMitteRechts.position, SpawnMitteRechts.rotation);
ChangeEnemyCounter(8);
}
if (roundCounter >= 20)
{
for (int i = 0 + roundCounter - 15; i > 0; i--)
{
Instantiate(Tank, SpawnLinksUnten.position, SpawnLinksUnten.rotation);
Instantiate(Tank, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation);
Instantiate(Tank, SpawnLinksOben.position, SpawnLinksOben.rotation);
Instantiate(Tank, SpawnRechtsOben.position, SpawnRechtsOben.rotation);
Instantiate(Standart, SpawnMitteOben.position, SpawnMitteOben.rotation);
Instantiate(Standart, SpawnMitteUnten.position, SpawnMitteUnten.rotation);
Instantiate(Standart, SpawnMitteLinks.position, SpawnMitteLinks.rotation);
Instantiate(Standart, SpawnMitteRechts.position, SpawnMitteRechts.rotation);
Instantiate(Kamikaze, SpawnLinksOben.position, SpawnLinksOben.rotation);
Instantiate(Kamikaze, SpawnRechtsOben.position, SpawnRechtsOben.rotation);
Instantiate(Kamikaze, SpawnMitteOben.position, SpawnMitteOben.rotation);
Instantiate(Kamikaze, SpawnMitteUnten.position, SpawnMitteUnten.rotation);
ChangeEnemyCounter(12);
}
}
}
}
public void ShopRespawner()
{
if (spawnCounter <= 0 && ShopPrefab != null && canSpawnShop)
{
Instantiate(ShopPrefab, SpawnShop.position, SpawnShop.rotation);
Debug.Log("Spawned Shop" + roundCounter);
canSpawnShop = false;
}
}
public void ChangeEnemyCounter(int count)
{
spawnCounter += count;
Enemie_Counter.text = spawnCounter.ToString();
canSpawnShop = true;
}
}