| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using UnityEngine; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | public class GuideManager : D_MonoSingleton<GuideManager> | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     public int GuideCount = 3; | 
					
						
							|  |  |  |  |     public bool EnableGuide = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     public int CurGuideIndex => mCurGuideIndex; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     private Dictionary<int, Action> mStepDoneDic = new Dictionary<int, Action>(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     private int mCurGuideIndex = -1; | 
					
						
							|  |  |  |  |     private Vector3 mStartPos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     private PanelGuide mUIGuide; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     public void StartGuide(int pGuideIndex, Dictionary<int, Action> pStepDoneDic = null, Vector3 pStartPos = default) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (!EnableGuide) | 
					
						
							|  |  |  |  |             return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (mCurGuideIndex < 0) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (pGuideIndex < GuideCount && !PlayerData.Instance.CheckGuide(pGuideIndex)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (pStepDoneDic != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     mStepDoneDic = pStepDoneDic; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 mCurGuideIndex = pGuideIndex; | 
					
						
							|  |  |  |  |                 mStartPos = pStartPos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 mUIGuide = UIManager.Instance.OpenUI<PanelGuide>(); | 
					
						
							|  |  |  |  |                 mUIGuide.InitGuide(pGuideIndex); | 
					
						
							|  |  |  |  |                 mUIGuide.DelStepDone = OnGuideStepDone; | 
					
						
							|  |  |  |  |                 mUIGuide.DelGuideFinish = OnGuideFinished; | 
					
						
							|  |  |  |  |                 mUIGuide.NextStep(mStartPos); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     public void DoStep(Vector3 pScreenPos = default) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (mCurGuideIndex < 0) | 
					
						
							|  |  |  |  |             return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         mUIGuide.NextStep(pScreenPos); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     public void FinishGuide(int pGuideIndex) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         //Debug.Log("Finish guide!!!!!!"); | 
					
						
							|  |  |  |  |         PlayerData.Instance.FinishGuide(pGuideIndex); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         mUIGuide.Close(); | 
					
						
							|  |  |  |  |         mUIGuide = null; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         mCurGuideIndex = -1; | 
					
						
							|  |  |  |  |         mStepDoneDic.Clear(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     public void FinishCurrentStep() | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (mUIGuide != null) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             mUIGuide.FinishCurrentStep(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     private void OnGuideStepDone(int pIndex) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         //Debug.Log(string.Format("step {0} done!!!", pIndex)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (mStepDoneDic.ContainsKey(pIndex)) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             mStepDoneDic[pIndex]?.Invoke(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-30 02:21:29 +00:00
										 |  |  |  |          | 
					
						
							| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  |         TKGSDKManager.Instance.LogEvent(Const.AdsEvent.Guide, Const.AdsKey.GuideStep, string.Format("{0}_{1}", mCurGuideIndex, pIndex)); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     private void OnGuideFinished() | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         FinishGuide(mCurGuideIndex); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |