| 
					
				 | 
			
			
				@@ -39,7 +39,7 @@ namespace GFGGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (guideCfgs[i].roleLv <= 0) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bool isFinishCurId = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_GUIDE + guideCfgs[i].id) > 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!isFinishCurId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!isFinishCurId && guideCfgs[i].roleLv <= RoleDataManager.lvl) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return guideCfgs[i].viewName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,37 +63,37 @@ namespace GFGGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public static bool TryGuide(GObject target, string guideKey, int index, string guideStr = null, int listIndex = -1, bool checkPriorIndex = true, int yTxt = 0, float devWidth = 0, float devHeight = 0, bool showAni = true, bool checkChapterPass = false, bool isOptionalGuide = false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public static bool TryGuide(GObject target, string guideKey, int index, string guideStr = null, int listIndex = -1, bool checkPriorIndex = true, int yTxt = 0, float devWidth = 0, float devHeight = 0, bool showAni = true, bool showEffect = true, bool isOptionalGuide = false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GuideCfg cfg = GuideCfgArray.Instance.GetCfg(guideKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (GuideDataManager.currentGuideId != 0 && GuideDataManager.currentGuideId != cfg.id) return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isStoryLevelGuide = cfg.storyLevelId > 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isFinishCurId = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_GUIDE + cfg.id) > 0;//当前引导未完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isFinishPriorId = cfg.priorId <= 0 || StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_GUIDE + cfg.priorId) > 0;//前置引导已完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isFinishCurIndex = GuideDataManager.IsGuideIndexFinish(cfg.id, index) == true;//当前index未完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isFinishPriorIndex = !checkPriorIndex || checkPriorIndex && GuideDataManager.IsGuideIndexFinish(cfg.id, index - 1) == true;//前置index已完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool isCfgChapterOpen = MainStoryDataManager.CheckLevelUnlock(cfg.storyLevelId);//引导配置关卡已开启 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (checkChapterPass && !isCfgChapterOpen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {//cfg.storyLevelId为当前关卡,通关时 MainStoryDataManager.currentLevelCfgId为下一章的第一关,但下一章有可能因为角色等级不足未开启,会导致引导无法正常开启,所以添加是否通关检测 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(cfg.storyLevelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (levelCfg.chapterId - 1 > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    isCfgChapterOpen = MainStoryDataManager.CheckNeedChapterPass(levelCfg.chapterId - 1, out int needChapterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool isCfgChapterOpen = MainStoryDataManager.CheckLevelUnlock(cfg.storyLevelId, false);//引导配置关卡已开启 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // if (checkChapterPass && !isCfgChapterOpen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // {//cfg.storyLevelId为当前关卡,通关时 MainStoryDataManager.currentLevelCfgId为下一章的第一关,但下一章有可能因为角色等级不足未开启,会导致引导无法正常开启,所以添加是否通关检测 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(cfg.storyLevelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     if (levelCfg.chapterId - 1 > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         isCfgChapterOpen = MainStoryDataManager.CheckNeedChapterPass(levelCfg.chapterId - 1, out int needChapterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isCfgChapter = MainStoryDataManager.currentLevelCfgId == 0 || MainStoryDataManager.currentLevelCfgId == cfg.storyLevelId;//无选择(进入游戏时无选择)或当前所选择为配置关卡 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool isRoleLvGuide = cfg.roleLv > 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool iscurRoleLv = RoleDataManager.lvl >= cfg.roleLv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool isSpecial = cfg.special > 0 && CheckSpecialGuideOpen(cfg);//特殊条件开启的引导 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool isSpecial = cfg.special > 0; //特殊条件开启的引导 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool specialOpen = CheckSpecialGuideOpen(cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool noneType = !isStoryLevelGuide && !isFinishCurId && isFinishPriorId && !isFinishCurIndex && isFinishPriorIndex && !isRoleLvGuide && !isSpecial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool storyType = isStoryLevelGuide && !isFinishCurId && isFinishPriorId && !isFinishCurIndex && isFinishPriorIndex && isCfgChapterOpen && isCfgChapter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bool roleLvType = isRoleLvGuide && !isFinishCurId && isFinishPriorId && !isFinishCurIndex && isFinishPriorIndex && iscurRoleLv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool specialType = isSpecial && !isFinishCurId && isFinishPriorId && !isFinishCurIndex && isFinishPriorIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool noneType = !isStoryLevelGuide && !isFinishCurId && !isRoleLvGuide && !isSpecial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool specialType = isSpecial && !isFinishCurId && isFinishPriorId && !isFinishCurIndex && isFinishPriorIndex && specialOpen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (storyType || roleLvType || specialType || noneType) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 GuideDataManager.currentGuideId = cfg.id; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,7 +118,7 @@ namespace GFGGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bool _isOptionalGuide = isOptionalGuide ? isOptionalGuide : cfg.optionalGuide == 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ShowGuideByIndex(target, guideStr, yTxt, _isOptionalGuide, devWidth, devHeight, GuideDataManager.currentGuideId, GuideDataManager.currentGuideIdIndex, showAni); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ShowGuideByIndex(target, guideStr, yTxt, _isOptionalGuide, devWidth, devHeight, GuideDataManager.currentGuideId, GuideDataManager.currentGuideIdIndex, showAni, showEffect); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!checkPriorIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (int i = 1; i < index; i++) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -130,7 +130,7 @@ namespace GFGGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private static void ShowGuideByIndex(GObject target, string guideStr = null, int yTxt = 0, bool isOptionalGuide = false, float devWidth = 0, float devHeight = 0, int guideId = 0, int index = 0, bool showAni = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private static void ShowGuideByIndex(GObject target, string guideStr = null, int yTxt = 0, bool isOptionalGuide = false, float devWidth = 0, float devHeight = 0, int guideId = 0, int index = 0, bool showAni = true, bool showEffect = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             HideGuide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (GameGlobal.skipGuide) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -138,7 +138,7 @@ namespace GFGGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ViewManager.Show(ViewName.GUIDE_VIEW, new List<object> { target, guideStr, yTxt, isOptionalGuide, devWidth, devHeight, guideId, index, showAni }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ViewManager.Show(ViewName.GUIDE_VIEW, new List<object> { target, guideStr, yTxt, isOptionalGuide, devWidth, devHeight, guideId, index, showAni, showEffect }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public static bool TryCompleteGuideIndex(int guideId, int index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 |