OpponentBase GetRandomOpponent() { int random = Random.Range(0, 101); int spawnOpponentType = 0; for (int i = 0; i < opponentPrefabProbIndex.Length; i++) { if (random < opponentPrefabProbIndex[i]) { spawnOpponentType = i; break; } } if (opponentPools[spawnOpponentType].Count > 0) { return(opponentPools[spawnOpponentType].Dequeue()); } else { OpponentBase opponent = Instantiate(opponentPrefabs[spawnOpponentType]); opponent.transform.parent = spawnsParent; return(opponent); } }
void SpawnRandomOpponent(Vector3 pos) { OpponentBase opponent = GetRandomOpponent(); opponent.gameObject.SetActive(true); opponent.transform.position = pos; opponent.Setup(); activeOpponents.Add(opponent); }
public void FreeOpponent(OpponentBase opponent) { int opponentType = 0; for (int i = 0; i < opponentPrefabs.Length; i++) { if (opponentPrefabs[i].GetType() == opponent.GetType()) { opponentType = i; break; } } opponent.gameObject.SetActive(false); opponentPools[opponentType].Enqueue(opponent); activeOpponents.Remove(opponent); }
void FillOpponentPools() { opponentPools = new List <Queue <OpponentBase> >(); for (int i = 0; i < opponentPrefabs.Length; i++) { opponentPools.Add(new Queue <OpponentBase>()); for (int j = 0; j < initialOpponentPoolSize; j++) { OpponentBase newOpp = Instantiate(opponentPrefabs[i]); newOpp.gameObject.SetActive(false); newOpp.transform.parent = spawnsParent; opponentPools[i].Enqueue(newOpp); } } }