コード例 #1
0
    public void SetLevelInfo()
    {
        int currentLevel = Master.LevelData.currentLevel;

        currentLevelData = Master.LevelData.GetLevelDataByIndex(Master.LevelData.currentLevel);
        totalWaves       = currentLevelData.ListWaves.Count;
        totalSequences   = 0;
        //get total sequence
        for (int i = 0; i < currentLevelData.ListWaves.Count; i++)
        {
            totalSequences += currentLevelData.ListWaves[i].ListSequences.Count;
        }

        totalSequenceIndex = 0;
        Master.Lane.SetLane(currentLevelData.NumberOfLanes, currentLevelData.NumberOfPositionsCanBuildUnitInLane);
        Master.Gameplay.gold = currentLevelData.InitialGold;
    }
コード例 #2
0
ファイル: LevelEditor.cs プロジェクト: tuansuzu/zombieDefense
    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();
    }
コード例 #3
0
    private void Awake()
    {
        GameObject levelsHolder = GameObject.Find("LevelZones");
        int        currentLevel = PlayerPrefs.GetInt("GameLevel");

        LevelDataController.LevelData currentLevelData = LevelDataController.GetLevelData(currentLevel);
        for (int i = 0; i < levelsHolder.transform.childCount; i++)
        {
            levelsHolder.transform.GetChild(i).gameObject.SetActive(false);
        }
        levelsHolder.transform.GetChild(currentLevel).gameObject.SetActive(true);
        GameObject    currentLevelHolder   = levelsHolder.transform.GetChild(currentLevel).gameObject;
        PlayableLevel currentPlayableLevel = currentLevelHolder.GetComponent <PlayableLevel>();

        currentPlayableLevel.Initialize();
        LineRendererPool lineRendererPool = FindObjectOfType <LineRendererPool>();

        PlayerController playerController = FindObjectOfType <PlayerController>();

        playerController.SetPlayerPath(currentLevelHolder.transform.GetChild(1).GetComponent <BezierSpline>());
        playerController.Orient();
        Weapon currentWeapon = Instantiate(Resources.Load <GameObject>("Prefabs/Weapons/" + currentLevelData._primaryWeaponCategory.ToString()), playerController.GetWeaponPivot()).GetComponent <Weapon>();

        currentWeapon.SetLineRendererPool(lineRendererPool);
        WeaponProjectilesRetriever weaponProjectilesRetriever = FindObjectOfType <WeaponProjectilesRetriever>();

        weaponProjectilesRetriever.SetWeapon(currentWeapon);
        playerController.SetWeapon(currentWeapon);
        playerController.gameObject.SetActive(false);
        InGameController _inGameController = FindObjectOfType <InGameController>();

        FindObjectOfType <HPBarBehaviour>().SetPlayerController(playerController);
        _inGameController._player = playerController.gameObject;
        FindObjectOfType <ShootButtonBehaviour>().SetPlayer(playerController);
        currentPlayableLevel.SetPlayerController(playerController);
        //Añado la recarga al botón de recarga
        GameObject.Find("ReloadButton").GetComponent <Button>().onClick.AddListener(() => playerController.Reload());
        currentWeapon.SetVfxBloodPool(GameObject.Find("VFXBloodPool").GetComponent <VFXPool>());
        //Asigno valores a la camara
        BezierSpline cameraPath = currentLevelHolder.transform.GetChild(2).GetComponent <BezierSpline>();
        CinematicCameraController cinematicCameraController = FindObjectOfType <CinematicCameraController>();

        cinematicCameraController.SetPath(cameraPath);

        //Creo los enemigos
        EnemySpawner[] enemySpawners = currentLevelHolder.GetComponentsInChildren <EnemySpawner>();
        foreach (EnemySpawner e in enemySpawners)
        {
            EnemyController enemyController   = null;
            GameObject      instantiatedEnemy = null;
            switch (e.GetEnemyType())
            {
            case EnemyType.Zombie:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Zombie"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.WalkingNightmare:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_WalkingNightmare"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.CrawlingNightmare:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_CrawlingNightmare"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.Troll:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Troll"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.Explosive:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Explosive"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.Spitter:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Spitter"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.Bat:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Bat"), e.transform.position, Quaternion.identity);
                break;

            case EnemyType.SkeletonZombie:
                instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_SkeletonZombie"), e.transform.position, Quaternion.identity);
                break;
            }
            enemyController = instantiatedEnemy.GetComponent <EnemyController>();
            enemyController.SetPath(e.GetComponent <BezierSpline>());
            enemyController.SetMaxHp(e._maxHP);
            enemyController.SetCurrentHP(e._maxHP);
            enemyController.SetDamage(e._damage);
            enemyController.SetChaseIndex(e._chaseIndex);
            enemyController.SetChaseSpeed(e._speed * (1 + e.animationSpeedOffset));
            enemyController.SetChaseAnimationSpeedOffset(1 + e.animationSpeedOffset);
            enemyController.SetSkin(e._skin);
            enemyController.Orient();
            enemyController.SetPlayerController(playerController);
            if (!e._preInstantiate)
            {
                instantiatedEnemy.SetActive(false);
            }
            currentPlayableLevel._enemyControllers.Add(enemyController);
        }
    }