| | |
| | | using System.Collections.Generic; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | |
| | | [SerializeField] protected SkillTips skillTipsRed; // 红方技能提示 |
| | | [SerializeField] protected SkillTips skillTipsBlue; // 蓝方技能提示 |
| | | [SerializeField] protected Text txtBattleRound; // 回合信息 (Arena的txtWaveInfo, Story/Bone的txtBattleRound) |
| | | |
| | | [SerializeField] protected GameObject minggeObj; |
| | | |
| | | private List<MinggeBuffCell> redMinggeBuffCells = new List<MinggeBuffCell>(); |
| | | private List<MinggeBuffCell> blueMinggeBuffCells = new List<MinggeBuffCell>(); |
| | | protected BattleRootNode battleRootNode = null; |
| | | protected BattleField battleField; // 当前战斗的战场实例 |
| | | |
| | | |
| | | protected override void InitComponent() |
| | | { |
| | |
| | | |
| | | if (btnPass != null) |
| | | btnPass.AddListener(OnClickPass); |
| | | |
| | | InitMingge(); |
| | | } |
| | | |
| | | protected virtual void InitMingge() |
| | | { |
| | | if (null == minggeObj) |
| | | return; |
| | | |
| | | for (int i = 1; i <= 4; i++) |
| | | { |
| | | GameObject redCell = minggeObj.transform.Find("RedMinggeBuff/MinggeBuffCell" + i).gameObject; |
| | | redMinggeBuffCells.Add(redCell.GetComponent<MinggeBuffCell>()); |
| | | |
| | | GameObject blueCell = minggeObj.transform.Find("BlueMinggeBuff/MinggeBuffCell" + i).gameObject; |
| | | blueMinggeBuffCells.Add(blueCell.GetComponent<MinggeBuffCell>()); |
| | | } |
| | | } |
| | | |
| | | protected virtual void BindMingge() |
| | | { |
| | | if (minggeObj == null) |
| | | return; |
| | | |
| | | if (battleField == null) |
| | | return; |
| | | |
| | | MinggeBattleObject redMingge = battleField.battleObjMgr.redMingge; |
| | | if (null != redMingge) |
| | | { |
| | | redMingge.GetBuffMgr().onBuffChanged -= RefreshRedMinggeBuff; |
| | | redMingge.GetBuffMgr().onBuffChanged += RefreshRedMinggeBuff; |
| | | } |
| | | |
| | | MinggeBattleObject blueMingge = battleField.battleObjMgr.blueMingge; |
| | | if (null != blueMingge) |
| | | { |
| | | blueMingge.GetBuffMgr().onBuffChanged -= RefreshBlueMinggeBuff; |
| | | blueMingge.GetBuffMgr().onBuffChanged += RefreshBlueMinggeBuff; |
| | | } |
| | | |
| | | } |
| | | |
| | | protected void RefreshRedMinggeBuff() |
| | | { |
| | | MinggeBattleObject redMingge = battleField.battleObjMgr.redMingge; |
| | | if (null != redMingge) |
| | | { |
| | | RefreshMinggeBuff(redMinggeBuffCells, redMingge.GetBuffMgr().GetBuffIconList()); |
| | | } |
| | | else |
| | | { |
| | | RefreshMinggeBuff(redMinggeBuffCells, null); |
| | | } |
| | | } |
| | | |
| | | protected void RefreshBlueMinggeBuff() |
| | | { |
| | | MinggeBattleObject blueMingge = battleField.battleObjMgr.blueMingge; |
| | | if (null != blueMingge) |
| | | { |
| | | RefreshMinggeBuff(blueMinggeBuffCells, blueMingge.GetBuffMgr().GetBuffIconList()); |
| | | } |
| | | else |
| | | { |
| | | RefreshMinggeBuff(blueMinggeBuffCells, null); |
| | | } |
| | | } |
| | | |
| | | protected void RefreshMinggeBuff(List<MinggeBuffCell> cells, List<HB428_tagSCBuffRefresh> buffList) |
| | | { |
| | | for (int i = 0; i < cells.Count; i++) |
| | | { |
| | | var cell = cells[i]; |
| | | if (buffList != null && i < buffList.Count) |
| | | { |
| | | var buff = buffList[i]; |
| | | cells[i].gameObject.SetActive(true); |
| | | cells[i].Init(buffList[i], () => OnClickMinggeBuff(cell, buff)); |
| | | } |
| | | else |
| | | { |
| | | cells[i].gameObject.SetActive(false); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void OnClickMinggeBuff(MinggeBuffCell cell, HB428_tagSCBuffRefresh buff) |
| | | { |
| | | SmallTipWin.showText = Language.Get("SmallTipFomat", SkillConfig.Get((int)buff.SkillID)?.SkillName, SkillConfig.Get((int)buff.SkillID)?.Description); |
| | | SmallTipWin.worldPos = cell.transform.position; |
| | | SmallTipWin.isDownShow = true; |
| | | UIManager.Instance.OpenWindow<SmallTipWin>(); |
| | | } |
| | | |
| | | protected virtual void UnbindMingge() |
| | | { |
| | | if (minggeObj == null) |
| | | return; |
| | | |
| | | if (battleField == null) |
| | | return; |
| | | |
| | | MinggeBattleObject redMingge = battleField.battleObjMgr.redMingge; |
| | | if (null != redMingge) |
| | | { |
| | | redMingge.GetBuffMgr().onBuffChanged -= RefreshRedMinggeBuff; |
| | | } |
| | | |
| | | MinggeBattleObject blueMingge = battleField.battleObjMgr.blueMingge; |
| | | if (null != blueMingge) |
| | | { |
| | | blueMingge.GetBuffMgr().onBuffChanged -= RefreshBlueMinggeBuff; |
| | | } |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | |
| | | battleField.OnRoundChange -= OnRoundChange; |
| | | battleField.OnRoundChange += OnRoundChange; |
| | | OnRoundChange(battleField.round, battleField.turnMax); // 立即执行一次以显示初始回合 |
| | | |
| | | BindMingge(); |
| | | RefreshRedMinggeBuff(); |
| | | RefreshBlueMinggeBuff(); |
| | | } |
| | | /// <summary> |
| | | /// 跳过战斗 |