//--------------------------------------------------------
|
// [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<DungeonRewardBehavour> m_AuctionItems;
|
[SerializeField] HorizontalLayoutGroup m_MyItemRoot;
|
[SerializeField] ScrollRect m_MyItemScroll;
|
[SerializeField] List<DungeonRewardBehavour> m_MyItems;
|
[SerializeField] Button m_GotoAuction;
|
|
float timer = 0f;
|
|
AllianceBossModel model { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
|
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<DungeonRewardBehavour> 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<DungeonRewardBehavour>();
|
rewardBehaviours.Add(behaviour);
|
instance.transform.SetParentEx(_parent, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
}
|
}
|
}
|
|
}
|
|
|
|
|