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<PlayerMainDate>(); } }
|
|
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.GetCoolDownEndTime(DungeonCoolDownType.FBAddTime);
|
}
|
else
|
{
|
endNextTime = dungeonModel.GetCoolDownEndTime(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);
|
}
|
}
|
List<ServerItem> Serveritem = new List<ServerItem>();
|
protected override void DrawItemRewards()
|
{
|
Serveritem.Clear();
|
var merged = false;
|
var serveritems = dungeonModel.dungeonResult.itemInfo;
|
|
for (int i = 0; i < serveritems.Length; i++)
|
{
|
Serveritem.Add(serveritems[i]);
|
}
|
Serveritem.Sort(Compare);
|
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 (Serveritem != null)
|
{
|
var items = new List<ItemModel>();
|
for (int i = 0; i < Serveritem.Count; i++)
|
{
|
var serverItem = Serveritem[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 = Serveritem[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(ServerItem x, ServerItem y)//数组排列
|
{
|
ItemConfig itemConfigx = Config.Instance.Get<ItemConfig>(x.ItemID);
|
ItemConfig itemConfigy = Config.Instance.Get<ItemConfig>(y.ItemID);
|
if (itemConfigx.ItemColor.CompareTo(itemConfigy.ItemColor) != 0)
|
return -itemConfigx.ItemColor.CompareTo(itemConfigy.ItemColor);
|
return 1;
|
}
|
}
|
}
|
|