//-------------------------------------------------------- 
 | 
//    [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; 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |