mergemilitary/Assets/MMOModule/Scripts/MMOUIs/MMOUIMain.cs

196 lines
5.9 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace MMO
{
public class MMOUIMain : MMOUIBase
{
public Action DelWatchAd;
[SerializeField] Text mTxtUsername;
[SerializeField] GameObject mGobMale;
[SerializeField] GameObject mGobFemale;
[SerializeField] GameObject mTplTaskCell;
[SerializeField] Transform mCtnTaskCell;
[SerializeField] Button mBtnEdit;
[SerializeField] Button mBtnHelp;
[SerializeField] Button mBtnClose;
private List<MMOTaskCell> mTaskCells;
protected override void OnInit()
{
base.OnInit();
BindBtn(mBtnEdit, OnClickEdit);
BindBtn(mBtnHelp, OnClickHelp);
BindBtn(mBtnClose, Exit);
}
public override void OnOpen()
{
base.OnOpen();
UpdateUserInfo();
RefreshTaskList();
}
public void UpdateUserInfo()
{
mTxtUsername.text = MMOUserData.Instance.Username;
SetSex(MMOUserData.Instance.Sex);
}
private void SetSex(int pSex)
{
mGobMale.SetActive(pSex == 1);
mGobFemale.SetActive(pSex == 0);
}
public void RefreshTaskList()
{
if (mTaskCells == null)
{
mTaskCells = new List<MMOTaskCell>();
}
for (int i = 0; i < MMOUserData.Instance.TaskRecordList.Count; i++)
{
MMOTaskCell tCell = null;
if (i < mTaskCells.Count)
{
tCell = mTaskCells[i];
}
else
{
tCell = GetNewCell();
mTaskCells.Add(tCell);
}
tCell.gameObject.SetActive(true);
tCell.ConfigTask(i, MMOUserData.Instance.TaskRecordList[i]);
}
HideUnused();
}
private MMOTaskCell GetNewCell()
{
GameObject tCellOb = Instantiate(mTplTaskCell, mCtnTaskCell);
tCellOb.transform.localScale = Vector3.one;
MMOTaskCell tCell = tCellOb.GetComponent<MMOTaskCell>();
tCell.DelRedeem = Redeem;
tCell.DelWatchAd = WatchAd;
return tCell;
}
private void HideUnused()
{
for (int i = MMOUserData.Instance.TaskRecordList.Count; i < mTaskCells.Count; i++)
{
mTaskCells[i].gameObject.SetActive(false);
}
}
private void Redeem(int pIndex)
{
MMOTaskRecord tRecord = MMOUserData.Instance.TaskRecordList[pIndex];
if (tRecord.IsFinished)
{
if (tRecord.TaskType == MMOTaskType.GetDiamond)
{
MMOUserData.Instance.Diamond -= tRecord.TargetNum;
MMOModule.Instance.LogEvent(MMOEvent.TaskDiamondRedeem);
}
else if (tRecord.TaskType == MMOTaskType.PassLevel)
{
MMOModule.Instance.LogEvent(MMOEvent.TaskPassLevelRedeem);
}
else if (tRecord.TaskType == MMOTaskType.DailyLevel)
{
if (tRecord.TaskID % 100 == 3)
{
MMOModule.Instance.LogEvent(MMOEvent.TaskDailyLevelRedeem);
}
}
else if (tRecord.TaskType == MMOTaskType.DailyAds)
{
if (tRecord.TaskID % 100 == 3)
{
MMOModule.Instance.LogEvent(MMOEvent.TaskDailyAdsRedeem);
}
}
else if (tRecord.TaskType == MMOTaskType.WatchAds)
{
MMOModule.Instance.LogEvent(MMOEvent.TaskNoRobotRedeem);
}
else if (tRecord.TaskType == MMOTaskType.RiseRank)
{
MMOModule.Instance.LogEvent(MMOEvent.TaskRankRedeem);
}
MMODataTask tTask = MMOTableTask.Instance.GetData(tRecord.TaskID);
MMODataTask tNextTask = MMOTableTask.Instance.GetData(tTask.NextTaskID);
if (tNextTask != null)
{
MMOUserData.Instance.ModifyTaskRecord(tRecord.RecordID, tTask.NextTaskID);
if (tTask.GroupID == -1 || tTask.GroupID != tNextTask.GroupID)
{
MMOUINewTask tUINewTask = MMOModule.Instance.UIMgr.OpenUI<MMOUINewTask>();
string tContent = tNextTask.TaskDesc;
if (tNextTask.TaskType == MMOTaskType.RiseRank)
{
tContent = string.Format(tNextTask.TaskDesc, tNextTask.TargetNum - MMOUserData.Instance.GetTaskValue(tRecord.RecordKey));
}
tUINewTask.ConfigInfo(tContent, tNextTask.TaskType);
}
if (tNextTask.TaskType == MMOTaskType.Final)
{
MMOModule.Instance.LogEvent(MMOEvent.TaskFinalRedeem);
}
}
else
{
MMOUserData.Instance.RemoveTaskRecord(tRecord.RecordID);
}
RefreshTaskList();
}
else
{
MMOModule.Instance.ShowTip("Condition not completed");
}
}
private void WatchAd()
{
DelWatchAd?.Invoke();
}
private void OnClickEdit()
{
MMOModule.Instance.UIMgr.OpenUI<MMOUIFill>();
}
private void OnClickHelp()
{
MMOModule.Instance.UIMgr.OpenUI<MMOUIHelp>();
}
private void Exit()
{
MMOModule.Instance.Exit();
}
}
}