//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, September 18, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class DailyQuestActiveRewardTooltip : MonoBehaviour
|
{
|
[SerializeField] Text m_ActivePoint;
|
[SerializeField] PointerDownUp m_PointerDownUp;
|
[SerializeField] ItemBehaviour m_Item;
|
[SerializeField] UIEffect m_AwardEffect;
|
[SerializeField] Transform m_GotSign;
|
[SerializeField] Text m_RewardDescription;
|
|
[SerializeField] Transform m_RewardPreview;
|
[SerializeField] ItemBehaviour m_ItemPreview;
|
[SerializeField] Text m_RewardPreviewDescription;
|
|
DailyQuestModel model { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
|
int rewardId = 0;
|
|
public void Init(int _rewardId, int _stage)
|
{
|
rewardId = _rewardId;
|
var config = DailyLivenessRewardConfig.Get(rewardId);
|
if (config == null)
|
{
|
return;
|
}
|
|
m_ActivePoint.text = Language.Get("DailyQuestActiveTitle", config.Liveness);
|
var itemId = config.ItemID[_stage];
|
var itemCount = config.ItemCount[_stage];
|
m_Item.SetItem(itemId, itemCount);
|
m_ItemPreview.SetItem(itemId, itemCount);
|
var itemConfig = ItemConfig.Get(itemId);
|
m_RewardDescription.text = Language.Get(config.Description, itemConfig.ItemName, itemCount);
|
m_RewardPreviewDescription.text = Language.Get("DailyQuestActiveTitle2", config.Liveness);
|
DailyQuestActiveValueReward rewardRecord;
|
if (model.TryGetActiveValueRewardData(rewardId, out rewardRecord))
|
{
|
m_GotSign.SetActive(rewardRecord.got);
|
}
|
|
model.currentActiveValueUpdateEvent -= UpdateAwardableEffect;
|
model.currentActiveValueUpdateEvent += UpdateAwardableEffect;
|
model.activeValueRewardGotEvent -= OnGotActiveValueReward;
|
model.activeValueRewardGotEvent += OnGotActiveValueReward;
|
}
|
|
public void Dispose()
|
{
|
model.activeValueRewardGotEvent -= OnGotActiveValueReward;
|
model.currentActiveValueUpdateEvent -= UpdateAwardableEffect;
|
}
|
|
public void UpdateAwardableEffect()
|
{
|
DailyQuestActiveValueReward rewardRecord;
|
if (model.TryGetActiveValueRewardData(rewardId, out rewardRecord))
|
{
|
var error = 0;
|
var gotable = TestActiveValueGotable(out error);
|
if (gotable)
|
{
|
m_AwardEffect.SetActive(true);
|
m_AwardEffect.Play();
|
}
|
else
|
{
|
m_AwardEffect.Stop();
|
}
|
}
|
}
|
|
private void Awake()
|
{
|
m_PointerDownUp.AddPointerClickListener(OnClick);
|
m_PointerDownUp.AddPointerDownListener(OnPointerDown);
|
m_PointerDownUp.AddPointerUpListener(OnPointerUp);
|
}
|
|
private void OnClick()
|
{
|
var error = 0;
|
if (TestActiveValueGotable(out error))
|
{
|
model.RequestGetActiveValueReward(rewardId);
|
}
|
}
|
|
private void OnPointerDown()
|
{
|
m_RewardPreview.SetActive(true);
|
|
}
|
|
private void OnPointerUp()
|
{
|
m_RewardPreview.SetActive(false);
|
}
|
|
private void OnEnable()
|
{
|
m_RewardPreview.SetActive(false);
|
}
|
|
private void OnDisable()
|
{
|
m_RewardPreview.SetActive(false);
|
}
|
|
private void OnGotActiveValueReward(int _id)
|
{
|
if (_id != rewardId)
|
{
|
return;
|
}
|
|
DailyQuestActiveValueReward rewardRecord;
|
if (model.TryGetActiveValueRewardData(rewardId, out rewardRecord))
|
{
|
m_GotSign.SetActive(rewardRecord.got);
|
}
|
|
UpdateAwardableEffect();
|
}
|
|
private bool TestActiveValueGotable(out int _error)
|
{
|
var config = DailyLivenessRewardConfig.Get(rewardId);
|
if (model.currentActiveValue < config.Liveness)
|
{
|
_error = 1;
|
return false;
|
}
|
|
DailyQuestActiveValueReward rewardRecord;
|
if (model.TryGetActiveValueRewardData(rewardId, out rewardRecord))
|
{
|
if (rewardRecord.got)
|
{
|
_error = 2;
|
return false;
|
}
|
}
|
|
_error = 0;
|
return true;
|
}
|
|
}
|
|
}
|