using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using TableConfig; using UnityEngine.UI; namespace Snxxz.UI { public class DungeonNuwaVictoryWin : DungeonVictoryWin { [SerializeField] ButtonEx m_GoToTheNextLevel; [SerializeField] Text m_BtnNextText; [SerializeField] Text m_NumberOfPliesText; float timerNext = 0f; private bool goNextFloorBool = false; private float LatencyTime = 0;//等待时间 PlayerMainDate main { get { return ModelCenter.Instance.GetModel(); } } protected override void AddListeners() { m_GoToTheNextLevel.AddListener(GoToTheNextLevelButton); } protected override void OnPreOpen() { base.OnPreOpen(); LatencyTime = 0; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418) } protected override void OnPreClose() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418) } private void Updatefighting(PlayerDataRefresh obj) { if (obj == PlayerDataRefresh.ExAttr3) { Close(); } } protected override void LateUpdate() { DateTime endNextTime; if (dungeonModel.dungeonResult.grade >= 5 && dungeonModel.dungeonResult.lineID < 7) { endNextTime = dungeonModel.GetDungeonCoolDownEndTime(DungeonCoolDownType.FBAddTime); } else { endNextTime = dungeonModel.GetDungeonCoolDownEndTime(DungeonCoolDownType.LeaveMap); } if (endNextTime > DateTime.Now) { timerNext -= Time.deltaTime; if (timerNext < 0f) { timerNext += 0.5f; var seconds = (endNextTime - DateTime.Now).TotalSeconds; if (dungeonModel.dungeonResult.grade >= 5 && dungeonModel.dungeonResult.lineID < 7) { m_BtnNextText.text = Language.Get("DungeonVictoryWin_Btn_Next_1", Mathf.Clamp((int)seconds, 0, int.MaxValue)); } else { m_BtnNextText.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp((int)seconds, 0, int.MaxValue)); } } if (!m_BtnNextText.gameObject.activeInHierarchy) { m_BtnNextText.gameObject.SetActive(true); } } else { LatencyTime += Time.deltaTime; if (m_BtnNextText.gameObject.activeInHierarchy) { if (dungeonModel.dungeonResult.grade >= 5 && dungeonModel.dungeonResult.lineID < 7) { if (LatencyTime >= 0.5) { dungeonModel.ChallengeNextDungeonLevel(); LatencyTime = 0; } } else { dungeonModel.ExitCurrentDungeon(); } } } } private void GoToTheNextLevelButton() { if (dungeonModel.dungeonResult.grade >= 5 && dungeonModel.dungeonResult.lineID < 7) { dungeonModel.ChallengeNextDungeonLevel(); } else { dungeonModel.ExitCurrentDungeon(); } } protected override void Display() { m_ContainerPoivt.gameObject.SetActive(true); base.DrawSP(); base.DrawPassTime(); base.DrawPassGrade(); DrawItemRewards(); var hasAssistPoint = false; if (dungeonModel.dungeonResult.money != null && dungeonModel.dungeonResult.money.Length > 0) { for (int i = 0; i < dungeonModel.dungeonResult.money.Length; i++) { if (dungeonModel.dungeonResult.money[i].moneyType == 16) { hasAssistPoint = true; break; } } } if (hasAssistPoint) { m_NumberOfPliesText.text = string.Empty; } else if (dungeonModel.dungeonResult.startRewardLineID == dungeonModel.dungeonResult.lineID) { m_NumberOfPliesText.text = Language.Get("DungeonVictoryWin_NumberOfPliesText", dungeonModel.dungeonResult.lineID + 1); } else { var starLayer = dungeonModel.dungeonResult.startRewardLineID + 1; var endLayer = dungeonModel.dungeonResult.lineID + 1; var str = StringUtility.Contact(starLayer, "-", endLayer); m_NumberOfPliesText.text = Language.Get("DungeonVictoryWin_NumberOfPliesText", str); } } protected override void DrawItemRewards() { var merged = false; var serveritems = dungeonModel.dungeonResult.itemInfo; var hasReward = (serveritems != null && serveritems.Length > 0) || dungeonModel.specialItemCollectRecord.count > 0; m_RewardIndexs.Clear(); if (m_RewardTweens != null && m_RewardTweens.Length > 0) { for (int i = 0; i < m_RewardTweens.Length; i++) { m_RewardTweens[i].SetEndState(); } } m_ContainerReward.gameObject.SetActive(hasReward); if (serveritems != null) { var items = new List(); for (int i = 0; i < serveritems.Length; i++) { var serverItem = serveritems[i]; var itemModel = new ItemModel(PackType.rptItem); var itemInfo = new ItemInfo(); itemInfo.ItemID = serverItem.ItemID; if (!merged && itemInfo.ItemID == dungeonModel.specialItemCollectRecord.id) { itemInfo.ItemCount = serverItem.Count + dungeonModel.specialItemCollectRecord.count; merged = true; } else { itemInfo.ItemCount = serverItem.Count; } itemInfo.IsBind = serverItem.IsBind; itemInfo.IsSuite = serverItem.IsSuite; itemInfo.UserData = serverItem.UserData; itemModel.SetItemModel(itemInfo); items.Add(itemModel); } items.Sort(Compare); for (int i = 0; i < passRewardBehaviours.Length; i++) { var behaviour = passRewardBehaviours[i]; if (i < items.Count) { behaviour.transform.parent.gameObject.SetActive(true); behaviour.gameObject.SetActive(false); behaviour.serverItem = serveritems[i]; behaviour.Init(items[i]); m_RewardIndexs.Add(m_SpecialItemCollect == null ? i : i + 1); } else { behaviour.transform.parent.gameObject.SetActive(false); behaviour.gameObject.SetActive(false); } } if (m_SpecialItemCollect != null) { if (!merged && dungeonModel.specialItemCollectRecord.count > 0) { m_SpecialItemCollect.transform.parent.gameObject.SetActive(true); m_SpecialItemCollect.gameObject.SetActive(false); m_SpecialItemCollect.SetItem(dungeonModel.specialItemCollectRecord); } else { m_SpecialItemCollect.transform.parent.gameObject.SetActive(false); m_SpecialItemCollect.gameObject.SetActive(false); } } } if (m_RewardIndexs.Count > 0 && m_RewardTweens != null && m_RewardTweens.Length > 0) { PlayRewardTween(0); } } int Compare(ItemModel x, ItemModel y)//数组排列 { ItemConfig itemConfigx = Config.Instance.Get(x.itemId); ItemConfig itemConfigy = Config.Instance.Get(y.itemId); if (itemConfigx.ItemColor.CompareTo(itemConfigy.ItemColor) != 0) return -itemConfigx.ItemColor.CompareTo(itemConfigy.ItemColor); return 1; } } }