143 lines
4.9 KiB
C#
143 lines
4.9 KiB
C#
|
|
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();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|