| //--------------------------------------------------------  | 
| //    [Author]:           第二世界  | 
| //    [  Date ]:           Monday, September 18, 2017  | 
| //--------------------------------------------------------  | 
|   | 
| using System;  | 
| using System.Collections;  | 
| using System.Collections.Generic;  | 
| using UnityEngine;  | 
| using UnityEngine.UI;  | 
| using DG.Tweening;  | 
|   | 
|   | 
| namespace vnxbqy.UI  | 
| {  | 
|   | 
|     public class DungeonFightWin : Window  | 
|     {  | 
|         [SerializeField] Button m_ExitDungeon;  | 
|         [SerializeField] RectTransform m_ExitContainer;  | 
|         [SerializeField] Text m_ExitCoolDown;  | 
|         [SerializeField] DungeonInspireBehaviour m_Inspire;  | 
|         [SerializeField] DungeonLiquidBehaviour m_Liquid;  | 
|         [SerializeField] RectTransform m_ContainerFuncUp;  | 
|         [SerializeField] RectTransform m_ContainerFuncBottom;  | 
|         [SerializeField] RectTransform m_ContainerFuncBtn;  | 
|         [SerializeField] RectTransform m_ContainerResPoint;  | 
|         [SerializeField] RectTransform m_CrossContainerResPoint;  | 
|         [SerializeField] RectTransform m_ContainerAncient;  | 
|         [SerializeField] Button m_RidingPetBossReward;  | 
|         [SerializeField] Button m_AncientBtn;  | 
|         [SerializeField] AncientKingBehaviour m_AncientKing;  | 
|         [SerializeField] DungeonItemCollect m_ItemCollect;  | 
|         [SerializeField] DungeonGuardSkyBehaviour m_GuardSky;  | 
|         [SerializeField] DungeonBossBriefInfoContainer m_BossInfosContainer;  | 
|         [SerializeField] GameObject m_Container_WHYJ;  | 
|         [SerializeField] DungenWHYJ m_DungenWHYJ;  | 
|         [SerializeField] DungeonReturnBloodBehaviour m_DungeonReturnBlood;  | 
|         [SerializeField] DungeonSuperGiftBehaviour m_DungeonSuperGift;  | 
|         bool excutedAutoExit = false;  | 
|         float timer = 0f;  | 
|         DateTime endTime = DateTime.Now;  | 
|         float existSurplusTime = 10f;  | 
|   | 
|         int collectItem = 0;  | 
|   | 
|         Tweener m_Tweener;  | 
|   | 
|         int ruinsTranscriptMapId = 0;  | 
|         DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }  | 
|         PlayerMainDate main { get { return ModelCenter.Instance.GetModel<PlayerMainDate>(); } }  | 
|         RuneTowerModel runeTowerModel { get { return ModelCenter.Instance.GetModel<RuneTowerModel>(); } }  | 
|         SkyTowerModel skyTowerModel { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } }  | 
|         BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }  | 
|         TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }  | 
|         DungeonUseBuffModel dungeonUseBuffModel { get { return ModelCenter.Instance.GetModel<DungeonUseBuffModel>(); } }  | 
|         HazyGrassModel hazyGrassModel { get { return ModelCenter.Instance.GetModel<HazyGrassModel>(); } }  | 
|         HazyDemonKingModel hazyDemonKingModel { get { return ModelCenter.Instance.GetModel<HazyDemonKingModel>(); } }  | 
|         RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }  | 
|         CrossServerBossModel crossServerBossModel { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } }  | 
|   | 
|         #region Built-in  | 
|         protected override void BindController()  | 
|         {  | 
|             ruinsTranscriptMapId = int.Parse(FuncConfigConfig.Get("SpRewardMapID").Numerical1);  | 
|         }  | 
|   | 
|         protected override void AddListeners()  | 
|         {  | 
|             m_ExitDungeon.AddListener(ExitDungeon);  | 
|             m_AncientBtn.onClick.AddListener(OnAncientBtn);  | 
|             m_RidingPetBossReward.AddListener(OnRidingPetBossReward);  | 
|         }  | 
|   | 
|   | 
|         protected override void OnPreOpen()  | 
|         {  | 
|             try  | 
|             {  | 
|                 m_ExitDungeon.SetActive(!CrossServerUtility.IsCrossServerOneVsOne());  | 
|                 timer = 1f;  | 
|                 excutedAutoExit = false;  | 
|                 existSurplusTime = (float)(model.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap) - TimeUtility.ServerNow).TotalSeconds;  | 
|   | 
|                 ShowItemCollect();  | 
|                 ShowResPoint();  | 
|   | 
|                 m_Inspire.SetActive(false);  | 
|                 m_Liquid.SetActive(false);  | 
|                 var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);  | 
|                 m_ContainerAncient.SetActive(dataMapId == 31160);  | 
|                 m_BossInfosContainer.SetActive(  | 
|                     dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID  | 
|                     || dataMapId == BossHomeModel.BOSSHOME_MAPID);  | 
|   | 
|                 if (dungeonUseBuffModel.IsDungeonUseBuff(dataMapId))  | 
|                 {  | 
|                     m_DungeonReturnBlood.SetActive(true);  | 
|                     m_DungeonReturnBlood.Display(dataMapId);  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     m_DungeonReturnBlood.SetActive(false);  | 
|                 }  | 
|   | 
|                 switch (dataMapId)  | 
|                 {  | 
|                     case 31080:  | 
|                         m_Inspire.SetActive(true);  | 
|                         m_Liquid.SetActive(true);  | 
|                         ModelCenter.Instance.GetModel<DemonJarModel>().AutoConfirm();  | 
|                         break;  | 
|                     case DemonJarModel.DATA_MAPID:  | 
|                         var _bossId = ModelCenter.Instance.GetModel<DemonJarModel>().GetBossIdByLine(model.currentDungeon.lineId);  | 
|                         var _cfg = DemonJarConfig.Get(_bossId);  | 
|                         m_Inspire.SetActive(_cfg != null && _cfg.CanEnterTimes == 0);  | 
|                         break;  | 
|                     case 31190:  | 
|                         DropItemManager.pickUpCallBack += OnPickItem;  | 
|                         break;  | 
|                     case ElderGodAreaModel.ELDERGODAREA_MAPID:  | 
|                     //case BossHomeModel.BOSSHOME_MAPID:  | 
|                     //    m_BossInfosContainer.Display(dataMapId);  | 
|                     //    break;  | 
|                     case 31160:  | 
|                         m_AncientKing.Init();  | 
|                         break;  | 
|                     case JadeDynastyBossModel.JADEDYNASTY_MAP:  | 
|                     case AllianceBossModel.DATAMAPID:  | 
|                     case RidingPetBossModel.RIDINGPETBOSS_MAP:  | 
|                         m_Inspire.SetActive(true);  | 
|                         break;  | 
|                     default:  | 
|                         break;  | 
|                 }  | 
|                 m_GuardSky.SetActive(dataMapId == 31170);  | 
|                 m_ContainerFuncBtn.localPosition = MainPositionTween.isDefaultState ? m_ContainerFuncBottom.localPosition : m_ContainerFuncUp.localPosition;  | 
|                 m_RidingPetBossReward.SetActive(dataMapId == RidingPetBossModel.RIDINGPETBOSS_MAP);  | 
|                 m_DungeonSuperGift.Display();  | 
|   | 
|                 model.dungeonCoolDownEvent += OnLeaveMapTimeEvent;  | 
|                 MainPositionTween.switchFunctionStateEvent += OnChangeFuncBtnPosEvent;  | 
|                 WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent;  | 
|                 if (WHYJBool())  | 
|                 {  | 
|                     m_Container_WHYJ.SetActive(true);  | 
|                     m_DungenWHYJ.Init();  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     m_Container_WHYJ.SetActive(false);  | 
|                 }  | 
|             }  | 
|             catch (System.Exception ex)  | 
|             {  | 
| #if !UNITY_EDITOR  | 
|                 OperationLogCollect.Instance.BugReport("DungeonFightWin", ex.ToString());  | 
| #endif  | 
|             }  | 
|         }  | 
|   | 
|         protected override void OnAfterOpen()  | 
|         {  | 
|             if (PlayerDatas.Instance.baseData.MapID == IceCrystalVeinModel.ICECRYSTALVEIN_MAPID)  | 
|             {  | 
|                 var iceCrystalVeinModel = ModelCenter.Instance.GetModel<IceCrystalVeinModel>();  | 
|                 iceCrystalVeinModel.IsIceCrystalVein_Copy = true;  | 
|             }  | 
|         }  | 
|   | 
|         protected override void OnPreClose()  | 
|         {  | 
|             if (m_Tweener != null)  | 
|             {  | 
|                 m_Tweener.Kill(false);  | 
|                 m_Tweener = null;  | 
|             }  | 
|             m_ContainerFuncBtn.localPosition = m_ContainerFuncBottom.localPosition;  | 
|             m_BossInfosContainer.Dispose();  | 
|             m_AncientKing.UnInit();  | 
|             m_DungeonReturnBlood.Dispose();  | 
|             m_DungeonSuperGift.Dispose();  | 
|             DropItemManager.pickUpCallBack -= OnPickItem;  | 
|             MainPositionTween.switchFunctionStateEvent -= OnChangeFuncBtnPosEvent;  | 
|             model.dungeonCoolDownEvent -= OnLeaveMapTimeEvent;  | 
|             WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;  | 
|         }  | 
|   | 
|         protected override void OnAfterClose()  | 
|         {  | 
|             m_DungenWHYJ.Unit();  | 
|             var iceCrystalVeinModel = ModelCenter.Instance.GetModel<IceCrystalVeinModel>();  | 
|             if (iceCrystalVeinModel.IsIceCrystalVein_Copy)  | 
|             {  | 
|                 iceCrystalVeinModel.IsIceCrystalVein_Copy = false;  | 
|                 PopupWindowsProcessor.Instance.Add("IceCrystalVeinWin");  | 
|             }  | 
|   | 
|         }  | 
|   | 
|         protected override void LateUpdate()  | 
|         {  | 
|             base.LateUpdate();  | 
|   | 
|             UpdateDungeonExitTime();  | 
|         }  | 
|         #endregion  | 
|   | 
|         private void WindowAfterCloseEvent(Window window)  | 
|         {  | 
|             if (window is TreasureBaseWin)  | 
|             {  | 
|                 if (m_Tweener != null)  | 
|                 {  | 
|                     m_Tweener.Kill(false);  | 
|                     m_Tweener = null;  | 
|                 }  | 
|   | 
|                 m_ContainerFuncBtn.localPosition = MainPositionTween.isDefaultState ? m_ContainerFuncBottom.localPosition : m_ContainerFuncUp.localPosition;  | 
|             }  | 
|         }  | 
|   | 
|         private void OnLeaveMapTimeEvent(DungeonCoolDownType _type)  | 
|         {  | 
|             if (_type != DungeonCoolDownType.LeaveMap)  | 
|             {  | 
|                 return;  | 
|             }  | 
|   | 
|             excutedAutoExit = false;  | 
|             existSurplusTime = (float)(model.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap) - TimeUtility.ServerNow).TotalSeconds;  | 
|         }  | 
|   | 
|         private void ExitDungeon()  | 
|         {  | 
|             if (AdventureStage.Instance.IsInAdventureStage)  | 
|             {  | 
|                 ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HazyExitAdventureConfirm"), (bool isOk) =>  | 
|                 {  | 
|                     if (isOk)  | 
|                     {  | 
|                         AdventureStage.Instance.Exit();  | 
|                     }  | 
|                 });  | 
|                 return;  | 
|             }  | 
|   | 
|             var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);  | 
|             var config = DungeonOpenTimeConfig.Get(dataMapId);  | 
|             string language = string.Empty;  | 
|             if (dataMapId == BossHomeModel.BOSSHOME_MAPID)  | 
|             {  | 
|                 var vipLevel = PlayerDatas.Instance.baseData.VIPLv;  | 
|                 var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1);  | 
|                 var dungeonId = model.GetDungeonId(dataMapId, PlayerDatas.Instance.baseData.dungeonLineId);  | 
|                 var dungeonConfig = DungeonConfig.Get(dungeonId);  | 
|   | 
|                 if (vipLevel < vipNeed)  | 
|                 {  | 
|                     var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1);  | 
|                     language = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed);  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     //language = Language.Get(config.ExitDescription);  | 
|                 }  | 
|             }  | 
|             else  | 
|             {  | 
|                 language = Language.Get(config.ExitDescription);  | 
|             }  | 
|   | 
|             if (language == string.Empty)  | 
|             {  | 
|                 ExitDungeon_OK(dataMapId);  | 
|             }  | 
|             else  | 
|             {  | 
|                 ConfirmCancel.ShowPopConfirm(  | 
|                     Language.Get("Mail101"),  | 
|                     language,  | 
|                     (bool _ok) =>  | 
|                     {  | 
|                         if (_ok)  | 
|                         {  | 
|                             ExitDungeon_OK(dataMapId);  | 
|                         }  | 
|                     }  | 
|                     );  | 
|             }  | 
|         }  | 
|   | 
|         private void ExitDungeon_OK(int dataMapId)  | 
|         {  | 
|             switch (dataMapId)  | 
|             {  | 
|                 case HazyGrassModel.FAIRY_DATAMAP:  | 
|                 case HazyGrassModel.REIKI_DATAMAP:  | 
|                 case HazyDemonKingModel.CROSSSERVERDATAMAP:  | 
|                 case CrossServerBossModel.DATA_MAPID:  | 
|                     crossServerBossModel.RequestExit();  | 
|                     break;  | 
|                 case TreasureModel.CLIENTDATAMAP:  | 
|                 case HazyRegionModel.PRECIOUS_CLIENTDATAMAP:  | 
|                 case PersonalBossModel.PERSONALBOSS_MAPID:  | 
|                 case ClientGuardDungeon.DATAMAPID:  | 
|                 case HazyGrassModel.REIKI_CLIENTDATAMAP:  | 
|                 case HazyGrassModel.FAIRY_CLIENTDATAMAP:  | 
|                 case HazyDemonKingModel.CLIENTDATAMAP:  | 
|                 case CommonDungeonSelectModel.CommonDungenMapID1:  | 
|                 case CommonDungeonSelectModel.CommonDungenMapID2:  | 
|                 case CommonDungeonSelectModel.CommonDungenMapID3:  | 
|                 case CommonDungeonSelectModel.CommonDungenMapID4:  | 
|                 case CommonDungeonSelectModel.CommonDungenMapID5:  | 
|                     ClientDungeonStageUtility.ExitNormalClientDungeon();  | 
|                     break;  | 
|                 case DemonJarModel.DATA_MAPID:  | 
|                     if (StageLoad.Instance.currentStage is JiaDemonJarDungeonStage)  | 
|                     {  | 
|                         ClientDungeonStageUtility.ExitNormalClientDungeon();  | 
|                     }  | 
|                     else  | 
|                     {  | 
|                         model.ExitCurrentDungeon();  | 
|                     }  | 
|                     break;  | 
|                 default:  | 
|                     if (!CrossServerUtility.IsCrossServer())  | 
|                     {  | 
|                         model.ExitCurrentDungeon();  | 
|                     }  | 
|                     else  | 
|                     {  | 
|                         crossServerBossModel.RequestExit();  | 
|                     }  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private void ShowItemCollect()  | 
|         {  | 
|             var isShowCollect = PlayerDatas.Instance.baseData.MapID == 31190  | 
|                 && model.currentDungeon.lineId >= 0 && model.currentDungeon.lineId < GeneralDefine.kylinHomeCollectItems.Length;  | 
|   | 
|             if (isShowCollect)  | 
|             {  | 
|                 m_ItemCollect.SetActive(true);  | 
|                 collectItem = GeneralDefine.kylinHomeCollectItems[model.currentDungeon.lineId];  | 
|                 m_ItemCollect.Init(collectItem);  | 
|             }  | 
|             else  | 
|             {  | 
|                 collectItem = 0;  | 
|                 m_ItemCollect.SetActive(false);  | 
|             }  | 
|         }  | 
|   | 
|         private void ShowResPoint()  | 
|         {  | 
|             m_ContainerResPoint.SetActive(PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);  | 
|             m_CrossContainerResPoint.SetActive(model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID) == GeneralDefine.CrossBattleFieldMapID);  | 
|         }  | 
|   | 
|         private void OnPickItem(int _pickInstanceId)  | 
|         {  | 
|             var itemId = 0;  | 
|             DropItemManager.TryGetItemIdFromInstanceId(_pickInstanceId, out itemId);  | 
|             if (collectItem == itemId)  | 
|             {  | 
|                 var flyObject = DungeonItemCollectFlyObjectPool.Require();  | 
|                 flyObject.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);  | 
|                 Vector3 position;  | 
|                 if (DropItemManager.TryGetDropPositionFromInstanceId(_pickInstanceId, out position))  | 
|                 {  | 
|                     var uiPosition = CameraUtility.ConvertToUIPosition(CameraManager.sceneCamera, position);  | 
|                     flyObject.Begin(uiPosition, DungeonItemCollect.Instance.transform.position, ItemCollectFlyEnd);  | 
|                 }  | 
|   | 
|                 model.specialItemCollectRecord = new Item(collectItem, model.specialItemCollectRecord.count + 1);  | 
|             }  | 
|         }  | 
|   | 
|         private void ItemCollectFlyEnd()  | 
|         {  | 
|             m_ItemCollect.OnCollect();  | 
|         }  | 
|   | 
|         private void OnChangeFuncBtnPosEvent(bool immedidately)  | 
|         {  | 
|             if (immedidately)  | 
|             {  | 
|                 m_ContainerFuncBtn.localPosition = MainPositionTween.isDefaultState ? m_ContainerFuncBottom.localPosition : m_ContainerFuncUp.localPosition;  | 
|             }  | 
|             else  | 
|             {  | 
|                 if (MainPositionTween.isDefaultState)  | 
|                 {  | 
|                     m_Tweener = m_ContainerFuncBtn.DOLocalMoveY(m_ContainerFuncBottom.localPosition.y, 1);  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     m_Tweener = m_ContainerFuncBtn.DOLocalMoveY(m_ContainerFuncUp.localPosition.y, 1);  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|         private void ProcessDungeonEndCoolDown()  | 
|         {  | 
|             if (ClientDungeonStageUtility.isClientDungeon)  | 
|             {  | 
|                 switch (ClientDungeonStageUtility.clientMapId)  | 
|                 {  | 
|                     case TreasureModel.CLIENTDATAMAP:  | 
|                     case HazyGrassModel.FAIRY_CLIENTDATAMAP:  | 
|                     case HazyGrassModel.REIKI_CLIENTDATAMAP:  | 
|                     case PersonalBossModel.PERSONALBOSS_MAPID:  | 
|                     case HazyDemonKingModel.CLIENTDATAMAP:  | 
|                     case DemonJarModel.SINGLEMAPID:  | 
|                     case ClientGuardDungeon.DATAMAPID:  | 
|                     case CommonDungeonSelectModel.CommonDungenMapID1:  | 
|                     case CommonDungeonSelectModel.CommonDungenMapID2:  | 
|                     case CommonDungeonSelectModel.CommonDungenMapID3:  | 
|                     case CommonDungeonSelectModel.CommonDungenMapID4:  | 
|                     case CommonDungeonSelectModel.CommonDungenMapID5:  | 
|                         ClientDungeonStageUtility.ExitNormalClientDungeon();  | 
|                         break;  | 
|                 }  | 
|                 return;  | 
|             }  | 
|   | 
|             var dataMapId = MapUtility.GetDataMapId(PlayerDatas.Instance.baseData.MapID);  | 
|             switch (dataMapId)  | 
|             {  | 
|                 case RuneTowerModel.RUNETOWER_MAPID:  | 
|                     ProcessRuneTowerExitCoolDownEnd();  | 
|                     break;  | 
|                 case 41110:  | 
|                     TreasureDungeon treasureDungeon;  | 
|                     if (treasureModel.TryGetTreasureDungeon(41110, model.dungeonResult.lineID, out treasureDungeon)  | 
|                         && model.dungeonResult.isPass == 1)  | 
|                     {  | 
|                         var dungeonInfo = treasureDungeon.Get(model.dungeonResult.wheel + 1);  | 
|                         if (!dungeonInfo.Equals(default(TreasureDungeonInfo)))  | 
|                         {  | 
|                             if (PlayerDatas.Instance.baseData.FightPoint >= (ulong)dungeonInfo.fightPower  | 
|                                 || (int)UIHelper.GetPropertyValue(PropertyType.DEF) >= dungeonInfo.defense)  | 
|                             {  | 
|                                 treasureModel.DemonDungeonChallengeNext(model.dungeonResult.lineID);  | 
|                             }  | 
|                             else  | 
|                             {  | 
|                                 model.ExitCurrentDungeon();  | 
|                             }  | 
|                         }  | 
|                         else  | 
|                         {  | 
|                             model.ExitCurrentDungeon();  | 
|                         }  | 
|                     }  | 
|                     else  | 
|                     {  | 
|                         model.ExitCurrentDungeon();  | 
|                     }  | 
|                     break;  | 
|                 case RealmModel.REALM_DUNGEON_ID:  | 
|                     if (model.dungeonResult.isPass != 1)  | 
|                     {  | 
|                         model.ExitCurrentDungeon();  | 
|                     }  | 
|                     break;  | 
|                 case SkyTowerModel.DATA_MAPID:  | 
|                     ProcessSkyTowerExitCoolDownEnd();  | 
|                     break;  | 
|                 case RealmModel.Tower_MapId:  | 
|                     ProcessRealmTowerExitCoolDownEnd();  | 
|                     break;  | 
|                 case HazyDemonKingModel.CROSSSERVERDATAMAP:  | 
|                 case HazyGrassModel.REIKI_DATAMAP:  | 
|                 case HazyGrassModel.FAIRY_DATAMAP:  | 
|                     crossServerBossModel.RequestExit();  | 
|                     break;  | 
|                 default:  | 
|                     model.ExitCurrentDungeon();  | 
|                     if (!CrossServerUtility.IsCrossServer())  | 
|                     {  | 
|                         model.ExitCurrentDungeon();  | 
|                     }  | 
|                     else  | 
|                     {  | 
|                         crossServerBossModel.RequestExit();  | 
|                     }  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private void OnAncientBtn()  | 
|         {  | 
|             if (WindowCenter.Instance.IsOpen<DungeonAncientAchieveWin>())  | 
|             {  | 
|                 WindowCenter.Instance.Close<DungeonAncientAchieveWin>();  | 
|             }  | 
|             else  | 
|             {  | 
|                 WindowCenter.Instance.Open<DungeonAncientAchieveWin>();  | 
|             }  | 
|         }  | 
|   | 
|         private void UpdateDungeonExitTime()  | 
|         {  | 
|             if (existSurplusTime > 0f)  | 
|             {  | 
|                 timer += Time.deltaTime;  | 
|                 existSurplusTime -= Time.deltaTime;  | 
|                 var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);  | 
|   | 
|                 if (timer > 1f)  | 
|                 {  | 
|                     timer = 0f;  | 
|                     switch (dataMapId)  | 
|                     {  | 
|                         case PersonalBossModel.PERSONALBOSS_MAPID:  | 
|                             m_ExitCoolDown.text = Language.Get("QuitCountDownPersonalBoss", (int)existSurplusTime);  | 
|                             break;  | 
|                         case 31210:  | 
|                             m_ExitCoolDown.text = Language.Get("QuitCountDownUnionBoss", (int)existSurplusTime);  | 
|                             break;  | 
|                         default:  | 
|                             break;  | 
|                     }  | 
|                 }  | 
|   | 
|                 if (dataMapId == PersonalBossModel.PERSONALBOSS_MAPID || dataMapId == 31210)  | 
|                 {  | 
|                     if (!m_ExitContainer.gameObject.activeInHierarchy)  | 
|                     {  | 
|                         m_ExitContainer.SetActive(true);  | 
|                     }  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     if (m_ExitContainer.gameObject.activeInHierarchy)  | 
|                     {  | 
|                         m_ExitContainer.SetActive(false);  | 
|                     }  | 
|                 }  | 
|   | 
|                 if (existSurplusTime < 1f && !excutedAutoExit)  | 
|                 {  | 
|                     excutedAutoExit = true;  | 
|                     ProcessDungeonEndCoolDown();  | 
|                 }  | 
|             }  | 
|             else  | 
|             {  | 
|                 if (m_ExitContainer.gameObject.activeInHierarchy)  | 
|                 {  | 
|                     m_ExitContainer.SetActive(false);  | 
|                 }  | 
|             }  | 
|   | 
|         }  | 
|   | 
|         private bool WHYJBool()//判断是否在娲皇遗迹副本  | 
|         {  | 
|             var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);  | 
|             if (dataMapId == GeneralDefine.ruinsTranscriptMapId)  | 
|             {  | 
|                 return true;  | 
|             }  | 
|             else  | 
|             {  | 
|                 return false;  | 
|             }  | 
|         }  | 
|   | 
|         private void OnRidingPetBossReward()  | 
|         {  | 
|             WindowCenter.Instance.Open<RidingPetBossRewardWin>();  | 
|         }  | 
|   | 
|         private void ProcessRuneTowerExitCoolDownEnd()  | 
|         {  | 
|             if (runeTowerModel.waitNextConfirm)  | 
|             {  | 
|                 return;  | 
|             }  | 
|   | 
|             if (runeTowerModel.allTowerCompleted)  | 
|             {  | 
|                 model.ExitCurrentDungeon();  | 
|                 return;  | 
|             }  | 
|   | 
|             var config = RuneTowerFloorConfig.Get(runeTowerModel.currentFloor);  | 
|             var lastFloor = (int)ModelCenter.Instance.GetModel<RuneModel>().passRuneTowerFloor;  | 
|             var lastFloorConfig = RuneTowerFloorConfig.Get(lastFloor);  | 
|             var nextLevelable = model.dungeonResult.isPass == 1 && config.TowerId == lastFloorConfig.TowerId && lastFloorConfig.AutoExit == 0;  | 
|             if (!nextLevelable)  | 
|             {  | 
|                 model.ExitCurrentDungeon();  | 
|                 return;  | 
|             }  | 
|   | 
|             if (PlayerDatas.Instance.baseData.FightPoint >= (ulong)NPCExConfig.Get(config.BossId).SuppressFightPower)  | 
|             {  | 
|                 var runeTowerStage = StageLoad.Instance.currentStage as RuneTowerDungeonStage;  | 
|                 runeTowerStage.PerformChallengeNextLevel();  | 
|                 model.UpdateCoolDown(DungeonCoolDownType.LeaveMap, 0);  | 
|                 model.UpdateCoolDown(DungeonCoolDownType.FightStart, 0);  | 
|                 WindowCenter.Instance.Close<DungeonRuneTowerVictoryWin>();  | 
|   | 
|                 return;  | 
|             }  | 
|   | 
|             ConfirmCancel.ShowRuneTowerPopConfirm(  | 
|                 Language.Get("Mail101"),  | 
|                 Language.Get("RuneTower25", NPCExConfig.Get(config.BossId).SuppressFightPower),  | 
|                 (Action<bool>)((bool ok) =>  | 
|                 {  | 
|                     if (ok)  | 
|                     {  | 
|                         var runeTowerStage = StageLoad.Instance.currentStage as RuneTowerDungeonStage;  | 
|                         runeTowerStage.PerformChallengeNextLevel();  | 
|                         model.UpdateCoolDown(DungeonCoolDownType.LeaveMap, 0);  | 
|                         model.UpdateCoolDown(DungeonCoolDownType.FightStart, 0);  | 
|                         WindowCenter.Instance.Close<DungeonRuneTowerVictoryWin>();  | 
|                     }  | 
|                     else  | 
|                     {  | 
|                         model.ExitCurrentDungeon();  | 
|                     }  | 
|                 })  | 
|                 );  | 
|         }  | 
|   | 
|         private void ProcessSkyTowerExitCoolDownEnd()  | 
|         {  | 
|             if (model.dungeonResult.isPass == 0)  | 
|             {  | 
|                 model.ExitCurrentDungeon();  | 
|                 return;  | 
|             }  | 
|   | 
|             var config = SkyTowerConfig.Get(skyTowerModel.currentFloor);  | 
|             if (!skyTowerModel.IsChallengable() || PlayerDatas.Instance.baseData.FightPoint < (ulong)NPCExConfig.Get(config.bossId).SuppressFightPower)  | 
|             {  | 
|                 model.ExitCurrentDungeon();  | 
|                 return;  | 
|             }  | 
|   | 
|             var skyTowerStage = StageLoad.Instance.currentStage as SkyTowerDungeonStage;  | 
|             if (skyTowerStage != null)  | 
|             {  | 
|                 model.UpdateCoolDown(DungeonCoolDownType.LeaveMap, 0);  | 
|                 model.UpdateCoolDown(DungeonCoolDownType.FightStart, 0);  | 
|                 skyTowerStage.PerformChallengeNextLevel();  | 
|             }  | 
|         }  | 
|   | 
|         private void ProcessRealmTowerExitCoolDownEnd()  | 
|         {  | 
|               | 
|             if (model.dungeonResult.isPass == 0)  | 
|             {  | 
|                 model.ExitCurrentDungeon();  | 
|                 return;  | 
|             }  | 
|   | 
|             if (realmModel.currentFloor != realmModel.selectFloorID || RealmTowerConfig.Get(realmModel.currentFloor).NeedRealmLV > PlayerDatas.Instance.baseData.realmLevel)  | 
|             {  | 
|                 model.ExitCurrentDungeon();  | 
|                 return;  | 
|             }  | 
|   | 
|             //realmModel.RequestRefreshMonster();  | 
|             WindowCenter.Instance.Open<RealmTowerHintWin>();  | 
|             Clock.AlarmAfter(2f, () =>  | 
|             {  | 
|                 WindowCenter.Instance.Open<DungeonEndCoolDownWin>();  | 
|             });  | 
|         }  | 
|     }  | 
|   | 
| }  | 
|   | 
|   | 
|   | 
|   |