mergemilitary/Assets/MMOModule/Scripts/MMOUIs/CustomControls/MMOInviteTask.cs

143 lines
4.9 KiB
C#
Raw Normal View History

2022-09-09 14:35:49 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
namespace MMO
{
public class MMOInviteTask : MonoBehaviour
{
[SerializeField] Text mTxtReward;
[SerializeField] Image mImgProgress;
[SerializeField] Text mTxtProgress;
[SerializeField] Text mTxtDesc1;
[SerializeField] Text mTxtDesc2;
[SerializeField] GameObject mGobInvite;
[SerializeField] GameObject mGobRedeem;
[SerializeField] GameObject mGobDone;
[SerializeField] Button mBtnProgress;
[SerializeField] Button mBtnProgress2;
[SerializeField] Button mBtnHelp;
[SerializeField] Button mBtnShare;
[SerializeField] Button mBtnRedeem;
private const int INVITE_TASKID = -2;
private int mFinishedCount = 0;
private MMODataTask mData;
private MMOTaskRecord mTaskRecord;
private int mInviteCount = 0;
private int mInviteLevel = 0;
private void Awake()
{
mBtnProgress.onClick.AddListener(OnClickProgress);
mBtnProgress2.onClick.AddListener(OnClickProgress);
mBtnHelp.onClick.AddListener(OnClickHelp);
mBtnShare.onClick.AddListener(OnClickShare);
mBtnRedeem.onClick.AddListener(OnClickRedeem);
}
private void OnEnable()
{
mData = MMOTableTask.Instance.GetData(INVITE_TASKID);
mInviteCount = MMOInnerSDKManager.Instance.GetConfigInt(MMOConstConfig.Instance.InviteCountParam);
mInviteLevel = MMOInnerSDKManager.Instance.GetConfigInt(MMOConstConfig.Instance.InviteLevelParam);
mTxtDesc1.text = string.Format("Invite {0} users to get 400 Robux", mInviteCount);
mTxtDesc2.text = string.Format("*Invited users need to complete at least {0} levels", mInviteLevel);
MMORespondInviteProgress tProgressData = MMOAPIRequestManager.Instance.GetData<MMORespondInviteProgress>();
mFinishedCount = 0;
int tUserCount = 0;
if (tProgressData != null && tProgressData.UserList != null && tProgressData.UserList.Length > 0)
{
tUserCount = tProgressData.UserList.Length;
for (int i = 0; i < tProgressData.UserList.Length; i++)
{
if (tProgressData.UserList[i].Level >= mInviteLevel)
{
mFinishedCount++;
}
}
}
if (tUserCount > 0)
{
MMOInnerSDKManager.Instance.LogInviteNum(MMOEventKey.AcceptNum, tUserCount);
}
if (mFinishedCount > 0)
{
MMOInnerSDKManager.Instance.LogInviteNum(MMOEventKey.SuccessNum, mFinishedCount);
}
mTxtReward.text = mData.RewardNum.ToString();
mImgProgress.fillAmount = mFinishedCount / (float)mInviteCount;
mTxtProgress.text = string.Format("{0}/{1}", mFinishedCount, mInviteCount);
mBtnProgress.enabled = tUserCount > 0;
mBtnProgress2.enabled = tUserCount > 0;
RefreshRecord();
}
private void RefreshRecord()
{
mTaskRecord = MMOUserData.Instance.TaskRecordList.Find(pItem => pItem.TaskID == INVITE_TASKID);
if (mTaskRecord != null)//has task
{
MMOUserData.Instance.SetTaskValue(mTaskRecord.RecordKey, mFinishedCount);
bool tIsTaskFinished = mTaskRecord.IsFinished;
mGobInvite.SetActive(!tIsTaskFinished);
mGobRedeem.SetActive(tIsTaskFinished);
mGobDone.SetActive(false);
if (mGobRedeem.activeSelf)
{
mBtnRedeem.transform.DOScale(1.2f, 0.3f).SetLoops(-1, LoopType.Yoyo).SetEase(Ease.Linear);
}
}
else if (MMOUserData.Instance.HasFinishedTask(mData.TaskType))
{
mGobInvite.SetActive(false);
mGobRedeem.SetActive(false);
mGobDone.SetActive(true);
}
}
private void OnClickProgress()
{
MMOUIInviteProgress tUI = MMOModule.Instance.UIMgr.OpenUI<MMOUIInviteProgress>();
tUI.Init(mFinishedCount, mInviteCount);
}
private void OnClickHelp()
{
MMOModule.Instance.UIMgr.OpenUI<MMOUIInviteHelp>();
}
private void OnClickShare()
{
MMOModule.Instance.UIMgr.OpenUI<MMOUIInviteCode>();
MMOInnerSDKManager.Instance.LogInviteAction(MMOEventValue.Code_Copy);
}
private void OnClickRedeem()
{
MMOModule.Instance.UIMgr.OpenUI<MMOUIRedeemDone>();
MMOUserData.Instance.FinishTask(mData.TaskType);
MMOUserData.Instance.RemoveTaskRecord(mTaskRecord.RecordID);
RefreshRecord();
}
}
}