//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 08, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class AllianceBossVictoryWin : 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_AllianceRank; [SerializeField] Text m_AllianceParticipate; [SerializeField] Transform m_ContainerAuctionReward; [SerializeField] Transform m_ContainerNoneReward; [SerializeField] Text m_NoneRewardRemind; [SerializeField] HorizontalLayoutGroup m_AuctionItemRoot; [SerializeField] ScrollRect m_AcctionItemScroll; [SerializeField] List m_AuctionItems; [SerializeField] HorizontalLayoutGroup m_MyItemRoot; [SerializeField] ScrollRect m_MyItemScroll; [SerializeField] List m_MyItems; [SerializeField] Button m_GotoAuction; float timer = 0f; AllianceBossModel model { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } protected override void BindController() { } protected override void AddListeners() { m_GotoAuction.AddListener(GotoAuction); m_Exit.AddListener(ExitDungeon); } 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 { Display(); } } protected override void OnPreOpen() { m_ContainerPoivt.SetActive(false); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } 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); Display(); } void Display() { m_ContainerPoivt.SetActive(true); DisplayDungeonExit(); DisplayAlliance(); DisplayAutionItems(); DisplayMyItems(); } 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)); } void DisplayAlliance() { 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_AllianceRank.text = Language.Get("AllianceBossRank", result.rank); m_AllianceParticipate.text = Language.Get("AllianceParticipate", result.memberCnt); m_NoneRewardRemind.text = Language.Get("AllianceParticipateLimitMin", model.participateLimit); } void DisplayAutionItems() { var result = dungeonModel.dungeonResult; if (result.AuctionItem != null) { GenerateRewardBehaviour(m_AuctionItems, m_AuctionItemRoot.transform, result.AuctionItem.Length); m_AcctionItemScroll.horizontal = result.AuctionItem.Length > 4; m_AuctionItemRoot.childAlignment = result.AuctionItem.Length > 4 ? TextAnchor.MiddleLeft : TextAnchor.MiddleCenter; if (result.AuctionItem.Length > 4) { m_AcctionItemScroll.horizontalNormalizedPosition = 0; } else { m_AuctionItemRoot.transform.localPosition = m_AuctionItemRoot.transform.localPosition.SetX(0); } } m_AcctionItemScroll.horizontalNormalizedPosition = 0; var existAuctionItem = result.AuctionItem != null && result.AuctionItem.Length > 0; m_ContainerAuctionReward.SetActive(existAuctionItem); m_ContainerNoneReward.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); } } } } void DisplayMyItems() { var result = dungeonModel.dungeonResult; if (result.itemInfo != null) { GenerateRewardBehaviour(m_MyItems, m_MyItemRoot.transform, result.itemInfo.Length); m_MyItemScroll.horizontal = result.itemInfo.Length > 4; m_MyItemRoot.childAlignment = result.itemInfo.Length > 4 ? TextAnchor.MiddleLeft : TextAnchor.MiddleCenter; if (result.itemInfo.Length > 4) { 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 GotoAuction() { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FairyAuction); } void ExitDungeon() { dungeonModel.ExitCurrentDungeon(); } 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); } } } } }