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();
|
|
}
|
|
}
|
|
} |