using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class XMZZAchieveCell : CellView { [SerializeField] Image itemIcon; [SerializeField] Button itemIconBtn; [SerializeField] Text numText; [SerializeField] Text achieveNameText; [SerializeField] Slider progressSlider; [SerializeField] Text progressText; [SerializeField] Button recieveBtn; [SerializeField] UIEffect receiveEffect; private Achievement achieve = null; private SuccessConfig successConfig = null; HeavenBattleModel battleModel { get { return ModelCenter.Instance.GetModel(); } } AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel(); } } public void Init(int achieveId) { achieve = null; progressSlider.minValue = 0; progressSlider.maxValue = 1; achievementModel.TryGetAchievement(achieveId, out achieve); if (achieve == null) { progressSlider.value = 0; return; } successConfig = SuccessConfig.Get(achieve.id); achieveNameText.text = AchievementModel.ParseAchievementDescription(achieve.id); string s = ""; if (!achieve.completed) { progressSlider.value = (float)achieve.progress / successConfig.NeedCnt; s = StringUtility.Contact(UIHelper.ReplaceLargeNum(achieve.progress), "/", UIHelper.ReplaceLargeNum(successConfig.NeedCnt)); } progressText.text = s; itemIconBtn.RemoveAllListeners(); if (achieve.rewardItem != null) { ItemConfig itemConfig = ItemConfig.Get(achieve.rewardItem[0].id); itemIcon.SetSprite(itemConfig.IconKey); numText.text = UIHelper.ReplaceLargeNum(achieve.rewardItem[0].count); itemIconBtn.AddListener(()=> { ItemTipUtility.Show(itemConfig.ID); }); } else if(achieve.rewardCurrency != null) { UIHelper.SetIconWithMoneyType(itemIcon, achieve.rewardCurrency[0].id); numText.text = UIHelper.ReplaceLargeNum(achieve.rewardCurrency[0].count); } RefreshTaskState(); } private void RefreshTaskState() { recieveBtn.onClick.RemoveAllListeners(); if (!IsReachAchieve()) { recieveBtn.SetActive(false); receiveEffect.SetActive(false); } else { recieveBtn.SetActive(true); receiveEffect.SetActive(true); recieveBtn.onClick.AddListener(() => { OnClickReceiveReward(achieve.id); }); } } private void OnClickReceiveReward(int id) { battleModel.AchieveModel.GetAchievementReward(id); } public bool IsReachAchieve() { if (achieve == null) return false; bool isReach = false; if (!achieve.completed) { if (Achievement.IsReach(achieve.id, achieve.progress)) { isReach = true; } } return isReach; } } }