using System; using UnityEngine; using UnityEngine.UI; public class BattleWin : UIBase { // 组件引用 public Transform mountPoint; [SerializeField] Button fightBtn; private BattleRootNode battleRootNode = null; public Button btnStop; private BattleField battleField; float lastClickTime; //点击BOSS挑战 bool needGuide = false; float lastAnyClickTime; // 任何点击 // 生命周期 protected override void InitComponent() { base.InitComponent(); // 初始化组件引用 绑定按钮等UI组件事件 btnStop.AddListener(PauseGame); fightBtn.AddListener(()=> { UIManager.Instance.GetUI()?.ClickFunc(0); }); } private void PauseGame() { // BattleDebug.LogError("PauseeGame"); if (null == battleField) return; battleField.IsPause = !battleField.IsPause; BattleDebug.LogError(" is pause " + battleField.IsPause.ToString()); // if (battleField != null) // { // battleField.operationAgent.DoNext(); // } } protected override void OnPreOpen() { lastClickTime = Time.realtimeSinceStartup; lastAnyClickTime = Time.realtimeSinceStartup; UIManager.Instance.OnCloseWindow += OnCloseWindow; PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh; needGuide = !MainLevelManager.Instance.IsPassedByMainLevelID(BattleManager.Instance.fightGuideMainLevelLimit); // SetBattleField(BattleManager.Instance.storyBattleField); BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField; UIManager.Instance.OnOpenWindow += OnOpenWindow; } protected override void OnPreClose() { UIManager.Instance.OnCloseWindow -= OnCloseWindow; PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh; UIManager.Instance.CloseWindow(); BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField; UIManager.Instance.OnOpenWindow -= OnOpenWindow; } private void OnCreateBattleField(string arg1, BattleField field) { if (field.GetType() == battleField.GetType()) { SetBattleField(field); } } protected override void OnClose() { base.OnClose(); if (battleRootNode != null) { battleRootNode.transform.SetParent(Launch.Instance.transform); battleRootNode.transform.localPosition = new Vector3(-10000, -10000, 0); } battleField = null; } void OnCloseWindow(UIBase ui) { if (ui is NewBieWin) { lastClickTime = Time.realtimeSinceStartup; } } bool lastIsBoss = false; void OnPlayerDataRefresh(PlayerDataType type) { switch (type) { case PlayerDataType.ExAttr1: case PlayerDataType.ExAttr2: if (!lastIsBoss && MainLevelManager.Instance.CanChallengeBoss()) { //可挑战的时候也要等CD lastClickTime = Time.realtimeSinceStartup; lastIsBoss = true; } else { lastIsBoss = false; } break; } } public void SetBattleField(BattleField _battleField) { battleField = _battleField; if (battleRootNode != null) { battleRootNode.transform.localPosition = Vector3.zero; battleRootNode.transform.SetParent(Launch.Instance.transform); } battleRootNode = battleField.battleRootNode; battleRootNode.transform.SetParent(mountPoint); battleRootNode.transform.localPosition = Vector3.zero; battleRootNode.transform.localScale = Vector3.one; BattleHUDWin ui = UIManager.Instance.GetUI(); if (null == ui) { ui = UIManager.Instance.OpenWindow(); } ui.SetBattleField(battleField); battleField.UpdateCanvas(canvas); } void OnOpenWindow(UIBase ui) { if (ui is MainBossEnterWin) { lastClickTime = Time.realtimeSinceStartup; } } // 新手期 玩家未做任何操作下,在主线战斗中提醒点击战锤 void LateUpdate() { if (!needGuide) return; UpdateAnyClickTime(); if (Time.realtimeSinceStartup - lastClickTime > BattleManager.Instance.fightGuideNoClickSeconds) { if (NewBieCenter.Instance.inGuiding) { return; } if (UIManager.Instance.ExistAnyFullScreenOrMaskWin("")) { return; } if (!MainLevelManager.Instance.CanChallengeBoss()) { return; } NewBieCenter.Instance.StartNewBieGuide(BattleManager.Instance.fightBossGuideID); needGuide = !MainLevelManager.Instance.IsPassedByMainLevelID(BattleManager.Instance.fightGuideMainLevelLimit); BattleManager.Instance.storyBattleField.IsPause = false; lastClickTime = Time.realtimeSinceStartup; } } void UpdateAnyClickTime() { if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.AutoFight)) { return; } if (Time.realtimeSinceStartup - lastAnyClickTime > 3) { lastAnyClickTime = Time.realtimeSinceStartup; if (NewBieCenter.Instance.currentGuide != 0) { // 新手引导中不允许点击 return; } if (UIManager.Instance.ExistAnyFullScreenOrMaskWin("")) { return; } if (TaskManager.Instance.GetMainTaskState() == 2) { return; } if (BattleManager.Instance.storyBattleField != null && BattleManager.Instance.storyBattleField.recordPlayer.IsPlaying()) { return; } NewBieCenter.Instance.StartNewBieGuide(BattleManager.Instance.fightBGuideID); BattleManager.Instance.storyBattleField.IsPause = false; lastAnyClickTime = Time.realtimeSinceStartup; } } }