| | |
| | | { |
| | | /// <summary> |
| | | /// 起始关卡 |
| | | /// </summary>' |
| | | /// <value></value> |
| | | /// </summary> |
| | | protected int startLevel { get; set; } = 1; |
| | | |
| | | /// <summary> |
| | | /// 当前的关卡等级 |
| | | /// </summary> |
| | | public int CurrentLevel { get; set; } = 1; |
| | | |
| | | private float dropRate; |
| | | |
| | | /// <summary> |
| | | /// 当前金币掉率 |
| | | /// </summary> |
| | | /// <value></value> |
| | | public float DropRate |
| | | { |
| | | get |
| | | { |
| | | return dropRate; |
| | | } |
| | | set |
| | | { |
| | | dropRate = value; |
| | | Debug.Log("设置了掉率" + dropRate); |
| | | } |
| | | } |
| | | |
| | | private int dropCoin; |
| | | |
| | | /// <summary> |
| | | /// 当前金币 |
| | | /// </summary> |
| | | /// <value></value> |
| | | public int DropCoin |
| | | { |
| | | get |
| | | { |
| | | return dropCoin; |
| | | } |
| | | set |
| | | { |
| | | dropCoin = value; |
| | | } |
| | | } |
| | | |
| | | protected static readonly int MAX_TOWER = 5; |
| | | |
| | |
| | | /// </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; |
| | | |
| | |
| | | private float tunelLength; |
| | | |
| | | private List<Vector3> homeBasePositionList; |
| | | |
| | | private ElfUpgrade elfPanelUpgrade; |
| | | |
| | | /// <summary> |
| | | /// 根据赛道id(1~5)获得基地坐标 |
| | |
| | | /// </summary> |
| | | public virtual void StartLevel() |
| | | { |
| | | EndlessPortData.Init(); |
| | | ChangeLevelState(LevelState.SpawningEnemies); |
| | | SelfPlacementArea.startCoinGenMode(); |
| | | } |
| | |
| | | { |
| | | 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); |
| | |
| | | CurrencyGainer.Tick(Time.deltaTime); |
| | | } |
| | | |
| | | // buff选择完成,开始波次 |
| | | if (!isBuffSelectCompleted) |
| | | if (!isPopDone) |
| | | { |
| | | isBuffSelectCompleted = true; |
| | | isPopDone = true; |
| | | if (CurrentLevel > startLevel) |
| | | WaveManager.InitPort(CurrentLevel); |
| | | EndlessUIStart.instance.Restart(); |
| | |
| | | if (!UpdateLevel()) |
| | | ChangeLevelState(LevelState.AllEnemiesSpawned); |
| | | } |
| | | else if (!isFirstLevelCompleted) |
| | | { |
| | | isFirstLevelCompleted = true; |
| | | EndlessUIStart.instance.Pause(); |
| | | // 第一关的怪全部被杀光 |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillDone); |
| | | } |
| | | // else if (!isFirstLevelCompleted) |
| | | // { |
| | | // isFirstLevelCompleted = true; |
| | | // EndlessUIStart.instance.Pause(); |
| | | // // 第一关的怪全部被杀光 |
| | | // EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillDone); |
| | | // } |
| | | // else if (!isSecondLevelCompleted) |
| | | // { |
| | | // Debug.Log("开始第三关???"); |
| | | // isSecondLevelCompleted = true; |
| | | // //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave); |
| | | // } |
| | | } |
| | | } |
| | | |
| | |
| | | EndlessScoreManager.instance.AddScore(score); |
| | | EndlessBossSkillManager.instance.ClearSkillList(); |
| | | EndlessBossCtrl.instance.ChangeState(EndlessBossActionState.Death); |
| | | |
| | | if (GameConfig.IsNewbie) |
| | | { |
| | | if (!isFirstLevelCompleted) |
| | | { |
| | | isFirstLevelCompleted = true; |
| | | EndlessUIStart.instance.Pause(); |
| | | // 第一关的怪全部被杀光 |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillDone); |
| | | } |
| | | else if (!isSecondLevelCompleted) |
| | | { |
| | | //Debug.Log("开始第三关???"); |
| | | isSecondLevelCompleted = true; |
| | | EndlessUIStart.instance.Pause(); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillSecondDone); |
| | | } |
| | | else if (isFirstLevelCompleted && isSecondLevelCompleted && !isThirdLevelCompleted) |
| | | { |
| | | isThirdLevelCompleted = true; |
| | | EndlessUIStart.instance.Pause(); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillThirdDone); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) return; |
| | | |
| | | EndlessBossCtrl.instance.ClearBoss(); |
| | | |
| | | if (CurrentLevel == startLevel) |
| | | WaveManager.InitPort(CurrentLevel); |
| | | |
| | | if (!GameConfig.IsNewbie) |
| | | ShowSelectBuffUI(); |
| | | { |
| | | // buff池的初始化要从正式关卡算起,不算新手关 |
| | | EndlessBuffData.InitEndlessBuffPool(GameConfig.IsNewbieStart ? CurrentLevel - EndlessPortData.NewbieTotalLevel : CurrentLevel); |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | 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> |
| | |
| | | /// </summary> |
| | | public void StopSecondWave() |
| | | { |
| | | Debug.LogError("--------------------- 停止第二关出怪 ---------------------"); |
| | | if (!isStopSecondWaveCompleted) |
| | | { |
| | | isStopSecondWaveCompleted = true; |
| | | PauseWave(); |
| | | } |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillStep); |
| | | //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillStep); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.DragStep); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |