//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, August 29, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.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_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(); } } FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel(); } } 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.SetActive(_index == 0); m_ContainerHint.SetActive(_index == 0); m_ContainerRank.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 list = new List(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.SetActive(mission.hasSit == 0 && !nearNpc); } private void DisplayGotoFeast() { var mission = model.mission; m_GotoFeast.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.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)); //} m_ContainerQuestion.SetActive(false); } private void OpenTransmit() { WindowCenter.Instance.Open(); } 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); } } }