Esempio n. 1
0
        public Wave(int waveId, WaveMgr waveMgr, PassItem passData, GameObject player, int guid)
        {
            m_WaveId              = waveId;
            m_StartWave           = false;
            m_Guid                = guid;
            m_CreateInfo          = new List <MonsterItem>();
            m_RoundRoleCreateInfo = new List <MonsterItem>();
            m_BornNodeList        = new List <GameObject>();
            m_RoundRoleBornNodes  = (Global.gApp.CurScene as FightScene).GetBornNodes();
            m_NormalScene         = Global.gApp.CurScene.IsNormalPass();
            m_WaveMgr             = waveMgr;
            //m_WaveData = Global.gApp.gGameData.GetWaveData().Find(l => l.id == waveId);
            m_WaveData   = Global.gApp.gGameData.WaveData.Get(waveId);
            m_PassData   = passData;
            m_MainPlayer = player;
            m_Monsters   = new List <Monster>();

            m_TriggerType   = (TriggerType)m_WaveData.trigMode[0];
            m_DtCreateCount = Mathf.Max(m_DtCreateCount, m_WaveData.NumTime);
            if (m_WaveData.enemyNum.Length == 1 && m_WaveData.enemyID.Length > 1)
            {
                m_RandomType = RandomType.RandMonster;
            }
            else
            {
                m_RandomType = RandomType.RandCreateInfo;
            }
            InitMonsterInfo();
            RegisterListeners();
            StartWave();
        }
 //public SpawnQuest waveData;
 public void AddWave(WaveItem item)
 {
     WaveItem[] items = new WaveItem[waves.Length+1];
     for (int i = 0; i < waves.Length; i++) {
         items[i] = waves[i];
     }
     items[items.Length - 1] = item;
     this.waves = items;
 }
Esempio n. 3
0
    /// <summary>
    /// Creates and sets up new enemy
    /// </summary>
    /// <param name="enemyDescription">WaveItem desribing enemy's health, speed, reward, etc.</param>
    private void SpawnEnemy(WaveItem enemyDescription)
    {
        Enemy e = Instantiate(enemyDescription.EnemyType, GameControllerS.I.EnemiesParent.transform);

        e.SetupEnemy(enemyDescription.Speed, enemyDescription.EnemyHealth, enemyDescription.Reward);
        e.EnemyFinished += GameControllerS.I.EnemyFinished;
        e.EnemyKilled   += GameControllerS.I.EnemyKilledReward;
        e.EnemyFinished += EnemyFinishedOrKilled;
        e.EnemyKilled   += EnemyFinishedOrKilled;
    }
    public void DrawEditableTree(OneWayTreeNode node)
    {
        node.data.title        = EditorGUILayout.TextField("Title", node.data.title);
        node.data.description  = EditorGUILayout.TextField("Description: " + node.data.description, node.data.description);
        node.data.reward.money = EditorGUILayout.IntField("Money: " + node.data.reward.money, node.data.reward.money);

        // waves ...
        for (int i = 0; i < node.data.waves.Length; i++)
        {
            WaveItem item = node.data.waves[i];
            item.itemId    = (WaveSpawnItems)EditorGUILayout.EnumFlagsField("Unit: " + item.itemId, item.itemId);
            item.times     = EditorGUILayout.IntField("Times: " + item.times, item.times);
            item.spawnRate = EditorGUILayout.FloatField("Spawn rate: " + item.spawnRate, item.spawnRate);
            if (GUILayout.Button("- wave"))
            {
                node.data.RemoveWave(i);
            }
        }
        if (GUILayout.Button("+ wave"))
        {
            node.data.AddWave(new WaveItem {
                itemId = 0, times = 1, spawnRate = GameManager.EnemySpawnRate
            });
        }
        // end waves...

        if (GUILayout.Button("+ node"))
        {
            node.children.Add(new OneWayTreeNode()
            {
                children = new System.Collections.Generic.List <OneWayTreeNode>(),
                data     = new QuestInfo()
                {
                    title  = "Not assigned",
                    reward = new QuestReward()
                    {
                        money = 100
                    },
                    description = "empty",
                    waves       = new WaveItem[] { new WaveItem {
                                                       itemId = 0, times = 1
                                                   } }
                }
            }
                              );
        }
        for (int i = 0; i < node.children.Count; i++)
        {
            EditorGUILayout.LabelField("L_" + i + "_>");
            EditorGUI.indentLevel++;
            DrawEditableTree(node.children[i]);
            EditorGUI.indentLevel--;
        }
    }
 public void RemoveWave(int id)
 {
     WaveItem[] items = new WaveItem[waves.Length-1];
     int iid = 0;
     for (int i = 0; i < waves.Length; i++) {
         if (i != id) {
             items[iid] = waves[i];
             iid++;
         }
     }
     this.waves = items;
 }
Esempio n. 6
0
 private void CheckPassData()
 {
     PassItem[] items = Global.gApp.gGameData.PassData.items;
     foreach (PassItem passItem in items)
     {
         foreach (int waveId in passItem.waveID)
         {
             WaveItem waveData = Global.gApp.gGameData.WaveData.Get(waveId);
             if (waveData == null)
             {
                 Debug.LogError("PassData " + passItem.id + " 的  " + "waveData " + waveId + "不存在 ");
                 continue;
             }
             EZ.Data.Monster monsterData = Global.gApp.gGameData.MosterData;
             if (waveData.enemyNum.Length > 1)
             {
                 if (waveData.enemyNum.Length != waveData.enemyID.Length)
                 {
                     Debug.LogError("waveData " + waveData.id + "配置错误 ememy count 不等于 ememyId count");
                     continue;
                 }
                 foreach (int enemyId in waveData.enemyID)
                 {
                     MonsterItem monsterItem = monsterData.Get(enemyId);
                     if (monsterItem == null)
                     {
                         Debug.LogError("waveData " + waveData.id + "  EnemyId " + enemyId + " does not exist!");
                         continue;
                     }
                 }
             }
             else
             {
                 if (waveData.enemyNum.Length == 0)
                 {
                     Debug.LogError("waveData " + waveData.id + "配置错误 ememy count 未配置");
                     continue;
                 }
             }
             int totalCount = 0;
             foreach (int count in waveData.enemyNum)
             {
                 totalCount += count;
             }
             if (totalCount == 0)
             {
                 Debug.LogError("waveData " + waveData.id + "  Enemy 数量为0  !");
             }
         }
     }
     Debug.Log("=============ok nor error===========");
 }
Esempio n. 7
0
        public WFGUI()
        {
            InitializeComponent();

            this.SaveAudioFileDialog = new SaveFileDialog();
            currWaveItem             = new WaveItem()
            {
                waveType      = WAVE_TYPE_COMBOS[DEFAULT_COMBO_INDEX],
                waveOperator  = OPERATOR_COMBOS[DEFAULT_COMBO_INDEX],
                waveFrequency = DEFAULT_WAVE_FREQUENCY
            };
            waves = new List <WaveItem>();

            InnitConstantsAndLabels();
            InnitWavesGUI();
        }
Esempio n. 8
0
    private IEnumerator SpawnWave(int index)
    {
        Wave wave = waves[index];

        // walk through all WaveItems in Wave
        for (int i = 0; i < wave.WaveItems.Length; i++)
        {
            WaveItem w = wave.WaveItems[i];
            yield return(new WaitForSeconds(w.TimeDelay)); // delay before batch

            // spawn WaveItem.Count enemies
            SpawnEnemy(w);
            for (int j = 1; j < w.Count; j++)
            {
                yield return(new WaitForSeconds(w.TimeBetween)); // delay between enemies in batch

                SpawnEnemy(w);
            }
        }
    }
Esempio n. 9
0
 public WaveItem(WaveItem currWaveItem)
 {
     waveType      = currWaveItem.waveType;
     waveOperator  = currWaveItem.waveOperator;
     waveFrequency = currWaveItem.waveFrequency;
 }
Esempio n. 10
0
    private void LoadWaveConfing(string waveConfigFile)
    {
        string[] lines = waveConfigFile.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
        Debug.Log("Loading Wave Configuration: " + lines.Length + " lines.");

        List <Wave>     waves = new List <Wave>();
        List <WaveItem> items = new List <WaveItem>();

        for (int lineNumber = 0; lineNumber < lines.Length; lineNumber++)
        {
            string line = lines[lineNumber];
            if (line == null)
            {
                break;
            }

            if (line.Length == 0 || line[0] == '#') // comment in file
            {
                continue;
            }

            string[] tokens = line.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);

            if (tokens.Length > 0 && tokens[0] == "wave") // add current wave to wave list
            {
                if (items.Count > 0)
                {
                    waves.Add(new Wave(items.ToArray()));
                }
                items.Clear();
                continue;
            }
            if (tokens.Length > 0 && tokens[0] == "repeat") // add last wave as repeat wave
            {
                if (items.Count > 0)
                {
                    waves.Add(new Wave(items.ToArray()));
                }

                if (tokens.Length != 5)
                {
                    throw new ConfigFileException("Invalid number of values in Repeat on line " + lineNumber);
                }

                if (!float.TryParse(tokens[1], System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out float enemyHPmult))
                {
                    throw new ConfigFileException("Invalid enemy HP multiplier in repeat on line " + lineNumber);
                }

                if (!int.TryParse(tokens[2], out int enemyHPadd))
                {
                    throw new ConfigFileException("Invalid enemy HP addition in repeat on line " + lineNumber);
                }

                if (!float.TryParse(tokens[3], System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out float enemyCountMult))
                {
                    throw new ConfigFileException("Invalid enemy count multiplier in repeat on line " + lineNumber);
                }

                if (!int.TryParse(tokens[4], out int enemyCountAdd))
                {
                    throw new ConfigFileException("Invalid enemy count addition in repeat on line " + lineNumber);
                }

                if (items.Count > 0)
                {
                    waves.Add(new RepeatWave(items.ToArray(), enemyHPmult, enemyHPadd, enemyCountMult, enemyCountAdd));
                }
                items.Clear();
                continue;
            }

            WaveItem item = ParseWaveItem(tokens, lineNumber + 1);
            items.Add(item);
        }

        // add last wave
        if (items.Count > 0)
        {
            waves.Add(new Wave(items.ToArray()));
        }

        GameControllerS.I.WaveController.waves = waves.ToArray();
        waveUI.EnableStartButton();
    }