Ejemplo n.º 1
0
    private void InitEnemy(int waveIndex, int sequenceIndexOfWave)
    {
        if (waveIndex >= currentLevelData.ListWaves.Count)
        {
            return;
        }

        LevelDataController.Waves wave = currentLevelData.ListWaves [waveIndex];

        if (sequenceIndexOfWave >= wave.ListSequences.Count)
        {
            return;
        }

        LevelDataController.Sequences sequence = wave.ListSequences [sequenceIndexOfWave];

        isCheckingEnemyExistToStartNewWave = false;
        currentWave = waveIndex;

        Master.WaitAndDo(sequence.Time, () => {
            totalSequenceIndex++;
            foreach (LevelDataController.EnemyAtSequence enemytAtSequence in sequence.ListEnemyAtSequence)
            {
                if (!enemytAtSequence.EnemyID.Equals("10"))
                {
                    GameObject pf_enemy = Master.GetEnemyPrefabByID(enemytAtSequence.EnemyID);
                    GameObject go_enemy = NGUITools.AddChild(Master.Gameplay.enemiesRoot, pf_enemy);
                    go_enemy.transform.localPosition = new Vector3(Master.Gameplay.outOfScreenPos [2].localPosition.x, Master.Lane.positionOfLane [enemytAtSequence.Lane].localPosition.y - 30, 0);
                    go_enemy.GetComponent <EnemyController> ().status.CurrentLane = enemytAtSequence.Lane;
                    Master.Lane.SetCharacterAtLane(go_enemy, enemytAtSequence.Lane);
                }
            }
            sequenceIndexOfWave++;
            if (sequenceIndexOfWave >= wave.ListSequences.Count)
            {
                if (!isCheckingEnemyExistToStartNewWave)
                {
                    CheckEnemyExistAndStartNewWave(waveIndex, sequenceIndexOfWave);
                }
            }
            else
            {
                InitEnemy(waveIndex, sequenceIndexOfWave);
            }
        }, this);
    }
Ejemplo n.º 2
0
    void OnGUI()
    {
        if (!isShowWindow)
        {
            isShowWindow = true;
            LoadLevelData();
        }

        float space = 15;

        GUILayout.Space(space * 0.5f);
        EditorGUILayout.LabelField("Level Data Manager!");

        GUILayout.Space(space * 0.5f);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Add Level"))
        {
            LevelDataController.LevelData newLevelData = new LevelDataController.LevelData();
            newLevelData.LevelIndex = levelDataController.levelDataCollection.ListLevelData.Count + 1;
            levelDataController.levelDataCollection.ListLevelData.Add(newLevelData);
        }

        if (GUILayout.Button("Save Data"))
        {
            SaveLevelData();
        }
        EditorGUILayout.EndHorizontal();

        /////////////Total Level/////////////////////
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Total Level: " + levelDataController.levelDataCollection.ListLevelData.Count.ToString(), EditorStyles.boldLabel);

        GUILayout.Space(10);
        EditorGUILayout.BeginVertical();
        GUILayoutOption[] optionsScrollView = new GUILayoutOption[] { GUILayout.Width(450), GUILayout.Height(490) };

        scrollPos = EditorGUILayout.BeginScrollView(scrollPos, optionsScrollView);
        for (int i = 0; i < levelDataController.levelDataCollection.ListLevelData.Count; i++)
        {
            LevelDataController.LevelData levelData = levelDataController.levelDataCollection.ListLevelData[i];

            /////////////Level/////////////////////
            listLevelsSelect[i] = EditorGUILayout.Foldout(listLevelsSelect[i], "Level " + levelDataController.levelDataCollection.ListLevelData[i].LevelIndex);
            GUILayout.Space(space * 0.3f);
            if (listLevelsSelect[i])
            {
                GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.MaxWidth(500) };

                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(space);
                levelDataController.levelDataCollection.ListLevelData[i].InitialGold = int.Parse(EditorGUILayout.TextField("Initial Gold", levelDataController.levelDataCollection.ListLevelData[i].InitialGold.ToString(), options));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(space);
                levelDataController.levelDataCollection.ListLevelData[i].NumberOfLanes = int.Parse(EditorGUILayout.TextField("Number of lane", levelDataController.levelDataCollection.ListLevelData[i].NumberOfLanes.ToString(), options));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(space);
                levelDataController.levelDataCollection.ListLevelData[i].NumberOfPositionsCanBuildUnitInLane = int.Parse(EditorGUILayout.TextField("Number of position can build Unit in lane", levelDataController.levelDataCollection.ListLevelData[i].NumberOfPositionsCanBuildUnitInLane.ToString(), options));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(space);
                levelDataController.levelDataCollection.ListLevelData[i].NumberOfUnitsAllowedDead = int.Parse(EditorGUILayout.TextField("Number of Units Allowed Dead", levelDataController.levelDataCollection.ListLevelData[i].NumberOfUnitsAllowedDead.ToString(), options));
                EditorGUILayout.EndHorizontal();


                /////////////Waves/////////////////////
                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(space);
                listWavesSelectOfLevel[i] = EditorGUILayout.Foldout(listWavesSelectOfLevel[i], "Waves");
                EditorGUILayout.EndHorizontal();
                if (listWavesSelectOfLevel[i])
                {
                    for (int y = 0; y < levelDataController.levelDataCollection.ListLevelData[i].ListWaves.Count; y++)
                    {
                        //LevelDataController.Waves wave = levelData.ListWaves[y];
                        GUILayout.Space(space * 0.3f);
                        EditorGUILayout.BeginHorizontal();
                        GUILayout.Space(space * 2);
                        listWavesSelect[y] = EditorGUILayout.Foldout(listWavesSelect[y], "Wave " + y);
                        EditorGUILayout.EndHorizontal();
                        if (listWavesSelect[y])
                        {
                            EditorGUILayout.BeginHorizontal();
                            GUILayout.Space(space * 4);
                            listSequencesSelectOfWave[y] = EditorGUILayout.Foldout(listSequencesSelectOfWave[y], "Sequences");
                            EditorGUILayout.EndHorizontal();
                            if (listSequencesSelectOfWave[y])
                            {
                                /////////////List Sequences/////////////////////

                                for (int z = 0; z < levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences.Count; z++)
                                {
                                    EditorGUILayout.BeginHorizontal();
                                    GUILayout.Space(space * 6);
                                    listSequencesSelect[z] = EditorGUILayout.Foldout(listSequencesSelect[z], "Sequence " + z);
                                    EditorGUILayout.EndHorizontal();
                                    if (listSequencesSelect[z])
                                    {
                                        EditorGUILayout.BeginHorizontal();
                                        GUILayout.Space(space * 8);
                                        levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].Time = int.Parse(EditorGUILayout.TextField("Time (second)", levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].Time.ToString(), options));
                                        EditorGUILayout.EndHorizontal();

                                        EditorGUILayout.BeginHorizontal();
                                        GUILayout.Space(space * 8);
                                        listEnemiesSelectOfSequence[z] = EditorGUILayout.Foldout(listEnemiesSelectOfSequence[z], "Enemies");
                                        EditorGUILayout.EndHorizontal();

                                        if (listEnemiesSelectOfSequence[z])
                                        {
                                            for (int x = 0; x < levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence.Count; x++)
                                            {
                                                EditorGUILayout.BeginHorizontal();
                                                GUILayout.Space(space * 10);
                                                listEnemiesSelect[x] = EditorGUILayout.Foldout(listEnemiesSelect[x], "Enemy " + x);
                                                EditorGUILayout.EndHorizontal();
                                                if (listEnemiesSelect[x])
                                                {
                                                    EditorGUILayout.BeginHorizontal();
                                                    GUILayout.Space(space * 12);
                                                    levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].EnemyID = EditorGUILayout.TextField("Enemy ID", levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].EnemyID.ToString(), options);
                                                    EditorGUILayout.EndHorizontal();

                                                    EditorGUILayout.BeginHorizontal();
                                                    GUILayout.Space(space * 12);
                                                    levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].Lane = int.Parse(EditorGUILayout.TextField("At Lane", levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].Lane.ToString(), options));
                                                    EditorGUILayout.EndHorizontal();

                                                    //button
                                                    GUILayout.Space(space * 0.3f);
                                                    EditorGUILayout.BeginHorizontal();
                                                    GUILayout.Space(space * 12);
                                                    if (GUILayout.Button("Remove Enemy"))
                                                    {
                                                        levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence.Remove(levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x]);
                                                    }
                                                    EditorGUILayout.EndHorizontal();
                                                }
                                            }
                                            //button
                                            GUILayout.Space(space * 0.3f);
                                            EditorGUILayout.BeginHorizontal();
                                            GUILayout.Space(space * 10);
                                            if (GUILayout.Button("Add Enemy"))
                                            {
                                                LevelDataController.EnemyAtSequence enemyAtSequence = new LevelDataController.EnemyAtSequence();
                                                enemyAtSequence.EnemyID = "";
                                                enemyAtSequence.Lane    = 0;
                                                levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence.Add(enemyAtSequence);
                                            }
                                            EditorGUILayout.EndHorizontal();
                                        }

                                        //button
                                        GUILayout.Space(space * 0.3f);
                                        EditorGUILayout.BeginHorizontal();
                                        GUILayout.Space(space * 8);
                                        if (GUILayout.Button("Remove Sequence"))
                                        {
                                            levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences.Remove(levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z]);
                                        }
                                        EditorGUILayout.EndHorizontal();
                                    }
                                }
                                //button
                                GUILayout.Space(space * 0.3f);
                                EditorGUILayout.BeginHorizontal();
                                GUILayout.Space(space * 6);
                                if (GUILayout.Button("Add Sequence"))
                                {
                                    LevelDataController.Sequences sequence = new LevelDataController.Sequences();
                                    levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences.Add(sequence);
                                }
                                EditorGUILayout.EndHorizontal();
                            }

                            GUILayout.Space(space * 0.3f);
                            EditorGUILayout.BeginHorizontal();
                            GUILayout.Space(space * 4);
                            if (GUILayout.Button("Remove Wave"))
                            {
                                levelDataController.levelDataCollection.ListLevelData[i].ListWaves.Remove(levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y]);
                                // Debug.Log(levelData.InitialGold.ToString());
                            }
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                    GUILayout.Space(space * 0.3f);
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Space(space * 2);
                    if (GUILayout.Button("Add Wave"))
                    {
                        LevelDataController.Waves wave = new LevelDataController.Waves();
                        levelDataController.levelDataCollection.ListLevelData[i].ListWaves.Add(wave);
                        // Debug.Log(levelData.InitialGold.ToString());
                    }
                    EditorGUILayout.EndHorizontal();
                }

                GUILayout.Space(space * 0.5f);
                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(space);
                if (GUILayout.Button("Remove Level"))
                {
                    levelDataController.levelDataCollection.ListLevelData.Remove(levelDataController.levelDataCollection.ListLevelData[i]);
                    //SaveLevelData();
                }

                EditorGUILayout.EndHorizontal();
            }
        }
        EditorGUILayout.EndScrollView();
        EditorGUILayout.EndVertical();
    }