yyl
8 天以前 eac792dad536d79f233978d7e6da2e714d56e29a
Main/System/Battle/BaseBattleWin.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
@@ -21,8 +22,14 @@
    [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()
    {
@@ -33,6 +40,120 @@
        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()
@@ -185,6 +306,10 @@
        battleField.OnRoundChange -= OnRoundChange;
        battleField.OnRoundChange += OnRoundChange;
        OnRoundChange(battleField.round, battleField.turnMax); // 立即执行一次以显示初始回合
        BindMingge();
        RefreshRedMinggeBuff();
        RefreshBlueMinggeBuff();
    }
    /// <summary>
    /// 跳过战斗