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<MainWin>()?.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<BattleHUDWin>();
|
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<BattleHUDWin>();
|
|
if (null == ui)
|
{
|
ui = UIManager.Instance.OpenWindow<BattleHUDWin>();
|
}
|
|
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;
|
}
|
|
}
|
|
|
|
}
|