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 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(); } 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(); 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(); 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(); } private void OnClickHelp() { MMOModule.Instance.UIMgr.OpenUI(); } private void Exit() { MMOModule.Instance.Exit(); } } }