using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class DungeonNuwaVictoryWin : DungeonVictoryWin
|
{
|
[SerializeField] ButtonEx m_GoToTheNextLevel;
|
[SerializeField] Text m_BtnNextText;
|
[SerializeField] Text m_NumberOfPliesText;
|
[SerializeField] Text m_ChallengeRemind;
|
float timerNext = 0f;
|
private bool goNextFloorBool = false;
|
private float LatencyTime = 0;//等待时间
|
DungeonNuwaModel dungeonNuwaModel { get { return ModelCenter.Instance.GetModel<DungeonNuwaModel>(); } }
|
|
protected override void AddListeners()
|
{
|
m_GoToTheNextLevel.AddListener(GoToTheNextLevelButton);
|
}
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
LatencyTime = 0;
|
PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418)
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418)
|
}
|
|
private void Updatefighting(PlayerDataType obj)
|
{
|
if (obj == PlayerDataType.ExAttr3)
|
{
|
Close();
|
}
|
}
|
|
protected override void LateUpdate()
|
{
|
DateTime endNextTime;
|
if (dungeonNuwaModel.SatisfyChallengeFloor(dungeonModel.dungeonResult.lineID + 2))
|
{
|
endNextTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FBAddTime);
|
}
|
else
|
{
|
endNextTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap);
|
}
|
|
if (endNextTime > TimeUtility.ServerNow)
|
{
|
timerNext -= Time.deltaTime;
|
if (timerNext < 0f)
|
{
|
timerNext += 0.5f;
|
var seconds = (endNextTime - TimeUtility.ServerNow).TotalSeconds;
|
if (dungeonNuwaModel.SatisfyChallengeFloor(dungeonModel.dungeonResult.lineID + 2))
|
{
|
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.SetActive(true);
|
}
|
}
|
else
|
{
|
LatencyTime += Time.deltaTime;
|
if (m_BtnNextText.gameObject.activeInHierarchy)
|
{
|
if (dungeonNuwaModel.SatisfyChallengeFloor(dungeonModel.dungeonResult.lineID + 2))
|
{
|
if (LatencyTime >= 0.5)
|
{
|
dungeonModel.ChallengeNextDungeonLevel();
|
LatencyTime = 0;
|
}
|
}
|
}
|
}
|
}
|
|
private void GoToTheNextLevelButton()
|
{
|
if (dungeonNuwaModel.SatisfyChallengeFloor(dungeonModel.dungeonResult.lineID + 2))
|
{
|
dungeonModel.ChallengeNextDungeonLevel();
|
}
|
else
|
{
|
dungeonModel.ExitCurrentDungeon();
|
}
|
|
}
|
|
protected override void Display()
|
{
|
m_ContainerPoivt.SetActive(true);
|
base.DrawPassTime();
|
base.DrawPassGrade();
|
base.DrawGetXianYuanCoins();
|
|
var result = dungeonModel.dungeonResult;
|
|
var hasAssistPoint = false;
|
if (result.money != null && result.money.Length > 0)
|
{
|
for (int i = 0; i < result.money.Length; i++)
|
{
|
if (result.money[i].moneyType == 16)
|
{
|
hasAssistPoint = true;
|
break;
|
}
|
}
|
}
|
|
var satisfyChallengeNext = dungeonNuwaModel.SatisfyChallengeFloor(result.lineID + 2);
|
|
if (satisfyChallengeNext &&
|
(result.firstPassItem == null || result.firstPassItem.Length == 0))
|
{
|
m_ContainerReward.SetActive(false);
|
}
|
else
|
{
|
m_ChallengeRemind.SetActive(false);
|
if (result.grade >= 5)
|
{
|
if (satisfyChallengeNext || result.lineID + 1 >= dungeonNuwaModel.floorCount)
|
{
|
if (result.firstPassItem != null && result.firstPassItem.Length > 0)
|
{
|
m_ChallengeRemind.SetActive(true);
|
m_ChallengeRemind.text = Language.Get("DungeonNuwaRemind2");
|
m_ChallengeRemind.color = UIHelper.GetUIColor(TextColType.Green);
|
}
|
}
|
else
|
{
|
m_ChallengeRemind.SetActive(true);
|
m_ChallengeRemind.text = Language.Get("DungeonNuwaRemind1");
|
m_ChallengeRemind.color = UIHelper.GetUIColor(TextColType.Red);
|
}
|
}
|
|
DrawItemRewards();
|
|
if (hasAssistPoint)
|
{
|
m_NumberOfPliesText.text = string.Empty;
|
}
|
else
|
{
|
m_NumberOfPliesText.text = Language.Get("DungeonVictoryWin_NumberOfPliesText", result.lineID + 1);
|
}
|
}
|
}
|
|
List<ServerItem> displayItems = new List<ServerItem>();
|
protected override void DrawItemRewards()
|
{
|
displayItems.Clear();
|
|
var serveritems = dungeonModel.dungeonResult.itemInfo;
|
if (serveritems != null && serveritems.Length > 0)
|
{
|
List<ServerItem> items = new List<ServerItem>(serveritems);
|
items.Sort(Compare);
|
displayItems.AddRange(items);
|
}
|
|
var firstPassItems = dungeonModel.dungeonResult.firstPassItem;
|
if (firstPassItems != null && firstPassItems.Length > 0)
|
{
|
List<ServerItem> items = new List<ServerItem>(firstPassItems);
|
items.Sort(Compare);
|
displayItems.AddRange(items);
|
}
|
|
var hasReward = displayItems.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.SetActive(hasReward);
|
|
if (displayItems != null)
|
{
|
var items = new List<ItemModel>();
|
for (int i = 0; i < displayItems.Count; i++)
|
{
|
var serverItem = displayItems[i];
|
|
var itemInfo = new ItemInfo();
|
itemInfo.itemId = serverItem.ItemID;
|
itemInfo.userData = serverItem.UserData;
|
itemInfo.count = serverItem.Count;
|
|
items.Add(new ItemModel(PackType.Item, itemInfo));
|
}
|
|
for (int i = 0; i < passRewardBehaviours.Length; i++)
|
{
|
var behaviour = passRewardBehaviours[i];
|
if (i < items.Count)
|
{
|
behaviour.transform.parent.SetActive(true);
|
behaviour.SetActive(false);
|
behaviour.firstPassItem = serveritems == null || i >= serveritems.Length;
|
behaviour.serverItem = displayItems[i];
|
behaviour.Init(items[i]);
|
m_RewardIndexs.Add(i);
|
}
|
else
|
{
|
behaviour.transform.parent.SetActive(false);
|
behaviour.SetActive(false);
|
}
|
}
|
}
|
if (m_RewardIndexs.Count > 0 && m_RewardTweens != null && m_RewardTweens.Length > 0)
|
{
|
PlayRewardTween(0);
|
}
|
}
|
|
int Compare(ServerItem x, ServerItem y)//数组排列
|
{
|
ItemConfig itemConfigx = ItemConfig.Get(x.ItemID);
|
ItemConfig itemConfigy = ItemConfig.Get(y.ItemID);
|
if (itemConfigx.ItemColor.CompareTo(itemConfigy.ItemColor) != 0)
|
{
|
return -itemConfigx.ItemColor.CompareTo(itemConfigy.ItemColor);
|
}
|
return 1;
|
}
|
}
|
}
|
|