using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; namespace MMO { public class MMOTaskCell : MMOListCell { public Action DelRedeem; public Action DelWatchRV; [SerializeField] GameObject mGobRobux24000; [SerializeField] GameObject mGobRobux48000; [SerializeField] GameObject mGobRobuxOther; [SerializeField] Text mTxtReward; [SerializeField] Text mTxtTaskDesc; [SerializeField] Image mImgTaskIcon; [SerializeField] Text mTxtProgress; [SerializeField] Image mImgProgress; [SerializeField] Text mTxtTaskFinal; [SerializeField] GameObject mGobNormal; [SerializeField] GameObject mGobFinal; [SerializeField] GameObject mGobRedeemOK; [SerializeField] GameObject mGobBack; [SerializeField] Button mBtnWatchAd; [SerializeField] Button mBtnRedeem; private MMODataTask mData; private bool mIsAdTask => mData.TaskType == MMOTaskType.WatchRV || mData.TaskType == MMOTaskType.DailyAds || mData.TaskType == MMOTaskType.RiseRank; private void Awake() { mBtnRedeem.onClick.AddListener(OnClickRedeem); mBtnWatchAd.onClick.AddListener(OnClickWatchAd); } public void ConfigTask(MMOTaskRecord pRecord) { mData = MMOTableTask.Instance.GetData(pRecord.TaskID); mGobRobux24000.SetActive(pRecord.RewardNum == 24000); mGobRobux48000.SetActive(pRecord.RewardNum == 48000); mGobRobuxOther.SetActive(pRecord.RewardNum != 24000 && pRecord.RewardNum != 48000); string tRewardStr = pRecord.RewardNum.ToString(); tRewardStr = tRewardStr.Insert(tRewardStr.Length - 2, ","); mTxtReward.text = tRewardStr; mBtnRedeem.transform.DOKill(); mBtnRedeem.transform.localScale = Vector3.one; if (pRecord.TaskType != MMOTaskType.Final) { mGobNormal.SetActive(true); mGobFinal.SetActive(false); int tCurrentValue = MMOUserData.Instance.GetTaskValue(pRecord.RecordKey); mTxtTaskDesc.text = mData.TaskName; mImgTaskIcon.sprite = MMOUtils.LoadTaskIcon(pRecord.TaskType); mImgTaskIcon.SetNativeSize(); if (pRecord.TaskType == MMOTaskType.RiseRank) { mTxtProgress.text = string.Format("{0:f1}%", Mathf.Min(((float)tCurrentValue / mData.TargetNum) * 100, 100)); } else { mTxtProgress.text = string.Format("{0}/{1}", tCurrentValue, mData.TargetNum); } mImgProgress.fillAmount = (float)tCurrentValue / mData.TargetNum; if (pRecord.IsFinished) { mGobBack.SetActive(false); mBtnRedeem.gameObject.SetActive(true); mBtnWatchAd.gameObject.SetActive(false); mGobRedeemOK.SetActive(true); mBtnRedeem.transform.DOScale(1.1f, 0.3f).SetLoops(-1, LoopType.Yoyo).SetEase(Ease.Linear); } else { bool tHasFinishedSameTaskToday = MMOUserData.Instance.HasFinishedTaskToday(mData.TaskType); bool tIsDailyDone = (pRecord.TaskType == MMOTaskType.DailyLevel || pRecord.TaskType == MMOTaskType.DailyAds) && tHasFinishedSameTaskToday; mGobBack.SetActive(tIsDailyDone); mBtnRedeem.gameObject.SetActive(!tIsDailyDone && !mIsAdTask); mBtnWatchAd.gameObject.SetActive(!tIsDailyDone && mIsAdTask); mGobRedeemOK.SetActive(false); } } else { mGobNormal.SetActive(false); mGobFinal.SetActive(true); mTxtTaskFinal.text = mData.TaskDesc; } } private void OnClickRedeem() { DelRedeem?.Invoke(mIndex); } private void OnClickWatchAd() { DelWatchRV?.Invoke(); } } }