| | |
| | | using Core.Utilities; |
| | | using TowerDefense.Towers; |
| | | using Core.Utilities; |
| | | using System; |
| | | using TMPro; |
| | | using UnityEngine; |
| | |
| | | using MoreMountains.NiceVibrations; |
| | | using TowerDefense.Level; |
| | | using KTGMGemClient; |
| | | using TowerDefense.UI.HUD; |
| | | using System.Collections; |
| | | |
| | | /// <summary> |
| | | /// 无尽模式用自己的EndlessUIStart |
| | |
| | | |
| | | private bool isPause; |
| | | |
| | | public bool beginSkillStep = false; |
| | | |
| | | // Start is called before the first frame update |
| | | void Start() |
| | | { |
| | | InitSDK(); |
| | | |
| | | bVibrate = new bool[4]; |
| | | bVibrate[0] = bVibrate[1] = bVibrate[2] = bVibrate[3] = false; |
| | | |
| | | // 设置为顶层渲染: |
| | | countDownTextNew.transform.SetAsLastSibling(); |
| | | |
| | | if (timeStatic) |
| | | timeStatic.gameObject.SetActive(false); |
| | | EndlessBuffSelect.instance.HideBuffUI(); |
| | | EndlessBossHPManager.instance.HideHP(); |
| | | EndlessSettlement settlement = SettlementUI.transform.Find("BgMask").GetComponent<EndlessSettlement>(); |
| | | settlement.Init(); |
| | | SettlementUI.SetActive(false); |
| | | EndlessMaskUI.instance.Hide(); |
| | | EndlessBossHPManager.instance.HideHP(); |
| | | |
| | | //查询是否已经做过了新手引导 |
| | | int guide = PlayerPrefs.GetInt("GemBattleGuide"); |
| | | GameConfig.IsNewbie = guide == 0; |
| | | |
| | | if (GameConfig.IsNewbie) |
| | | { |
| | | Debug.Log("开始新手引导"); |
| | | Pause(); |
| | | uiStartMssk.gameObject.SetActive(false); |
| | | countDownTextNew.text = ""; |
| | | countDownTextNew.gameObject.SetActive(false); |
| | | |
| | | Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform); |
| | | AddGuideEvent(); |
| | | } |
| | | |
| | | GameConfig.EndlessOpenAttackTowerCount = 0; |
| | | GameConfig.EndlessBuyTowerCount = 0; |
| | | GameConfig.EndlessPortUseSkillTowerCount = 0; |
| | | } |
| | | |
| | | private void InitSDK() |
| | | { |
| | | if (TDAA_SDKManager.Ins == null) |
| | | gameObject.AddComponent<TDAA_SDKManager>(); |
| | | TDAA_SDKManager.Ins.ArriveBattle();//埋点 |
| | | TDAA_SDKManager.Ins.Statistics(4);//埋点 |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加新手引导事件 |
| | | /// </summary> |
| | | private void AddGuideEvent() |
| | | { |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFireLv2, CreateFireLv2); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFirstWave, CreateFirstWave); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.RestartWave, RestartWave); |
| | | EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.AddGold, AddGold); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateSecondWave, CreateSecondWave); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.GuideFinish, NewbieGuideEnd); |
| | | |
| | | EventCenter.Ins.Add<Vector3>((int)KTGMGemClient.EventType.PlayAppearEffect, GuidePlayAppearEffect); |
| | | EventCenter.Ins.Add<Vector3>((int)KTGMGemClient.EventType.GuidePlayUpgradeEffect, GuidePlayUpgradeEffect); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 在(2,3)位置放置一个火元素的塔 |
| | | /// </summary> |
| | | private void CreateFireLv2() |
| | | { |
| | | Tower aTower = EndlessRandomTower.instance.getTowerByName("GrowUpTower"); |
| | | EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(2, 3), 2); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 开始第一关的第一个波次 |
| | | /// </summary> |
| | | private void CreateFirstWave() |
| | | { |
| | | Restart(); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 火塔充能释放完成 |
| | | /// </summary> |
| | | private void OnFireTowerChargeEnd() |
| | | { |
| | | Pause(); |
| | | EndlessLevelManager.instance.PauseWave(); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.ChargingEnd); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 恢复波次 |
| | | /// </summary> |
| | | private void RestartWave() |
| | | { |
| | | Restart(); |
| | | EndlessLevelManager.instance.RestartWave(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获得金币 |
| | | /// </summary> |
| | | /// <param name="gold"></param> |
| | | private void AddGold(int gold) |
| | | { |
| | | EndlessLevelManager.instance.Currency.AddCurrency(gold); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 新手引导生成特效 |
| | | /// </summary> |
| | | private void GuidePlayAppearEffect(Vector3 worldPos) |
| | | { |
| | | EndlessGameUI.instance.PlayAppearEffect(worldPos); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 新手引导合成特效 |
| | | /// </summary> |
| | | private void GuidePlayUpgradeEffect(Vector3 worldPos) |
| | | { |
| | | EndlessGameUI.instance.GuidePlayUpgradeEffect(worldPos); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 在攻击位置上创建一个1级的水塔 |
| | | /// </summary> |
| | | private void CreateWaterLv1() |
| | | { |
| | | Tower aTower = EndlessRandomTower.instance.getTowerByName("CopyCatTower"); |
| | | EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(1, 3), 1); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 开始第二关 |
| | | /// </summary> |
| | | private void CreateSecondWave() |
| | | { |
| | | EndlessLevelManager.instance.NewbieUpdateLevel(); |
| | | beginSkillStep = true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 在第三条兵线释放技能宝石 |
| | | /// </summary> |
| | | private void SkillRelease() |
| | | { |
| | | int attributeId = 99902; |
| | | int level = 1; |
| | | int waveLineIndex = 1; |
| | | |
| | | // 播放特效,并处理伤害. |
| | | EndlessWaveLineManager.instance.PlayWaveLineEffect(waveLineIndex); |
| | | AgentInsManager.instance.ExecWavelineAttack(waveLineIndex, attributeId, level, false); |
| | | ++GameConfig.EndlessPortUseSkillTowerCount; |
| | | StartCoroutine(Delay1()); |
| | | } |
| | | |
| | | private IEnumerator Delay1() |
| | | { |
| | | yield return new WaitForSeconds(1f); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillReleaseDone); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 新手引导结束 |
| | | /// </summary> |
| | | private void NewbieGuideEnd() |
| | | { |
| | | EndlessLevelManager.instance.RestartWave(); |
| | | GameConfig.IsNewbie = false; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | timeTextNew.text = ConvertTime((float)Math.Ceiling(startTime)); |
| | | } |
| | | |
| | | if (!bFirstLoaded && !bGameStart) |
| | | if (!GameConfig.IsNewbie) |
| | | { |
| | | bFirstLoaded = true; |
| | | secToDo = 4; |
| | | if (!bFirstLoaded && !bGameStart) |
| | | { |
| | | bFirstLoaded = true; |
| | | secToDo = 4; |
| | | } |
| | | |
| | | if (bFirstLoaded && !bGameStart) |
| | | { |
| | | secToDo -= Time.deltaTime; |
| | | countDownTextNew.gameObject.SetActive(true); |
| | | |
| | | if (secToDo >= 3) |
| | | { |
| | | countDownTextNew.text = "3"; |
| | | if (!bVibrate[3]) |
| | | { |
| | | bVibrate[3] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.SoftImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 2) |
| | | { |
| | | countDownTextNew.text = "2"; |
| | | if (!bVibrate[2]) |
| | | { |
| | | bVibrate[2] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.MediumImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 1) |
| | | { |
| | | countDownTextNew.text = "1"; |
| | | if (!bVibrate[1]) |
| | | { |
| | | bVibrate[1] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | else if (secToDo < 1) |
| | | { |
| | | countDownTextNew.text = "GO!"; |
| | | if (!bVibrate[0]) |
| | | { |
| | | bVibrate[0] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | |
| | | // 开启游戏,且隐藏中间的数字. |
| | | if (secToDo <= 0) |
| | | { |
| | | uiStartMssk.gameObject.SetActive(false); |
| | | countDownTextNew.text = ""; |
| | | countDownTextNew.gameObject.SetActive(false); |
| | | bGameStart = true; |
| | | // 开始关卡 |
| | | EndlessLevelManager.instance.StartLevel(); |
| | | timeTextNew.gameObject.SetActive(true); |
| | | |
| | | // 开始播放背景音乐. |
| | | if (bgMusic != null) |
| | | bgMusic.Play(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (bFirstLoaded && !bGameStart) |
| | | else |
| | | { |
| | | secToDo -= Time.deltaTime; |
| | | // 新手走的流程 |
| | | if (!bFirstLoaded && !bGameStart) |
| | | bFirstLoaded = true; |
| | | |
| | | if (secToDo >= 3) |
| | | if (bFirstLoaded && !bGameStart) |
| | | { |
| | | countDownTextNew.text = "3"; |
| | | if (!bVibrate[3]) |
| | | { |
| | | bVibrate[3] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.SoftImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 2) |
| | | { |
| | | countDownTextNew.text = "2"; |
| | | if (!bVibrate[2]) |
| | | { |
| | | bVibrate[2] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.MediumImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 1) |
| | | { |
| | | countDownTextNew.text = "1"; |
| | | if (!bVibrate[1]) |
| | | { |
| | | bVibrate[1] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | else if (secToDo < 1) |
| | | { |
| | | countDownTextNew.text = "GO!"; |
| | | if (!bVibrate[0]) |
| | | { |
| | | bVibrate[0] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | |
| | | // 开启游戏,且隐藏中间的数字. |
| | | if (secToDo <= 0) |
| | | { |
| | | uiStartMssk.gameObject.SetActive(false); |
| | | countDownTextNew.text = ""; |
| | | bGameStart = true; |
| | | // 开始关卡 |
| | | EndlessLevelManager.instance.StartLevel(); |
| | | timeTextNew.gameObject.SetActive(true); |
| | | |
| | | // 开始播放背景音乐. |
| | | if (bgMusic != null) |
| | | bgMusic.Play(); |
| | | } |