Scriptum/Assets/Scripts/REFACTORING/Application/Tools/CounterRespowner.cs
2023-01-10 21:20:48 +01:00

104 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using System.Collections;
class CounterRespowner : MonoBehaviour
{
public const string RESPOWNER_NAME = "DungeonRespowner";
public bool Respown = true;
public int Counter = 20;
public List<GameObject> minions;
public List<GameObject> respownPoints;
public int killedMinions = 0;
private IEnumerator coroutine;
public GameObject associatedChest;
public void Start()
{
}
public void Update()
{
if(associatedChest == null)
{
associatedChest = GameObject.FindGameObjectWithTag("ChestCollection").transform.Find("Prize Chest")?.gameObject;
if(associatedChest != null)
associatedChest.GetComponent<ChestWrapper>().Lock();
}
if(Respown && Counter > 0)
{
Respown = false;
if (killedMinions < 4 && Counter > 20)
{
coroutine = SpownWithDelay(1.5f);
} else if(Counter <= 20 && killedMinions >= 4)
{
coroutine = SpownWithDelay(3.0f);
} else
{
Debug.Log(Counter);
coroutine = SpownWithDelay(0.5f);
}
StartCoroutine(coroutine);
}
if (Counter <= 0 && killedMinions >= 30)
associatedChest.GetComponent<ChestWrapper>().Unlock();
}
// najpier 10
// a potem w wiekszych dstepach kolejne 20
private IEnumerator SpownWithDelay(float waitTime)
{
yield return new WaitForSeconds(waitTime);
RespownMinion();
Counter -= 1;
Respown = true;
}
public void RespownMinion()
{
GameObject minion = null;
Vector3 spowner = Vector3.zero;
// Draw minion
minion = minions
.ElementAt(UnityEngine.Random.Range(0, minions.Count()))
;
// Decide which spowner use
GameObject spownerObject = null;
do
{
spownerObject = respownPoints
.ElementAt(UnityEngine.Random.Range(0, respownPoints.Count()));
} while (spownerObject.GetComponent<MinionRespowner>().Blocked == true);
// Spawn object
spownerObject.GetComponent<MinionRespowner>().Respown(minion);
}
}