using System.Threading.Tasks; using ET; using FairyGUI; using UI.Arena; using UnityEngine; namespace GFGGame { public class ArenaResultView : BaseWindow { private UI_ArenaResultUI _ui; private ArenaDataManager _dataManager; private int winCount = 0; private bool isFinallyFight = false;//是否最后一场战斗 public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ArenaUI.PACKAGE_NAME; _ui = UI_ArenaResultUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_list.itemRenderer = RenderListItem; } protected override void AddEventListener() { base.AddEventListener(); } protected override void OnShown() { base.OnShown(); ViewManager.SetMaskAlpha(0); winCount = 0; _dataManager = ArenaDataManager.Instance; _ui.m_list.numItems = _dataManager.CurFightIndex + 1; isFinallyFight = _ui.m_list.numItems == 3; _ui.m_ComResult.target.visible = isFinallyFight; this.clickBlankToClose = isFinallyFight; if (isFinallyFight) { ArenaViewManager.Instance.UpdateAllScoreResult(_ui.m_ComResult.target, _dataManager.myScore, _dataManager.targetScore); } else { Timers.inst.Add(1, 1, StartNextRound); } } protected override void OnHide() { base.OnHide(); ViewManager.SetMaskAlpha(0.6f); if (isFinallyFight) { FinishFightAsync(); } } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void RenderListItem(int index, GObject obj) { ArenaViewManager.Instance.UpdateFightRoundResult(obj, index, _dataManager.myScore, _dataManager.targetScore, _dataManager.Targets[_dataManager.SelectTargetIndex], out bool isWin); if (isWin) winCount++; } private void StartNextRound(object param) { _dataManager.CurFightIndex++; ArenaTargetData targetData = _dataManager.Targets[_dataManager.SelectTargetIndex]; if (targetData.Type == ArenaFightTargetType.PLAYER) { ViewManager.Show(new object[] { targetData.Type, FightDataManager.Instance.roleData, targetData.RoleDressupList[_dataManager.CurFightIndex], null }, null, true); } else { ViewManager.Show(new object[] { targetData.Type, FightDataManager.Instance.roleData, null, targetData.RobotDressupList[_dataManager.CurFightIndex] }, null, true); } } private void FinishFightAsync() { ArenaDataManager dataManager = ArenaDataManager.Instance; ArenaTargetData targetData = dataManager.Targets[dataManager.SelectTargetIndex]; ArenaSproxy.ReqArenaFight(winCount >= 2, targetData, dataManager.myFightScore, dataManager.targetFightScore, dataManager.myScore, dataManager.targetScore).Coroutine(); } } }