Esempio n. 1
0
 private void OnDestroy()
 {
     if (map)
     {
         mapDetails.LiveEnemyList();
     }
 }
Esempio n. 2
0
    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;
            }
        }
    }