using FairyGUI; using UnityEngine; using UI.Main; using System.Collections; using System.Collections.Generic; using ET; namespace GFGGame { public class ArenaFightResultView : BaseView { private UI_ArenaFightResultUI _ui; private GameObject _sceneObject; private EffectUI _effectUI1; private EffectUI _effectUI2; private EffectUI _effectUI3; private EffectUI _effectUI4; private EffectUI _effectUI5; private EffectUI _effectUI6; private EffectUI _effectUI7; private EffectUI _effectUI8; public override void Dispose() { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; EffectUIPool.Recycle(_effectUI2); _effectUI2 = null; EffectUIPool.Recycle(_effectUI3); _effectUI3 = null; EffectUIPool.Recycle(_effectUI4); _effectUI4 = null; EffectUIPool.Recycle(_effectUI5); _effectUI5 = null; EffectUIPool.Recycle(_effectUI6); _effectUI6 = null; EffectUIPool.Recycle(_effectUI7); _effectUI7 = null; EffectUIPool.Recycle(_effectUI8); _effectUI8 = null; if (_ui != null) { _ui.Dispose(); } _ui = null; base.Dispose(); } protected override void Init() { base.Init(); _ui = UI_ArenaFightResultUI.Create(); viewCom = _ui.target; isfullScreen = true; //isReturnView = true; } protected override void OnInit() { base.OnInit(); _ui.m_btnClose.onClick.Add(OnClickBtnClose); // _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("fightBg"); AddEffect(); } private void AddEffect() { EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult0, "ui_fight_new", "ZDJS_lose", onComplete: (effect) => { if (effect != null) { _effectUI1 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult1, "ui_fight_new", "ZDJS_qualified", onComplete: (effect) => { if (effect != null) { _effectUI2 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult2, "ui_fight_new", "ZDJS_good", onComplete: (effect) => { if (effect != null) { _effectUI3 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult3, "ui_fight_new", "ZDJS_Perfect", onComplete: (effect) => { if (effect != null) { _effectUI4 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderScore, "ui_fight_new", "ZDJS_Text_kuang", onComplete: (effect) => { if (effect != null) { _effectUI5 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderStar3, "ui_fight_new", "ZDJS_STAR", onComplete: (effect) => { if (effect != null) { _effectUI6 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderStar2, "ui_fight_new", "ZDJS_STAR", onComplete: (effect) => { if (effect != null) { _effectUI7 = effect; } }); EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderStar1, "ui_fight_new", "ZDJS_STAR", onComplete: (effect) => { if (effect != null) { _effectUI8 = effect; } }); } protected override void OnShown() { base.OnShown(); FightData roleData = null; if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork) { roleData = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.CurFightIndex]; } else { roleData = ArenaDataManager.Instance.DressupList[ArenaDataManager.Instance.CurFightIndex]; } if (_sceneObject == null) { // 异步加载预制体 PrefabManager.Instance.InstantiateAsync( ResPathUtil.GetPrefabPath("SceneFightResult"), (gameObject) => { if (gameObject != null) { _sceneObject = gameObject; MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject, false, false, null, true); MyDressUpHelper.dressUpObj.AddOrRemove(180014, false); // 加载完成后继续执行后续逻辑 ContinueAfterInstantiation(roleData); } else { Debug.LogError("场景对象实例化失败"); // 即使失败也继续执行基本逻辑 ContinueAfterInstantiation(roleData); } } ); return; // 提前返回,等待回调 } // 如果_sceneObject已经存在,直接执行后续逻辑 ContinueAfterInstantiation(roleData); } private void ContinueAfterInstantiation(FightData roleData) { MyDressUpHelper.dressUpObj.PutOnItemList(roleData.itemList); if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena) { long myScore = ArenaDataManager.Instance.myScore[ArenaDataManager.Instance.CurFightIndex]; long targetScore = ArenaDataManager.Instance.targetScore[ArenaDataManager.Instance.CurFightIndex]; _ui.m_comResult.m_c1.selectedIndex = myScore > targetScore ? 3 : 0; _ui.m_comResult.m_txtScore.text = myScore.ToString(); } else { long myScore = FieldWorkDataManager.Instance.myScore[FieldWorkDataManager.Instance.CurFightIndex]; _ui.m_comResult.m_c1.selectedIndex = 0; _ui.m_comResult.m_txtScore.text = myScore.ToString(); } _ui.m_btnClose.enabled = false; ShowResultView(); } private void ShowResultView() { ArenaDataManager.Instance.CurFightIndex++; _ui.m_comResult.m_t0.Play(() => { ViewManager.Show(); _ui.m_btnClose.enabled = true; }); } protected override void OnHide() { base.OnHide(); if (_sceneObject != null) { PrefabManager.Instance.Restore(_sceneObject); _sceneObject = null; } //这里屏蔽是由于打开其他界面时,会调用这个方法 //MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT)); // _ui.m_comResult.target.height = 0; _ui.m_comResult.m_t1.Play(); if (ArenaDataManager.Instance.CurFightIndex > 2) { object[] goBackDatas = ViewManager.GetGoBackDatas(typeof(ArenaView).FullName); ViewManager.Show(null, true); } } private void OnClickBtnClose(object param) { this.Hide(); } } }