//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, July 10, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using TableConfig; using System.Collections.Generic; namespace Snxxz.UI { public class BossRebornBehaviour : ScrollItem { [SerializeField] Text m_Decription; [SerializeField] Text m_surplusTimes; [SerializeField] RewardPreviewGroup m_Rewards; [SerializeField] RectTransform m_GotoOrGetReward; [SerializeField] Button m_Goto; [SerializeField] Button m_GetReward; [SerializeField] Text m_CompleteTimes; [SerializeField] RectTransform m_GotReward; BossRebornTask rebornTask; BossRebornModel model { get { return ModelCenter.Instance.GetModel(); } } public override void Display(object _data) { base.Display(_data); rebornTask = (BossRebornTask)_data; DisplayBaseInfo(); UpdateState(); UpdateRewardableTimes(); m_Goto.RemoveAllListeners(); m_Goto.AddListener(Goto); m_GetReward.RemoveAllListeners(); m_GetReward.AddListener(GetReward); rebornTask.gotRewardTimesChangeEvent -= UpdateState; rebornTask.gotRewardTimesChangeEvent -= UpdateRewardableTimes; rebornTask.gotRewardTimesChangeEvent += UpdateState; rebornTask.gotRewardTimesChangeEvent += UpdateRewardableTimes; } public override void Dispose() { base.Dispose(); rebornTask.gotRewardTimesChangeEvent -= UpdateState; rebornTask.gotRewardTimesChangeEvent -= UpdateRewardableTimes; } private void DisplayBaseInfo() { var config = Config.Instance.Get(rebornTask.id); var surplusTime = rebornTask.TotalTimes == 0 ? -1 : ((rebornTask.TotalTimes - rebornTask.gotRewardTimes) / rebornTask.SingleTimes); var surplusTimeString = UIHelper.GetTextColorByItemColor(surplusTime == 0 ? TextColType.Red : TextColType.Green, surplusTime == -1 ? Language.Get("BossFHLanguage4") : surplusTime.ToString()); m_surplusTimes.text = Language.Get("BossFHLanguage3", surplusTimeString); m_Decription.text = string.Format(config.Description, rebornTask.SingleTimes); m_Rewards.Display(rebornTask.rewards); } private void Goto() { var config = Config.Instance.Get(rebornTask.id); WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)config.jump); } private void GetReward() { model.RequestTaskReward(rebornTask.id); } private void UpdateState() { var state = rebornTask.GetState(); m_GotoOrGetReward.gameObject.SetActive( state == BossRebornTask.State.Normal || state == BossRebornTask.State.Rewardable); var config = Config.Instance.Get(rebornTask.id); var surplusTime = rebornTask.TotalTimes == 0 ? -1 : ((rebornTask.TotalTimes - rebornTask.gotRewardTimes) / rebornTask.SingleTimes); var surplusTimeString = UIHelper.GetTextColorByItemColor(surplusTime == 0 ? TextColType.Red : TextColType.Green, surplusTime == -1 ? Language.Get("BossFHLanguage4") : surplusTime.ToString()); m_surplusTimes.text = Language.Get("BossFHLanguage3", surplusTimeString); m_Goto.gameObject.SetActive(state == BossRebornTask.State.Normal); m_GetReward.gameObject.SetActive(state == BossRebornTask.State.Rewardable); m_GotReward.gameObject.SetActive(state == BossRebornTask.State.Completed); } private void UpdateRewardableTimes() { var config = Config.Instance.Get(rebornTask.id); m_CompleteTimes.text = StringUtility.Contact(rebornTask.completedTimes - rebornTask.gotRewardTimes, "/", rebornTask.SingleTimes); } } }