Esempio n. 1
0
 //Internal Function - Figure out if to spawn them now or add them to an event list
 private void Parse(int _index)
 {
     //Log any attempts to spawn to much stuff
     if (m_enemySpawning[_index].amount > m_enemyReady.Count)
     {
         Debug.Log("You are trying to spawn " + m_enemySpawning[_index].amount + " but you only have " + m_enemyReady.Count + " left\nTrying anyway...");
     }
     //Enemies should all be spawned instantly, there is no need to use the event queue
     if (m_enemySpawning[_index].delayBetweenSpawns == 0.0f)
     {
         //If it has to spawn somewhere random do so
         if (m_enemySpawning[_index].randomSpawn)
         {
             int spawn = (int)Random.Range(0, (float)m_spawnPoints.Length - 0.1f);
             Spawn(m_enemySpawning[_index].enemyID, m_enemySpawning[_index].amount, spawn);
         }
         else             //Fixed spawn point
         {
             Spawn(m_enemySpawning[_index].enemyID, m_enemySpawning[_index].amount, m_enemySpawning[_index].spawn);
         }
     }
     else
     {
         //Just copy data over
         EventSpawn es = new EventSpawn();
         es.delay           = m_enemySpawning[_index].delayBetweenSpawns;
         es.enemyID         = m_enemySpawning[_index].enemyID;
         es.spawn           = m_enemySpawning[_index].spawn;
         es.randomSpawn     = m_enemySpawning[_index].randomSpawn;
         es.nearbySpawnOnly = m_enemySpawning[_index].nearbySpawnOnly;
         es.nearThreshold   = m_enemySpawning[_index].nearThreshold;
         es.remainingSpawns = m_enemySpawning[_index].amount;
         es.time            = 0.0f;
         //Add it to the list of spawn events to be processed
         m_eventSpawn.Add(es);
     }
 }
Esempio n. 2
0
 protected virtual void Spawn()
 {
     Health = _startHealth;
     IsLive = true;
     EventSpawn?.Invoke();
 }