//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, August 29, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class DungeonFairyFeastHintWin : Window
|
{
|
[SerializeField] Button m_FairyFeast;
|
[SerializeField] Text m_FairyFeastBtnTxt;
|
[SerializeField] Button m_QuestionRank;
|
[SerializeField] Text m_QuestionRankBtnTxt;
|
[SerializeField] DungeonTargetBehaviour m_TargetBehaviour;
|
[SerializeField] RectTransform m_ContainerRank;
|
[SerializeField] FairyFeastRankBehaviour[] m_RankBehaviours;
|
[SerializeField] FairyFeastRankBehaviour m_TopRank;
|
[SerializeField] DungeonMultipleTaskWin.SelectEffect m_SelectEffect;
|
[SerializeField] Button m_Transmit;
|
[SerializeField] SmoothSlider m_TransmitSlider;
|
[SerializeField] Text m_TransmitProgress;
|
|
DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel<FairyFeastModel>(); } }
|
|
int currentSelect = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_FairyFeast.onClick.AddListener(() =>
|
{
|
Select(0);
|
});
|
m_QuestionRank.onClick.AddListener(() =>
|
{
|
Select(1);
|
});
|
m_Transmit.onClick.AddListener(Transmit);
|
}
|
|
protected override void OnPreOpen()
|
{
|
Select(0);
|
m_TransmitSlider.ResetValue(0);
|
model.updateMissionEvent += UpdateMissionEvent;
|
fairyFeastModel.selectTransmit += SelectTransmit;
|
fairyFeastModel.transmitStateUpdate += TransmitStateUpdate;
|
SelectTransmit();
|
}
|
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.updateMissionEvent -= UpdateMissionEvent;
|
fairyFeastModel.selectTransmit -= SelectTransmit;
|
fairyFeastModel.transmitStateUpdate -= TransmitStateUpdate;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void LateUpdate()
|
{
|
if (fairyFeastModel.transmiting)
|
{
|
if (!m_TransmitSlider.gameObject.activeSelf)
|
{
|
m_TransmitSlider.gameObject.SetActive(true);
|
}
|
var surplusTime = (fairyFeastModel.transmitCompleteTime - DateTime.Now).TotalSeconds;
|
var progress = Mathf.Clamp01(1 - (float)surplusTime / fairyFeastModel.transmitCostSeconds);
|
m_TransmitSlider.value = progress;
|
m_TransmitProgress.text = StringUtility.Contact((int)(progress * 100), "%");
|
}
|
else
|
{
|
if (m_TransmitSlider.gameObject.activeSelf)
|
{
|
m_TransmitSlider.gameObject.SetActive(false);
|
}
|
}
|
}
|
#endregion
|
|
private void Select(int _index)
|
{
|
var _color = m_FairyFeast.targetGraphic.color;
|
_color.a = _index == 1 ? m_SelectEffect.unselectAlpha : m_SelectEffect.selectAlpha;
|
m_FairyFeast.targetGraphic.color = _color;
|
m_FairyFeastBtnTxt.color = _index == 1 ? m_SelectEffect.unSelectTextColor : m_SelectEffect.selectTextColor;
|
|
_color = m_QuestionRank.targetGraphic.color;
|
_color.a = _index == 0 ? m_SelectEffect.unselectAlpha : m_SelectEffect.selectAlpha;
|
m_QuestionRank.targetGraphic.color = _color;
|
m_QuestionRankBtnTxt.color = _index == 0 ? m_SelectEffect.unSelectTextColor : m_SelectEffect.selectTextColor;
|
|
m_TargetBehaviour.gameObject.SetActive(_index == 0);
|
m_ContainerRank.gameObject.SetActive(_index == 1);
|
currentSelect = _index;
|
if (_index == 0)
|
{
|
m_TargetBehaviour.Init(31230);
|
}
|
else
|
{
|
DisplayRank();
|
}
|
}
|
|
private void UpdateMissionEvent()
|
{
|
if (currentSelect == 1)
|
{
|
DisplayRank();
|
}
|
}
|
|
void DisplayRank()
|
{
|
var index = 0;
|
if (model.mission.familyPartyRank != null && model.mission.familyPartyRank.Length > 0)
|
{
|
List<FairyFeastRank> list = new List<FairyFeastRank>(model.mission.familyPartyRank);
|
list.Sort(Compare);
|
for (int i = 0; i < m_RankBehaviours.Length; i++)
|
{
|
if (i < list.Count)
|
{
|
var data = list[i];
|
m_RankBehaviours[i].Display(UIHelper.ServerStringTrim(data.name), data.cnt);
|
index++;
|
}
|
}
|
}
|
for (int i = index; i < m_RankBehaviours.Length; i++)
|
{
|
m_RankBehaviours[i].Display(Language.Get("CeremoneyOutOfPrint"), 0);
|
}
|
|
var topName = model.mission.familyPartyTop.name;
|
m_TopRank.Display(string.IsNullOrEmpty(topName) ?
|
Language.Get("CeremoneyOutOfPrint") : topName, string.IsNullOrEmpty(topName) ? 0 : model.mission.familyPartyTop.cnt);
|
}
|
|
int Compare(FairyFeastRank x, FairyFeastRank y)
|
{
|
return x.rank.CompareTo(y.rank);
|
}
|
|
private void SelectTransmit()
|
{
|
m_Transmit.gameObject.SetActive(fairyFeastModel.selectPlayer != 0 && fairyFeastModel.allowTransmit
|
&& !fairyFeastModel.transmiting);
|
}
|
|
private void Transmit()
|
{
|
fairyFeastModel.Transmit();
|
}
|
|
private void TransmitStateUpdate()
|
{
|
SelectTransmit();
|
}
|
}
|
}
|
|
|
|
|