示例#1
0
        /// <summary>
        /// Initialize the current wave
        /// </summary>
        protected virtual void InitCurrentWave()
        {
            Wave wave = waves[m_CurrentIndex];

            wave.waveCompleted += NextWave;
            wave.Init();

            TimedWave timedWave      = waves[waveNumber - 1] as TimedWave;
            float     timeToNextWave = timedWave.timeToNextWave;
            int       wavesCount     = waves.Count;

            XEventBus.Instance.Post(EventId.WaveChanged, new XEventArgs(waveNumber, timeToNextWave, wavesCount));
        }
示例#2
0
        /// <summary>
        /// Starts the waves
        /// </summary>
        public virtual void StartWaves()
        {
            GameModel.MapCfg mapCfg            = ConfigService.Instance.MapCfgList.GetOne(GameData.gameInfo.currentLevels);
            int[]            createMonsterInfo = mapCfg.CreateMonster;
            int count = createMonsterInfo.Length;

            for (int i = 0; i < count; i++)
            {
                GameObject waveObj = new GameObject();
                waveObj.transform.parent = transform;
                waveObj.name             = "Wave" + i;
                TimedWave timedWave = waveObj.AddComponent <TimedWave>();

                WaveCfg waveCfg = ConfigService.Instance.WaveCfgList.GetOne(createMonsterInfo[i]);
                timedWave.timeToNextWave    = waveCfg.timeToNextWave;
                timedWave.spawnInstructions = new List <SpawnInstructionInfo>();
                for (int j = 0; j < waveCfg.monsterInfo.Length; j++)
                {
                    SpawnCfg             spawnCfg             = ConfigService.Instance.SpawnCfgList.GetOne(waveCfg.monsterInfo[j]);
                    SpawnInstructionInfo spawnInstructionInfo = new SpawnInstructionInfo();
                    spawnInstructionInfo.agentId      = spawnCfg.agentId;
                    spawnInstructionInfo.delayToSpawn = spawnCfg.delayToSpawn;
                    spawnInstructionInfo.startingNode = spawnCfg.startingNode;

                    timedWave.spawnInstructions.Add(spawnInstructionInfo);
                }

                waves.Add(timedWave);
            }


            if (waves.Count > 0)
            {
                InitCurrentWave();
            }
            else
            {
                Debug.LogWarning("[LEVEL] No Waves on wave manager. Calling spawningCompleted");
                SafelyCallSpawningCompleted();
            }
        }