//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, May 24, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using TableConfig;
|
|
namespace Snxxz.UI
|
{
|
|
public class DailyQuestRealmPracticeBehaviour : MonoBehaviour
|
{
|
[SerializeField] RectTransform m_ContainerPractice;
|
[SerializeField] Button m_GotoRealm;
|
[SerializeField] Slider m_PracticePointSlider;
|
[SerializeField] RectTransform m_RealmContainer;
|
[SerializeField] Text m_RealmStateDescription;
|
[SerializeField] Image m_Realm;
|
[SerializeField] Text m_PracticePoint;
|
[SerializeField] Text m_PractivePointNeed;
|
[SerializeField] Text m_GotoRealmLevelUpHint;
|
[SerializeField] Text m_UnGetPracticePoint;
|
[SerializeField] Button m_GetPracticePoint;
|
[SerializeField] UIEffect m_GetPracicePointEffect;
|
|
[SerializeField] RectTransform m_ContainerUnLock;
|
[SerializeField] Text m_UnLockCondition;
|
[SerializeField] Text m_AccumulatedPractice;
|
|
int piontBuf = 0;
|
|
DailyQuestModel dailyquestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
|
|
public void Display()
|
{
|
var isOpen = FuncOpen.Instance.IsFuncOpen(12);
|
|
m_ContainerPractice.gameObject.SetActive(isOpen);
|
m_ContainerUnLock.gameObject.SetActive(!isOpen);
|
|
dailyquestModel.realmPointUpdateEvent -= UpdateAccumulatedPracticePoint;
|
dailyquestModel.realmPointUpdateEvent -= UpdateUnGetPraceticePoint;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnPlayerDataRefresh;
|
|
m_GotoRealm.RemoveAllListeners();
|
m_GetPracticePoint.RemoveAllListeners();
|
if (isOpen)
|
{
|
piontBuf = PlayerDatas.Instance.extersion.realmPoint;
|
UpdatePraceticePoint(true);
|
UpdateUnGetPraceticePoint();
|
|
m_GotoRealm.AddListener(GotoRealm);
|
m_GetPracticePoint.AddListener(GetPracticePoint);
|
dailyquestModel.realmPointUpdateEvent += UpdateUnGetPraceticePoint;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent += OnPlayerDataRefresh;
|
}
|
else
|
{
|
UpdateAccumulatedPracticePoint();
|
|
var config = Config.Instance.Get<FuncOpenLVConfig>(12);
|
m_UnLockCondition.text = Language.Get("DailyquestOpenFunc", config.LimitLV);
|
|
dailyquestModel.realmPointUpdateEvent += UpdateAccumulatedPracticePoint;
|
}
|
}
|
|
public void Dispose()
|
{
|
StopAllCoroutines();
|
m_GotoRealm.RemoveAllListeners();
|
m_GetPracticePoint.RemoveAllListeners();
|
dailyquestModel.realmPointUpdateEvent -= UpdateAccumulatedPracticePoint;
|
dailyquestModel.realmPointUpdateEvent -= UpdateUnGetPraceticePoint;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnPlayerDataRefresh;
|
}
|
|
private void OnPlayerDataRefresh(PlayerDataRefresh _refreshType)
|
{
|
if (_refreshType == PlayerDataRefresh.RealmPoint)
|
{
|
UpdatePraceticePoint(false);
|
}
|
}
|
|
private void UpdatePraceticePoint(bool _rightNow)
|
{
|
var isMaxRealm = realmModel.realmMaxLevel == PlayerDatas.Instance.baseData.realmLevel;
|
var realmConfig = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
|
var pointNeed = realmConfig.NeedPoint;
|
var pointOwn = PlayerDatas.Instance.extersion.realmPoint;
|
|
if (isMaxRealm)
|
{
|
m_GotoRealmLevelUpHint.gameObject.SetActive(false);
|
realmConfig = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
|
m_RealmStateDescription.text = Language.Get("DailyquestHighestRealm");
|
}
|
else
|
{
|
m_GotoRealmLevelUpHint.gameObject.SetActive(true);
|
if (pointOwn >= pointNeed)
|
{
|
m_GotoRealmLevelUpHint.text = Language.Get("DailyquestRealm2");
|
}
|
else
|
{
|
m_GotoRealmLevelUpHint.text = Language.Get("RealmCollecting", pointNeed - pointOwn);
|
}
|
m_RealmStateDescription.text = Language.Get("DailyquestNextRealm");
|
}
|
|
var nextRealmConfig = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel + (isMaxRealm ? 0 : 1));
|
m_RealmContainer.gameObject.SetActive(nextRealmConfig != null && nextRealmConfig.Lv > 0);
|
if (nextRealmConfig != null && nextRealmConfig.Lv > 0)
|
{
|
m_Realm.SetSprite(nextRealmConfig.Img);
|
}
|
|
m_PractivePointNeed.text = StringUtility.Contact("/", pointNeed);
|
|
if (_rightNow)
|
{
|
m_PracticePointSlider.value = pointOwn / (float)pointNeed;
|
m_PracticePoint.text = pointOwn.ToString();
|
}
|
else
|
{
|
StartCoroutine(Co_PointIncreasePerformance(new PointPerformance() { startPoint = piontBuf, endPoint = pointOwn }));
|
piontBuf = pointOwn;
|
}
|
|
}
|
|
private void UpdateUnGetPraceticePoint()
|
{
|
m_UnGetPracticePoint.text = Language.Get("DailyQuestwin5", dailyquestModel.gotableRealmPoint);
|
}
|
|
private void GotoRealm()
|
{
|
WindowJumpMgr.Instance.ClearJumpData();
|
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.RealmFunc1);
|
}
|
|
private void GetPracticePoint()
|
{
|
if (dailyquestModel.gotableRealmPoint > 0)
|
{
|
dailyquestModel.RequestGetRealmPoint();
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("DailyquestNothingToGet");
|
}
|
}
|
|
private void UpdateAccumulatedPracticePoint()
|
{
|
m_AccumulatedPractice.text = Language.Get("DailyquestXiuxingdian", dailyquestModel.gotableRealmPoint);
|
}
|
|
IEnumerator Co_PointIncreasePerformance(PointPerformance _pointPerformance)
|
{
|
m_GetPracicePointEffect.Play();
|
yield return WaitingForSecondConst.WaitMS1000;
|
|
var timer = 0f;
|
var duration = 2f;
|
|
var realmConfig = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
|
var pointNeed = realmConfig.NeedPoint;
|
|
while (timer < duration)
|
{
|
timer += Time.deltaTime;
|
var t = timer / duration;
|
|
var progress = Mathf.Lerp(_pointPerformance.startPoint / (float)pointNeed, _pointPerformance.endPoint / (float)pointNeed, t);
|
var point = (int)(progress * pointNeed);
|
m_PracticePointSlider.value = progress;
|
m_PracticePoint.text = point.ToString();
|
|
yield return null;
|
}
|
|
m_PracticePointSlider.value = _pointPerformance.endPoint / (float)pointNeed;
|
m_PracticePoint.text = _pointPerformance.endPoint.ToString();
|
}
|
|
struct PointPerformance
|
{
|
public int startPoint;
|
public int endPoint;
|
}
|
|
}
|
|
}
|
|
|
|