mergemilitary/Assets/MMOModule/Scripts/MMOUIs/CustomControls/MMOTaskList/MMOTaskCell.cs

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