121 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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<int> 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();
 | |
|         }
 | |
|     }
 | |
| } |