Beispiel #1
0
        /// <summary>
        /// Spawns the agent
        /// </summary>
        /// <param name="agentConfig">The agent to spawn</param>
        /// <param name="node">The starting node that the agent uses</param>
        protected virtual void SpawnAgent(SpawnInstructionInfo spawnInstructionInfo)
        {
            int agentId   = spawnInstructionInfo.agentId;
            int nodeIndex = spawnInstructionInfo.startingNode;

            BattleField.instance.SpawnAgent(new PlayInfo(ConfigService.Instance.MonsterCfgList.GetOne(agentId)), nodeIndex);
        }
Beispiel #2
0
        /// <summary>
        /// Tries to setup the next spawn
        /// </summary>
        /// <returns>true if there is another spawn instruction, false if not</returns>
        protected bool TrySetupNextSpawn()
        {
            bool hasNext = spawnInstructions.Next(ref m_CurrentIndex);

            if (hasNext)
            {
                SpawnInstructionInfo nextSpawnInstruction = spawnInstructions[m_CurrentIndex];
                if (nextSpawnInstruction.delayToSpawn <= 0f)
                {
                    SpawnCurrent();
                }
                else
                {
                    m_SpawnTimer.SetTime(nextSpawnInstruction.delayToSpawn);
                }
            }

            return(hasNext);
        }
Beispiel #3
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();
            }
        }
Beispiel #4
0
        void Initialize()
        {
            TextAsset monsterConfig = Resources.Load <TextAsset>("Config/Monster");

            foreach (string str in monsterConfig.text.Split(new[] { "\n" }, StringSplitOptions.None))
            {
                try
                {
                    string str2 = str.Trim();
                    if (str2 == "")
                    {
                        continue;
                    }
                    Monster jsonData = JsonMapper.ToObject <Monster>(str2.Trim());
                    GameData.monsters.Add(jsonData.Id, jsonData);
                }
                catch (Exception e)
                {
                    throw new Exception($"parser json fail: {str}", e);
                }
            }

            TextAsset levelConfig = Resources.Load <TextAsset>("Config/Level");

            foreach (string str in levelConfig.text.Split(new[] { "\n" }, StringSplitOptions.None))
            {
                try
                {
                    string str2 = str.Trim();
                    if (str2 == "")
                    {
                        continue;
                    }
                    GameModel.Level jsonData = JsonMapper.ToObject <GameModel.Level>(str2.Trim());
                    GameData.levels.Add(jsonData.Id, jsonData);
                }
                catch (Exception e)
                {
                    throw new Exception($"parser json fail: {str}", e);
                }
            }

            TextAsset skillConfig = Resources.Load <TextAsset>("Config/Skill");

            foreach (string str in skillConfig.text.Split(new[] { "\n" }, StringSplitOptions.None))
            {
                try
                {
                    string str2 = str.Trim();
                    if (str2 == "")
                    {
                        continue;
                    }
                    GameModel.Skill jsonData = JsonMapper.ToObject <GameModel.Skill>(str2.Trim());
                    GameData.skills.Add(jsonData.Id, jsonData);
                }
                catch (Exception e)
                {
                    throw new Exception($"parser json fail: {str}", e);
                }
            }

            GameData.gameInfo.currentLevels = 100011;
            GameData.gameInfo.towersInfo.Add(2001);

            WaveInfo waveInfo = new WaveInfo();

            int[] createMonsterInfo = GameData.levels[GameData.gameInfo.currentLevels].CreateMonster;
            for (int i = 0; i < createMonsterInfo.Length; i += 3)
            {
                SpawnInstructionInfo spawnInstructionInfo = new SpawnInstructionInfo();
                spawnInstructionInfo.agentId      = createMonsterInfo[i];
                spawnInstructionInfo.delayToSpawn = createMonsterInfo[i + 1];
                spawnInstructionInfo.startingNode = createMonsterInfo[i + 2];
                waveInfo.SpawnInstructions.Add(spawnInstructionInfo);
            }
            GameData.levelInfo.waveInfos.Add(waveInfo);
        }
Beispiel #5
0
        /// <summary>
        /// Spawns the current agent
        /// </summary>
        protected void Spawn()
        {
            SpawnInstructionInfo spawnInstruction = spawnInstructions[m_CurrentIndex];

            SpawnAgent(spawnInstruction);
        }