using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class HazyRegionEntrancePanel : MonoBehaviour
|
{
|
[SerializeField] Transform m_ContainerTimes;
|
[SerializeField] Text m_Times;
|
[SerializeField] Button m_GetPath;
|
|
[SerializeField] Button m_Goto;
|
[SerializeField] Text m_GotoLabel;
|
|
HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
|
DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
|
private void Awake()
|
{
|
m_GetPath.AddListener(GetPath);
|
m_Goto.AddListener(Goto);
|
}
|
|
public void Display()
|
{
|
dailyQuestModel.usableActivePointUpdateEvent += UsableActivePointUpdateEvent;
|
model.onHazyRegionIncidentRefresh += OnHazyRegionIncidentRefresh;
|
|
DisplayActivePoint();
|
DisplayButtonState();
|
}
|
|
void DisplayActivePoint()
|
{
|
m_ContainerTimes.gameObject.SetActive(true);
|
|
var label = UIHelper.AppendColor(dailyQuestModel.usableActivePoint >= model.openActviePoint ?
|
TextColType.Green : TextColType.Red,
|
dailyQuestModel.usableActivePoint.ToString());
|
m_Times.text = StringUtility.Contact(label, "/", model.openActviePoint);
|
}
|
|
void DisplayButtonState()
|
{
|
m_Goto.SetColorful(m_GotoLabel, true);
|
}
|
|
private void Goto()
|
{
|
var error = 0;
|
if (TryOpenHazyReion(out error))
|
{
|
model.SendOpenHazyRegion();
|
}
|
else
|
{
|
HandleErrorMessage(error);
|
}
|
}
|
|
private void GetPath()
|
{
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.DailyQuestFunc1);
|
}
|
|
bool TryOpenHazyReion(out int error)
|
{
|
error = 0;
|
if (dailyQuestModel.usableActivePoint < model.openActviePoint)
|
{
|
error = 2;
|
return false;
|
}
|
return true;
|
}
|
|
void HandleErrorMessage(int error)
|
{
|
switch (error)
|
{
|
case 1:
|
DailyQuestOpenTime dailyQuestOpenTime;
|
if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.HazyRegion, out dailyQuestOpenTime))
|
{
|
HourMinute hourMinute;
|
if (dailyQuestOpenTime.TryGetTodayNearestOpenTime(out hourMinute))
|
{
|
SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_1",
|
hourMinute.hourBegin.ToString("D2"),
|
hourMinute.hourEnd.ToString("D2"));
|
}
|
}
|
break;
|
case 2:
|
SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_2");
|
break;
|
case 3:
|
SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_3");
|
break;
|
case 4:
|
SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_4");
|
break;
|
}
|
}
|
|
public void Dispose()
|
{
|
dailyQuestModel.usableActivePointUpdateEvent -= UsableActivePointUpdateEvent;
|
model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;
|
}
|
|
private void OnHazyRegionIncidentRefresh()
|
{
|
DisplayActivePoint();
|
DisplayButtonState();
|
}
|
|
private void UsableActivePointUpdateEvent()
|
{
|
DisplayActivePoint();
|
}
|
}
|
}
|