private void OnDestroy() { if (map) { mapDetails.LiveEnemyList(); } }
public void SpawnEnemy() { var rand = Random.Range(0f, 1f); float random = new float(); int randomLevel = Random.Range(levelMin, levelMax + 1); var monstersDict = GameManager.Instance.monstersData.monstersAllDict; foreach (KeyValuePair <string, float> enemy in enemyList) { if (rand >= enemy.Value) { // } else { int r = Random.Range(0, pathCodes.Count); //break up each path code in to sections of 3, since each tile is a 3 digit number, and store them in a dictionary of path codes that an enemy will choose at random upon their spawn string[] pathChars = new string[pathCodes[r].Length]; string code = pathCodes[r]; //Debug.Log(spawnPoints[r]); mapDetails.enemyCount += 1; var enemyMonster = Instantiate(monstersDict[enemy.Key].monsterPrefab, transform.position, Quaternion.identity); enemyMonster.transform.SetParent(transform); enemyMonster.GetComponent <Monster>().isEnemy = true; enemyMonster.GetComponent <Enemy>().SetEnemyStats(randomLevel); enemyMonster.gameObject.tag = "Enemy"; enemyMonster.gameObject.name = "Enemy " + enemyMonster.GetComponent <Monster>().info.species; enemyMonster.transform.localScale = new Vector3(1.2f, 1.2f, 1.0f); mapDetails.LiveEnemyList(); int h = 2; for (int i = 0; i < code.Length / 3; i++) { pathChars[i] = code[h - 2].ToString() + code[h - 1].ToString() + code[h].ToString(); h += 3; int tileCheck = int.Parse(pathChars[i]); enemyMonster.GetComponent <Enemy>().pathList.Add(GameObject.Find(tileCheck.ToString()).GetComponent <MapTile>()); if (enemyMonster.GetComponent <Enemy>().pathList.Count == 1) { enemyMonster.GetComponent <Enemy>().currentPath = enemyMonster.GetComponent <Enemy>().pathList[0]; } } enemyMonster.transform.position = enemyMonster.GetComponent <Enemy>().pathList[0].transform.position; } if (mapDetails.enemyCount >= enemyMax) { CancelInvoke("SpawnEnemy"); mapDetails.isOver = true; break; } } }