using System.Threading.Tasks; using ET; using FairyGUI; //using UI.Arena; using UnityEngine; using UI.FieldWork; namespace GFGGame { public class FieldWorkRoundResultView : BaseWindow { private UI_FieldWorkRoundResultUI _ui; private FieldWorkDataManager _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_FieldWorkRoundResultUI.PACKAGE_NAME; _ui = UI_FieldWorkRoundResultUI.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 async override void OnShown() { base.OnShown(); ViewManager.SetMaskAlpha(0); winCount = 0; _dataManager = FieldWorkDataManager.Instance; //_ui.m_list.numItems = _dataManager.CurFightIndex; _ui.m_list.numItems = FieldWorkDataManager.Instance.myScore.Count; isFinallyFight = _ui.m_list.numItems == 3; _ui.m_ComResult.target.visible = isFinallyFight; _ui.m_loaResule.visible = isFinallyFight; this.clickBlankToClose = isFinallyFight; if (isFinallyFight) { long myAllScore = 0; long targetAllScore = FieldWorkDataManager.Instance.targetWinScore; for (int i = 0; i < FieldWorkDataManager.Instance.myScore.Count; i++) { myAllScore += FieldWorkDataManager.Instance.myScore[i]; } bool isWin = myAllScore > targetAllScore; _ui.m_loaResule.url = isWin ? "ui://FieldWork/kstzjj_slsl" : "ui://FieldWork/kstzjj_shib"; _ui.m_ComResult.m_comResult.m_txtMyFightScore.text = myAllScore.ToString(); _ui.m_ComResult.m_comResult.m_txtTargetFightScore.text = targetAllScore.ToString(); bool result = await FieldWorkSproxy.ReqFieldWorkFight(FieldWorkDataManager.Instance.currentLevelID); if (result) { if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(FieldWorkDataManager.Instance.currentLevelID)) { if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[FieldWorkDataManager.Instance.currentLevelID].IsPass) { await FieldWorkSproxy.ReqChangeFieldWorkDressup(); } } else { } } else { //PromptController.Instance.ShowFloatTextPrompt("未通过!"); } } else { Timers.inst.Add(1, 1, StartNextRound); } Timers.inst.AddUpdate(CheckGuide); } protected override void OnHide() { base.OnHide(); ViewManager.SetMaskAlpha(0.6f); if (isFinallyFight) { MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT)); FinishFight(); } } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void RenderListItem(int index, GObject obj) { UI_ListResultItem item = UI_ListResultItem.Proxy(obj); item.m_txtRound.text = "回合 " + (index + 1).ToString(); RoleInfoManager.Instance.UpdateHead(item.m_comMyHead, RoleDataManager.headId, RoleDataManager.headBorderId); int myCardId = FieldWorkDataManager.Instance.DressupList[index].cardId; ItemCfg cardCfg = ItemCfgArray.Instance.GetCfg(myCardId); item.m_loaMyCard.m_comCardmask.m_loaCard.url = cardCfg == null ? "" : ResPathUtil.GetCardIconPath(cardCfg.res); int scoreType = FieldWorkDataManager.Instance.ThemeList[index]; item.m_loaScore.url = ResPathUtil.GetScorePath(scoreType); long myScore = FieldWorkDataManager.Instance.myScore[index]; item.m_txtMyScore.text = myScore.ToString(); UI_ListResultItem.ProxyEnd(); } private void StartNextRound(object param) { ViewManager.Hide(); ViewManager.Show(_dataManager.DressupList[_dataManager.CurFightIndex]); ViewManager.Show(); this.Hide(); } private void FinishFight() { FieldWorkDataManager dataManager = FieldWorkDataManager.Instance; ViewManager.Hide(); if(dataManager.BonusList != null || dataManager.BonusList.Count >0) { BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(dataManager.BonusList), () => { // ViewManager.Hide(); }); dataManager.BonusList.Clear(); } } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && isFinallyFight) { UpdateCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } } protected void UpdateCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_guide.target, ConstGuideId.FIELD, 15, "三轮累计的分数将决定关卡的通关与否!"); } } }