//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, August 29, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
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_ContainerHint;
|
[SerializeField] RectTransform m_ContainerRank;
|
[SerializeField] FairyFeastRankBehaviour[] m_RankBehaviours;
|
[SerializeField] FairyFeastRankBehaviour m_TopRank;
|
[SerializeField] DungeonMultipleTaskWin.SelectEffect m_SelectEffect;
|
[SerializeField] Button m_OpenTransmit;
|
[SerializeField] Button m_GotoFeast;
|
[SerializeField] RectTransform m_ContainerQuestion;
|
[SerializeField] Text m_QuestionTime;
|
|
DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel<FairyFeastModel>(); } }
|
FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } }
|
|
int currentSelect = 0;
|
bool nearNpc = false;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_FairyFeast.onClick.AddListener(() =>
|
{
|
Select(0);
|
});
|
m_QuestionRank.onClick.AddListener(() =>
|
{
|
Select(1);
|
});
|
m_OpenTransmit.onClick.AddListener(OpenTransmit);
|
m_GotoFeast.onClick.AddListener(OnGotoFeast);
|
}
|
|
protected override void OnPreOpen()
|
{
|
nearNpc = false;
|
Select(0);
|
model.updateMissionEvent += UpdateMissionEvent;
|
PrepareHandler.Instance.OnShowCollectIcon += OnArriveCollectNPC;
|
PrepareHandler.Instance.OnHideCollectIcon += OnLeaveCollectNpc;
|
GlobalTimeEvent.Instance.secondEvent += SecondEvent;
|
DisplayTransmit();
|
DisplayGotoFeast();
|
DisplayQuestionTime();
|
}
|
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.updateMissionEvent -= UpdateMissionEvent;
|
PrepareHandler.Instance.OnShowCollectIcon -= OnArriveCollectNPC;
|
PrepareHandler.Instance.OnHideCollectIcon -= OnLeaveCollectNpc;
|
GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
#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_ContainerHint.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();
|
}
|
DisplayTransmit();
|
DisplayGotoFeast();
|
}
|
|
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 OnArriveCollectNPC(uint arg0, int _npcId)
|
{
|
if (_npcId == fairyModel.fairyFeastDeskNpc)
|
{
|
nearNpc = true;
|
DisplayGotoFeast();
|
DisplayTransmit();
|
}
|
}
|
|
private void OnLeaveCollectNpc(uint arg0, int _npcId)
|
{
|
if (_npcId == fairyModel.fairyFeastDeskNpc)
|
{
|
nearNpc = false;
|
DisplayGotoFeast();
|
DisplayTransmit();
|
}
|
}
|
|
private void DisplayTransmit()
|
{
|
var mission = model.mission;
|
m_OpenTransmit.gameObject.SetActive(mission.hasSit == 0 && !nearNpc);
|
}
|
|
private void DisplayGotoFeast()
|
{
|
var mission = model.mission;
|
m_GotoFeast.gameObject.SetActive(mission.hasCollect == 0 && !nearNpc);
|
}
|
|
private void SecondEvent()
|
{
|
DisplayQuestionTime();
|
}
|
|
private void DisplayQuestionTime()
|
{
|
bool requireNoticeQuestionTime = false;
|
HourMinute time;
|
if (fairyFeastModel.TryGetQuestionTime(out time))
|
{
|
if (TimeUtility.Hour <= time.hourBegin)
|
{
|
if (TimeUtility.Minute < time.minuteBegin)
|
{
|
requireNoticeQuestionTime = true;
|
}
|
}
|
}
|
if (m_ContainerQuestion.gameObject.activeSelf != requireNoticeQuestionTime)
|
{
|
m_ContainerQuestion.gameObject.SetActive(requireNoticeQuestionTime);
|
}
|
if (requireNoticeQuestionTime)
|
{
|
var startTime = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day,
|
time.hourBegin, time.minuteBegin, 0);
|
var seconds = Mathf.CeilToInt((float)(startTime - TimeUtility.ServerNow).TotalSeconds);
|
m_QuestionTime.text = Language.Get("FairyFeastQuestionTime", TimeUtility.SecondsToDHMSCHS(seconds));
|
}
|
}
|
|
private void OpenTransmit()
|
{
|
WindowCenter.Instance.Open<FairyFeastTransmitListWin>();
|
}
|
|
private void OnGotoFeast()
|
{
|
SnxxzGame.Instance.StartCoroutine(Co_HeroMoveToActor(fairyModel.fairyFeastDeskNpc));
|
}
|
|
IEnumerator Co_HeroMoveToActor(int _npcId)
|
{
|
var _hero = PlayerDatas.Instance.hero;
|
while (_hero.SkillMgr.CurCastSkill != null &&
|
_hero.SkillMgr.CurCastSkill.SkillCompelete == false)
|
{
|
yield return null;
|
}
|
MapTransferUtility.Instance.MoveToNPC(_npcId);
|
}
|
}
|
}
|
|
|
|
|