public CSequenceData RequestSequence(int aLane) { List <Runes> sequence = new List <Runes>(); for (int i = 0; i < _currentSequenceCount; i++) { int random = CMath.randomIntBetween(0, 3); switch (random) { case 0: sequence.Add(Runes.FIRE); break; case 1: sequence.Add(Runes.OCCULT); break; case 2: sequence.Add(Runes.ENERGY); break; case 3: default: sequence.Add(Runes.STRENGTH); break; } } CSequenceData data = new CSequenceData(_currentSequenceWaitTime, sequence); _openSequences[aLane] = data; return(data); }
public void SpawnEnemy() { float randSpawn = Random.value; if (randSpawn < .02f) { GameObject heart = Instantiate(CLevelManager.Inst._heart, transform); _currentHeart = heart.GetComponent <CHeart>(); heart.transform.position = _enemySpawnPonint.position; } else { float maxProbab = 0; int maxProbIndex = 0; float highestProb = 0; List <EnemyData> enemies = CLevelManager.Inst._enemies; for (int i = 0; i < enemies.Count; i++) { if (enemies[i].IsValidEnemy(CSequenceManager.Inst.GetCurrentRuneCount())) { maxProbab += enemies[i].spawnProbability; if (highestProb < enemies[i].spawnProbability) { highestProb = enemies[i].spawnProbability; maxProbIndex = i; } } } float rand = Random.value; int spawnIndex = -1; float spawnProb = 1; for (int i = 0; i < enemies.Count; i++) { float prob = enemies[i].spawnProbability / maxProbab; if (rand <= prob && spawnProb > prob) { spawnIndex = i; spawnProb = prob; } } if (spawnIndex < 0) { CreateEnemy(maxProbIndex); } else { CreateEnemy(spawnIndex); } if (_currentEnemy == null) { return; } } CSequenceData data = CSequenceManager.Inst.RequestSequence(_laneIndex); data.ui = _ui; _ui.SetSequence(data.sequence); _mercenary.SetState(CMercenary.STATE_REQUEST); }