wangguan
2020-12-15 0d6a2e6d4b9de57a13c2bcb32148e1eb97ef1b1f
Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
@@ -23,8 +23,7 @@
    {
        /// <summary>
        /// 起始关卡
        /// </summary>'
        /// <value></value>
        /// </summary>
        protected int startLevel { get; set; } = 1;
        /// <summary>
@@ -191,19 +190,18 @@
        /// </summary>
        /// <value></value>
        public int SelectBuffNeddLevels { get; set; }
        // cx test
        // public int SelectBuffNeddLevels { get; set; } = 2;
        /// <summary>
        /// buff是否选择完成
        /// 弹框完成
        /// </summary>
        private bool isBuffSelectCompleted = true;
        private bool isPopDone = true;
        /// <summary>
        /// 新手第一关是否完成
        /// </summary>
        private bool isFirstLevelCompleted = false;
        private bool isSecondLevelCompleted = false;
        private bool isThirdLevelCompleted = false;
        private bool isStopSecondWaveCompleted = false;
@@ -213,6 +211,8 @@
        private float tunelLength;
        private List<Vector3> homeBasePositionList;
        private ElfUpgrade elfPanelUpgrade;
        /// <summary>
        /// 根据赛道id(1~5)获得基地坐标
@@ -376,6 +376,7 @@
        {
            EndlessBuffSelect.instance.BuffSelectCompleted += OnBuffSelectCompleted;
            EndlessGameUI.instance.GameOverEvent += SafelyCallLevelCompleted;
            EventCenter.Ins.Add((int)KTGMGemClient.EventType.ElfUpgradePanelClosed, ElfUpgradePanelClosed);
            homeBasePositionList = new List<Vector3>();
            tunelLength = Mathf.Abs(StartingNodeList[0].transform.position.z - EndNodeList[0].transform.position.z);
@@ -403,10 +404,9 @@
                CurrencyGainer.Tick(Time.deltaTime);
            }
            // buff选择完成,开始波次
            if (!isBuffSelectCompleted)
            if (!isPopDone)
            {
                isBuffSelectCompleted = true;
                isPopDone = true;
                if (CurrentLevel > startLevel)
                    WaveManager.InitPort(CurrentLevel);
                EndlessUIStart.instance.Restart();
@@ -476,7 +476,13 @@
                    //Debug.Log("开始第三关???");
                    isSecondLevelCompleted = true;
                    EndlessUIStart.instance.Pause();
                    EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.ShowWarningTips);
                    EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillSecondDone);
                }
                else if (isFirstLevelCompleted && isSecondLevelCompleted && !isThirdLevelCompleted)
                {
                    isThirdLevelCompleted = true;
                    EndlessUIStart.instance.Pause();
                    EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillThirdDone);
                }
            }
        }
@@ -527,6 +533,8 @@
        {
            if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) return;
            EndlessBossCtrl.instance.ClearBoss();
            if (CurrentLevel == startLevel)
                WaveManager.InitPort(CurrentLevel);
@@ -534,12 +542,32 @@
            {
                // buff池的初始化要从正式关卡算起,不算新手关
                EndlessBuffData.InitEndlessBuffPool(GameConfig.IsNewbieStart ? CurrentLevel - EndlessPortData.NewbieTotalLevel : CurrentLevel);
                ShowSelectBuffUI();
                PopUpPanel();
                EndlessRandomTower.instance.SetCountDown(false);
            }
            else
            {
                EndlessUIStart.instance.Restart();
                WaveManager.StartWaves(CurrentLevel);
            }
        }
        /// <summary>
        /// 弹出面板
        /// </summary>
        private void PopUpPanel()
        {
            EndlessUIStart.instance.Pause();
            List<List<EndlessPortConfig>> list = EndlessPortData.GetLevelWaveData(CurrentLevel);
            if (list.Count > 0)
            {
                int level = list[0][0].Config.evolution_lv;
                if (level > 0)
                    ShowElfUpgradePanel(level);
                else
                    ShowSelectBuffUI();
            }
        }
@@ -553,27 +581,43 @@
            if (list.Count == 0)
            {
                isBuffSelectCompleted = false;
                isPopDone = false;
                return;
            }
            EndlessUIStart.instance.Pause();
            EndlessBuffSelect.instance.Refresh(list);
            EndlessBuffSelect.instance.ShowBuffUI();
        }
        private void ShowElfUpgradePanel(int level)
        {
            GameObject elfUpgradeObj = Instantiate(Resources.Load<GameObject>("UI/ElfUpgrade/ElfUpgradePanel"), GameObject.Find("UICamera/BottomCanvas/Panel").transform);
            elfPanelUpgrade = elfUpgradeObj.GetComponent<ElfUpgrade>();
            elfPanelUpgrade.SetUpgradeLevel(level);
        }
        /// <summary>
        /// buff选择完成p
        /// buff选择完成
        /// </summary>
        /// <param name="index"></param>
        public void OnBuffSelectCompleted(int index)
        private void OnBuffSelectCompleted(int index)
        {
            isBuffSelectCompleted = false;
            isPopDone = false;
            EndlessBuffManager.instance.AddBuff(EndlessBuffData.GetBuffByIndex(index));
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBuffRefresh);
        }
        /// <summary>
        /// 关闭了精灵升级界面
        /// </summary>
        private void ElfUpgradePanelClosed()
        {
            isPopDone = false;
            EndlessGameUI.instance.UpgradeAllTowerMinLevel(elfPanelUpgrade.GetUpgradeLevel() - 1);
            EndlessRandomTower.instance.SetCountDown(true, true);
        }
        /// <summary>
        /// Changes the state and broadcasts the event
        /// </summary>
        /// <param name="newState">The new state to transitioned to</param>