Exemple #1
0
        internal void InvokeEnemySpawnEvent(CrunchEnemy enemy)
        {
            var ev = new EnemySpawnEventArgs
            {
                Enemy = enemy
            };

            EnemySpawnEvent?.Invoke(ev);
        }
Exemple #2
0
    void OnEnemySpawn(EnemySpawnEvent e)
    {
        if (!m_doorState)
        {
            return;
        }

        m_doorState = false;

        m_closedDoor.SetActive(true);
        m_openDoor.SetActive(false);

        SoundSystem.Instance().play(m_closeSound);
    }
Exemple #3
0
    void OnEnemySpawn(EnemySpawnEvent e)
    {
        if (!m_doorState)
        {
            return;
        }

        m_doorState = false;

        m_animator.SetBool("Closed", true);
        m_light.SetActive(false);

        SoundSystem.Instance().play(m_closeSound);
    }
Exemple #4
0
    void NextWaveSpawn()
    {
        EnemySpawnEvent spawnEvent = remainingSpawnEvents.Dequeue();

        Rect mapSize = CurrentMapSize();

        float safeDist = 7;
        Rect  safeArea = new Rect(player.transform.position.x - safeDist, player.transform.position.y - safeDist, safeDist, safeDist);
        int   maxTries = 3;

        foreach (EnemySpawn spawn in spawnEvent.enemySpawns)
        {
            for (int i = 0; i < spawn.count; i++)
            {
                Vector3 position = new Vector3(
                    Random.Range(mapSize.xMin, mapSize.xMax),
                    Random.Range(mapSize.yMin, mapSize.yMax),
                    0);
                int tries = 0;
                while (safeArea.Contains(position) && tries < maxTries)
                {
                    position = new Vector3(
                        Random.Range(mapSize.xMin, mapSize.xMax),
                        Random.Range(mapSize.yMin, mapSize.yMax),
                        0);
                    tries += 1;
                }

                Enemy enemy = Instantiate(spawn.enemy, position, Quaternion.identity).GetComponent <Enemy>();
                if (enemy.Type() == EnemyType.Wall)
                {
                    enemy.transform.rotation = Quaternion.Euler(0, 0, Random.value * 360);
                }

                // Give the enemy a pickup to drop
                if (Random.value < pickupDropChance)
                {
                    enemy.pickupDropPrefab = pickupTable.ChoosePickup();
                }
            }
        }
        //Play "wave spawn" sound
        transform.GetChild(0).GetComponents <AudioSource>()[2].Play();

        currentWave++;
        startedNextWave = false;
    }
    /// <summary>
    /// Spawns an enemy on screen.
    /// </summary>
    /// <param name="spawnEvent">The SpawnEvent instance with all the information to spawn the enemy.</param>
    /// <returns>The enemy GameObject if any. null otherwise.</returns>
    public GameObject SpawnEnemy(EnemySpawnEvent spawnEvent)
    {
        if (spawnEvent.enemyPrefab != null)
        {
            GameObject playerShipGameObject = Toolbox.PoolManager.SpawnGameObject(spawnEvent.enemyPrefab);
            playerShipGameObject.transform.position = spawnEvent.enemyStartPoint;
            EnemyShip enemyShip = playerShipGameObject.GetComponent <EnemyShip>();
            if (enemyShip != null)
            {
                enemyShip.velocity         = spawnEvent.enemyVelocity;
                enemyShip.acceleration     = spawnEvent.enemyAcceleration;
                enemyShip.OnShipDestroyed += OnEnemyShipDestroyed;
            }

            return(playerShipGameObject);
        }
        return(null);
    }
Exemple #6
0
    private void OnEnable()
    {
        if (GameManager.stateManager == null)
        {
            if (state != RoomState.Clear)
            {
            }
            EnemySemaphorControl = 0;
            enemySpawn           = new EnemySpawnEvent();
            enemySpawn          += UpdateSemaphor;

            roomClear = new UnityEvent();

            GameManager.stateManager = this;
            isManager = true;

            if (state == RoomState.Clear)
            {
                StartCoroutine(ClearInAFrame());
            }
        }
    }
    public object Clone()
    {
        LevelObject newLevel = new LevelObject();

        newLevel.enemySpawnEvents = new EnemySpawnEvent[this.enemySpawnEvents.Length];

        for (int i = 0; i < enemySpawnEvents.Length; i++)
        {
            var             oldSpawnEvent = this.enemySpawnEvents[i];
            EnemySpawnEvent newSpawnEvent = new EnemySpawnEvent();
            newSpawnEvent.enemySpawns = new EnemySpawn[oldSpawnEvent.enemySpawns.Length];

            for (int j = 0; j < oldSpawnEvent.enemySpawns.Length; j++)
            {
                newSpawnEvent.enemySpawns[j].enemy = oldSpawnEvent.enemySpawns[j].enemy;
                newSpawnEvent.enemySpawns[j].count = oldSpawnEvent.enemySpawns[j].count;
            }

            newLevel.enemySpawnEvents[i] = newSpawnEvent;
        }
        return(newLevel);
        //return this.MemberwiseClone();
    }
Exemple #8
0
 void OnEnemySpawn(EnemySpawnEvent e)
 {
     m_livingEnemy.Add(e.enemy);
 }
Exemple #9
0
 void OnEnemySpawn(EnemySpawnEvent e)
 {
     gameObject.SetActive(false);
 }