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