using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RidingPetBossVictoryWin : Window { [SerializeField] Transform m_ContainerPoivt; [SerializeField] ButtonEx m_Exit; [SerializeField] Text m_ExitTimer; [SerializeField] Transform m_ContainerTopThree; [SerializeField] Image m_Rank; [SerializeField] Transform m_ContainerOutThree; [SerializeField] Text m_RankText; [SerializeField] Transform m_ContainerAuctionReward; [SerializeField] HorizontalLayoutGroup m_AuctionItemRoot; [SerializeField] ScrollRect m_AuctionItemScroll; [SerializeField] List m_AuctionItems; [SerializeField] HorizontalLayoutGroup m_MyItemRoot; [SerializeField] ScrollRect m_MyItemScroll; [SerializeField] List m_MyItems; [SerializeField] Button m_GotoAucton; float timer = 0f; RidingPetBossModel ridingPetBossModel { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } protected override void AddListeners() { m_GotoAucton.AddListener(GotoAuction); m_Exit.AddListener(ExitDungeon); } protected override void BindController() { } protected override void OnAfterClose() { } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnPreOpen() { m_ContainerPoivt.SetActive(false); } protected override void OnActived() { base.OnActived(); if (!WindowJumpMgr.Instance.IsJumpState) { var config = DungeonOpenTimeConfig.Get(dungeonModel.dungeonResult.dataMapID); StartCoroutine(Co_DelayDisplay(config.DelayTime * 0.001f)); } else { DisplayAll(); } } protected override void LateUpdate() { base.LateUpdate(); timer -= Time.deltaTime; if (timer < 0f) { timer += 0.5f; var endTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap); var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds; DrawExitTimer((int)seconds); } } IEnumerator Co_DelayDisplay(float _delay) { yield return new WaitForSeconds(_delay); DisplayAll(); } private void DisplayAll() { m_ContainerPoivt.SetActive(true); DisplayDungeonExit(); DisplayWinOrRank(); DisplayAuctionItem(); DisplayMyItem(); } void DisplayDungeonExit() { var endTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap); var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds; timer = (float)seconds - (int)seconds; DrawExitTimer((int)seconds); } void DrawExitTimer(int seconds) { m_ExitTimer.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp(seconds, 0, int.MaxValue)); } private void DisplayWinOrRank() { var result = dungeonModel.dungeonResult; bool top3 = result.rank <= 3 && result.rank > 0; m_ContainerTopThree.SetActive(top3); m_ContainerOutThree.SetActive(!top3); if (top3) { m_Rank.SetSprite(StringUtility.Contact("AllianceBossRank_", result.rank)); } m_RankText.text = Language.Get("AllianceBossRank", result.rank); } private void GotoAuction() { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FairyAuction); } private void ExitDungeon() { dungeonModel.ExitCurrentDungeon(); } private void DisplayAuctionItem() { var result = dungeonModel.dungeonResult; if (result.AuctionItem != null) { GenerateRewardBehaviour(m_AuctionItems,m_AuctionItemRoot.transform,result.AuctionItem.Length); m_AuctionItemScroll.enabled = result.AuctionItem.Length > 3; m_AuctionItemRoot.childAlignment = result.AuctionItem.Length > 3 ? TextAnchor.MiddleLeft : TextAnchor.MiddleCenter; if (result.AuctionItem.Length > 3) { m_AuctionItemScroll.horizontalNormalizedPosition = 0; } else { m_AuctionItemRoot.transform.localPosition = m_AuctionItemRoot.transform.localPosition.SetX(0); } } var existAuctionItem = result.AuctionItem != null && result.AuctionItem.Length > 0; m_ContainerAuctionReward.SetActive(existAuctionItem); if (existAuctionItem) { for (int i = 0; i < m_AuctionItems.Count; i++) { if (i < result.AuctionItem.Length) { var serverItem = result.AuctionItem[i]; m_AuctionItems[i].SetActive(true); m_AuctionItems[i].Display(new Item(serverItem.ItemID, serverItem.Count)); } else { m_AuctionItems[i].SetActive(false); } } } } private void DisplayMyItem() { var result = dungeonModel.dungeonResult; if (result.itemInfo != null) { GenerateRewardBehaviour(m_MyItems, m_MyItemRoot.transform, result.itemInfo.Length); m_MyItemScroll.enabled = result.itemInfo.Length > 3; m_MyItemRoot.childAlignment = result.itemInfo.Length > 3 ? TextAnchor.MiddleLeft : TextAnchor.MiddleCenter; if (result.itemInfo.Length > 3) { m_MyItemScroll.horizontalNormalizedPosition = 0; } else { m_MyItemRoot.transform.localPosition = m_MyItemRoot.transform.localPosition.SetX(0); } } for (int i = 0; i < m_MyItems.Count; i++) { if (result.itemInfo != null && i < result.itemInfo.Length) { var serverItem = result.itemInfo[i]; m_MyItems[i].SetActive(true); m_MyItems[i].Display(new Item(serverItem.ItemID, serverItem.Count)); } else { m_MyItems[i].SetActive(false); } } } private void GenerateRewardBehaviour(List rewardBehaviours, Transform _parent, int _needCount) { var nowCount = rewardBehaviours.Count; var dif = _needCount - nowCount; if (dif > 0) { for (int i = 0; i < dif; i++) { var instance = UIUtility.CreateWidget("DungeonRewardBehavour", "DungeonRewardBehavour"); var behaviour = instance.GetComponent(); rewardBehaviours.Add(behaviour); instance.transform.SetParentEx(_parent, Vector3.zero, Vector3.zero, Vector3.one); } } } } }