Browse Source

Merge branch 'master' of https://e.coding.net/shenyou-gfg/gfgclient/client

# Conflicts:
#	GameClient/Assets/Game/CSShare
guodong 3 years ago
parent
commit
2db49850fb
85 changed files with 1500 additions and 204 deletions
  1. 1 1
      FGUIProject/assets/Card/components/ComFosterBottom.xml
  2. 1 0
      FGUIProject/assets/ClothingSynthetic/ClothingSyntheticUI.xml
  3. 1 0
      FGUIProject/assets/CommonGame/BuyCountUI.xml
  4. 10 0
      FGUIProject/assets/CommonGame/ComFunctionOpen.xml
  5. 10 0
      FGUIProject/assets/CommonGame/FunctionOpenUI.xml
  6. 4 4
      FGUIProject/assets/CommonGame/components/ButtonInValueBar.xml
  7. BIN
      FGUIProject/assets/CommonGame/images/js_xiant_1.png
  8. BIN
      FGUIProject/assets/CommonGame/images/js_xinjiesuo.png
  9. BIN
      FGUIProject/assets/CommonGame/images/zjm_gnk.png
  10. BIN
      FGUIProject/assets/CommonGame/imagesExport/hd_suanc.png
  11. BIN
      FGUIProject/assets/CommonGame/imagesExport/jinbi.png
  12. BIN
      FGUIProject/assets/CommonGame/imagesExport/jinbi_1.png
  13. BIN
      FGUIProject/assets/CommonGame/imagesExport/tili.png
  14. BIN
      FGUIProject/assets/CommonGame/imagesExport/zhuans_1.png
  15. BIN
      FGUIProject/assets/CommonGame/imagesExport/zhuans_2.png
  16. BIN
      FGUIProject/assets/CommonGame/imagesExport/zjm_jiahao.png
  17. BIN
      FGUIProject/assets/CommonGame/imgFunIcon/js_icon_.png
  18. 6 0
      FGUIProject/assets/CommonGame/package.xml
  19. 3 3
      FGUIProject/assets/DressUp/PhotographSaveUI.xml
  20. 1 1
      FGUIProject/assets/Main/StoryCardChooseUI.xml
  21. 3 1
      FGUIProject/assets/Main/StoryLevelInfoUI.xml
  22. 1 0
      FGUIProject/assets/Main/components/comClickCircle.xml
  23. 2 2
      FGUIProject/assets/RechargeStore/RechargeStoreUI.xml
  24. BIN
      FGUIProject/assets/RechargeStore/images/sc_rwrw.png
  25. 13 4
      GameClient/Assets/Game/HotUpdate/Constant/ConstGuideId.cs
  26. 1 0
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  27. 563 27
      GameClient/Assets/Game/HotUpdate/Controller/GuideController.cs
  28. 1 1
      GameClient/Assets/Game/HotUpdate/Data/Cache/LuckyBoxBonusDataCache.cs
  29. 100 0
      GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs
  30. 11 0
      GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs.meta
  31. 10 10
      GameClient/Assets/Game/HotUpdate/Data/GuideDataManager.cs
  32. 1 1
      GameClient/Assets/Game/HotUpdate/Data/PhotographDataManager.cs
  33. 1 0
      GameClient/Assets/Game/HotUpdate/Data/RoleDataManager.cs
  34. 53 7
      GameClient/Assets/Game/HotUpdate/Data/SkillDataManager.cs
  35. 7 4
      GameClient/Assets/Game/HotUpdate/Data/StoryDataManager.cs
  36. 2 1
      GameClient/Assets/Game/HotUpdate/Data/VO/SkillData.cs
  37. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingSynthetic/UI_ClothingSyntheticUI.cs
  38. 77 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_ComFunctionOpen.cs
  39. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_ComFunctionOpen.cs.meta
  40. 75 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_FunctionOpenUI.cs
  41. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_FunctionOpenUI.cs.meta
  42. 6 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_StoryLevelInfoUI.cs
  43. 3 1
      GameClient/Assets/Game/HotUpdate/Views/Card/CardDetailView.cs
  44. 7 3
      GameClient/Assets/Game/HotUpdate/Views/Card/CardFosterView.cs
  45. 15 6
      GameClient/Assets/Game/HotUpdate/Views/Card/CardSkillView.cs
  46. 2 0
      GameClient/Assets/Game/HotUpdate/Views/Card/CardView.cs
  47. 15 5
      GameClient/Assets/Game/HotUpdate/Views/ClothingShop/ClothingShopView.cs
  48. 41 10
      GameClient/Assets/Game/HotUpdate/Views/ClothingSynthetic/ClothingSyntheticView.cs
  49. 15 11
      GameClient/Assets/Game/HotUpdate/Views/ClothingSynthetic/SuitSyntheticView.cs
  50. 4 1
      GameClient/Assets/Game/HotUpdate/Views/CommonGame/ApproachOfItemView.cs
  51. 3 2
      GameClient/Assets/Game/HotUpdate/Views/CommonGame/BuyCountView.cs
  52. 70 0
      GameClient/Assets/Game/HotUpdate/Views/CommonGame/FunctionOpenView.cs
  53. 11 0
      GameClient/Assets/Game/HotUpdate/Views/CommonGame/FunctionOpenView.cs.meta
  54. 9 8
      GameClient/Assets/Game/HotUpdate/Views/CommonGame/GetSuitItemVIew.cs
  55. 29 7
      GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpFightView.cs
  56. 6 3
      GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs
  57. 3 0
      GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographSaveView.cs
  58. 8 1
      GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs
  59. 17 7
      GameClient/Assets/Game/HotUpdate/Views/Guide/GuideView.cs
  60. 15 15
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxStarView.cs
  61. 34 8
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs
  62. 6 1
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs
  63. 2 2
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterListView.cs
  64. 37 9
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterView.cs
  65. 9 2
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryController.cs
  66. 2 1
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightQuicklyView.cs
  67. 23 17
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightSingleScoreView.cs
  68. 48 4
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightTargetScoreView.cs
  69. 32 2
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryLevelInfoView.cs
  70. 7 2
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StorySkillView.cs
  71. 7 2
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StroyFightResultView.cs
  72. 19 6
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  73. 8 0
      GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs
  74. 4 1
      GameClient/Assets/Game/HotUpdate/Views/XiuFang/XiuFangView.cs
  75. BIN
      GameClient/Assets/ResIn/Config/excelConfig.sqlite.bytes
  76. BIN
      GameClient/Assets/ResIn/UI/Card/Card_fui.bytes
  77. BIN
      GameClient/Assets/ResIn/UI/ClothingSynthetic/ClothingSynthetic_fui.bytes
  78. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0!a.png
  79. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0.png
  80. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_fui.bytes
  81. BIN
      GameClient/Assets/ResIn/UI/DressUp/DressUp_fui.bytes
  82. BIN
      GameClient/Assets/ResIn/UI/Main/Main_fui.bytes
  83. BIN
      GameClient/Assets/ResIn/UI/RechargeStore/RechargeStore_atlas0!a.png
  84. BIN
      GameClient/Assets/ResIn/UI/RechargeStore/RechargeStore_atlas0.png
  85. BIN
      GameClient/Assets/ResIn/UI/RechargeStore/RechargeStore_fui.bytes

+ 1 - 1
FGUIProject/assets/Card/components/ComFosterBottom.xml

@@ -98,7 +98,7 @@
     <group id="n55_l2by" name="grpStar" xy="11,1221" size="1056,435" advanced="true">
       <gearDisplay controller="ctrlTab" pages="1"/>
     </group>
-    <list id="n77_rhha" name="listSkill" xy="76,1241" size="928,412" overflow="hidden" lineGap="33" defaultItem="ui://7l6lvkayrhha9k">
+    <list id="n77_rhha" name="listSkill" xy="76,1241" size="928,412" visible="false" overflow="hidden" lineGap="33" defaultItem="ui://7l6lvkayrhha9k">
       <gearDisplay controller="ctrlTab" pages="2"/>
       <item/>
       <item/>

+ 1 - 0
FGUIProject/assets/ClothingSynthetic/ClothingSyntheticUI.xml

@@ -6,6 +6,7 @@
     </loader>
     <component id="n40_ja9w" name="compHolder" src="ja9w1c" fileName="components/Component1.xml" xy="0,319"/>
     <component id="n1_j539" name="btnBack" src="9xlo8" fileName="components/ButtonBack1.xml" pkg="eg2y0ldp" xy="35,80"/>
+    <component id="n43_g3nf" name="btnHome" src="qp4l60" fileName="components/ButtonHome.xml" pkg="eg2y0ldp" xy="36,196"/>
     <component id="n2_j539" name="valueBar" src="v3541v" fileName="components/ComponentValueBar.xml" pkg="eg2y0ldp" xy="159,90" pivot="1,0"/>
     <image id="n3_j539" name="n3" src="j539p" fileName="images/hc_btkuang.png" pkg="eg2y0ldp" xy="259,218"/>
     <text id="n4_j539" name="txtSuitName" xy="466,223" size="148,49" fontSize="36" color="#fdf4e3" text="套装名字">

+ 1 - 0
FGUIProject/assets/CommonGame/BuyCountUI.xml

@@ -2,6 +2,7 @@
 <component size="936,536">
   <displayList>
     <image id="n0_hinb" name="bg" src="lwri5u" fileName="imagesExport/hc_kuang_6.png" pkg="mk0fwx0x" xy="0,0" size="936,536"/>
+    <loader id="n26_eiwu" name="n26" xy="0,0" size="936,536" visible="false" url="ui://mk0fwx0xlwri5u" fill="scaleFree"/>
     <component id="n23_ai2z" name="btnAll" src="ai2z9f" fileName="components/Button12.xml" xy="731,131"/>
     <image id="n19_ai2z" name="n19" src="ai2z9e" fileName="imagesExport/hb_kuangdi_2.png" xy="69,237" group="n21_ai2z"/>
     <loader id="n4_hinb" name="icon" xy="101,66" size="200,200" group="n21_ai2z" aspect="true"/>

+ 10 - 0
FGUIProject/assets/CommonGame/ComFunctionOpen.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="482,482">
+  <displayList>
+    <image id="n0_g3nf" name="n0" src="g3nf9s" fileName="images/js_xinjiesuo.png" xy="0,0"/>
+    <image id="n1_g3nf" name="n1" src="g3nf9u" fileName="images/js_xiant_1.png" xy="84,130"/>
+    <loader id="n2_g3nf" name="logIcon" xy="161,187" size="160,160" autoSize="true"/>
+    <text id="n3_g3nf" name="txtTitle" xy="173,60" size="136,59" fontSize="44" color="#aa8e46" align="center" text="新解锁"/>
+    <text id="n4_g3nf" name="txtName" xy="185,360" pivot="0.5,0" size="112,49" fontSize="36" color="#aa8e46" align="center" text="新解锁"/>
+  </displayList>
+</component>

+ 10 - 0
FGUIProject/assets/CommonGame/FunctionOpenUI.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="482,482">
+  <displayList>
+    <component id="n0_g3nf" name="ComFunctionOpen" src="eiwu9v" fileName="ComFunctionOpen.xml" xy="0,0" pivot="0.5,0.5"/>
+  </displayList>
+  <transition name="t0">
+    <item time="0" type="Scale" target="n0_g3nf" tween="true" startValue="0,0" endValue="1,1" duration="3" ease="Linear"/>
+    <item time="21" type="Scale" target="n0_g3nf" tween="true" startValue="1,1" endValue="0,0" duration="3" ease="Linear"/>
+  </transition>
+</component>

+ 4 - 4
FGUIProject/assets/CommonGame/components/ButtonInValueBar.xml

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<component size="233,37" extention="Button">
+<component size="233,46" extention="Button">
   <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
   <displayList>
-    <image id="n0_r9gf" name="n0" src="j53916" fileName="images/zjm_gnk.png" xy="0,0"/>
+    <image id="n0_r9gf" name="n0" src="j53916" fileName="images/zjm_gnk.png" xy="0,2"/>
     <text id="n1_r9gf" name="title" xy="67,0" size="10,39" fontSize="28" color="#f3f1ff" vAlign="middle" singleLine="true" text=""/>
-    <loader id="n2_r9gf" name="icon" xy="10,-4" size="46,46" aspect="true" url="ui://eg2y0ldpq08x4" align="center" vAlign="middle"/>
-    <image id="n3_r9gf" name="n3" src="q08x1" fileName="imagesExport/zjm_jiahao.png" xy="184,-2"/>
+    <loader id="n2_r9gf" name="icon" xy="1,-7" size="60,60" aspect="true" url="ui://eg2y0ldpq08x4" align="center" vAlign="middle" autoSize="true"/>
+    <image id="n3_r9gf" name="n3" src="q08x1" fileName="imagesExport/zjm_jiahao.png" xy="184,0"/>
   </displayList>
   <Button/>
 </component>

BIN
FGUIProject/assets/CommonGame/images/js_xiant_1.png


BIN
FGUIProject/assets/CommonGame/images/js_xinjiesuo.png


BIN
FGUIProject/assets/CommonGame/images/zjm_gnk.png


BIN
FGUIProject/assets/CommonGame/imagesExport/hd_suanc.png


BIN
FGUIProject/assets/CommonGame/imagesExport/jinbi.png


BIN
FGUIProject/assets/CommonGame/imagesExport/jinbi_1.png


BIN
FGUIProject/assets/CommonGame/imagesExport/tili.png


BIN
FGUIProject/assets/CommonGame/imagesExport/zhuans_1.png


BIN
FGUIProject/assets/CommonGame/imagesExport/zhuans_2.png


BIN
FGUIProject/assets/CommonGame/imagesExport/zjm_jiahao.png


BIN
FGUIProject/assets/CommonGame/imgFunIcon/js_icon_.png


+ 6 - 0
FGUIProject/assets/CommonGame/package.xml

@@ -159,6 +159,12 @@
     <component id="ojlzh" name="ComStar.xml" path="/components/" exported="true"/>
     <image id="pzq19p" name="cj_hd_xin.png" path="/imagesExport/"/>
     <image id="nz0ts" name="sc_anniu_1(1).png" path="/imagesExport/"/>
+    <image id="g3nf9q" name="jinbi_1.png" path="/imagesExport/"/>
+    <component id="g3nf9r" name="FunctionOpenUI.xml" path="/" exported="true"/>
+    <image id="g3nf9s" name="js_xinjiesuo.png" path="/images/"/>
+    <image id="g3nf9t" name="js_icon_.png" path="/imgFunIcon/" exported="true"/>
+    <image id="g3nf9u" name="js_xiant_1.png" path="/images/"/>
+    <component id="eiwu9v" name="ComFunctionOpen.xml" path="/"/>
   </resources>
   <publish name="" path="..\GameClient\Assets\ResIn\UI\CommonGame" packageCount="2" genCode="true" extractAlpha="true"/>
 </packageDescription>

+ 3 - 3
FGUIProject/assets/DressUp/PhotographSaveUI.xml

@@ -14,15 +14,15 @@
       <relation target="" sidePair="right-right,bottom-bottom"/>
       <Button icon="ui://mbo439wbxmtl4x"/>
     </component>
-    <component id="n5_i3ix" name="btnShare" src="i3ix5a" fileName="components/Button12.xml" xy="667,1816">
+    <component id="n5_i3ix" name="btnShare" src="i3ix5a" fileName="components/Button12.xml" xy="667,1816" visible="false">
       <relation target="" sidePair="right-right,bottom-bottom"/>
       <Button icon="ui://mbo439wbxmtl4v"/>
     </component>
-    <component id="n6_i3ix" name="btnShareWX" src="i3ix5a" fileName="components/Button12.xml" xy="796,1816">
+    <component id="n6_i3ix" name="btnShareWX" src="i3ix5a" fileName="components/Button12.xml" xy="796,1816" visible="false">
       <relation target="" sidePair="right-right,bottom-bottom"/>
       <Button icon="ui://mbo439wbxmtl4w"/>
     </component>
-    <component id="n7_i3ix" name="btnShareWB" src="i3ix5a" fileName="components/Button12.xml" xy="925,1816">
+    <component id="n7_i3ix" name="btnShareWB" src="i3ix5a" fileName="components/Button12.xml" xy="925,1816" visible="false">
       <relation target="" sidePair="right-right,bottom-bottom"/>
       <Button icon="ui://mbo439wbxmtl4u"/>
     </component>

+ 1 - 1
FGUIProject/assets/Main/StoryCardChooseUI.xml

@@ -8,7 +8,7 @@
     <text id="n6_cn27" name="txtDiscribe" xy="67,217" size="847,89" fontSize="34" color="#a28d77" autoSize="none" autoClearText="true" text="旋律在指尖流转,在天幕中划出一道起伏的星轨折线谱, 爱与星光星幕下的奏鸣!"/>
     <text id="n11_wzce" name="txtTips" xy="653,342" size="267,51" fontSize="38" color="#c67c6b" text="选择适合的词牌"/>
     <image id="n10_wzce" name="n10" src="sx2v9q" fileName="imagesStory/zd_tctcxian_2.png" xy="614,360"/>
-    <list id="n0_r1a9" name="listCard" xy="27,415" size="923,657" layout="flow_hz" overflow="scroll" lineGap="21" colGap="14" defaultItem="ui://mfvz4q8kr1a99f" align="center" autoClearItems="true">
+    <list id="n0_r1a9" name="listCard" xy="27,415" size="923,657" layout="flow_hz" overflow="scroll" lineGap="21" colGap="20" defaultItem="ui://mfvz4q8kr1a99f" autoClearItems="true">
       <item/>
       <item/>
       <item/>

+ 3 - 1
FGUIProject/assets/Main/StoryLevelInfoUI.xml

@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component size="1080,1160" designImageOffsetX="-750">
-  <controller name="ctrlNeed" pages="0,,1,,2," selected="0"/>
+  <controller name="ctrlNeed" pages="0,,1,,2," selected="1"/>
   <displayList>
     <image id="n2_vxw5" name="n2" src="j48o94" fileName="images/zx_jq_dituditu.png" xy="0,-153"/>
+    <loader id="n44_yoe2" name="btnBg" xy="0,-153" size="1080,1414" url="ui://mfvz4q8kj48o94" autoSize="true"/>
     <component id="n0_vxw5" name="btnStart" src="t8o13i" fileName="componentsLevel/ButtonStart.xml" xy="766,864">
       <Button title="开始旅程"/>
     </component>
@@ -49,5 +50,6 @@
       <item/>
     </list>
     <loader id="n37_d4iw" name="scoreType" xy="581,272" size="50,50" url="ui://eg2y0ldp842s6h" fill="scale"/>
+    <loader id="n43_yoe2" name="btnClose" xy="3,1305" size="1073,176"/>
   </displayList>
 </component>

+ 1 - 0
FGUIProject/assets/Main/components/comClickCircle.xml

@@ -14,6 +14,7 @@
   </transition>
   <transition name="t1">
     <item time="0" type="Alpha" target="n7_vuz5" value="1"/>
+    <item time="0" type="Visible" target="n12_vuz5" value="false"/>
     <item time="0" type="Visible" target="n7_vuz5" value="true"/>
     <item time="0" type="XY" target="n7_vuz5" tween="true" startValue="-7,-8" endValue="-7,-259" duration="12" ease="Linear"/>
     <item time="6" type="Alpha" target="n7_vuz5" tween="true" startValue="1" endValue="0" duration="6" ease="Linear"/>

+ 2 - 2
FGUIProject/assets/RechargeStore/RechargeStoreUI.xml

@@ -12,14 +12,14 @@
     <component id="n8_d4iw" name="n8" src="d4iwf" fileName="components/ButtonTab1.xml" xy="46,389">
       <Button title="钻石"/>
     </component>
-    <image id="n9_d4iw" name="n9" src="nz0tx" fileName="images/sc_rwrw.png" xy="358,496">
+    <image id="n9_d4iw" name="n9" src="nz0tx" fileName="images/sc_rwrw.png" xy="336,542">
       <relation target="" sidePair="right-right,bottom-bottom"/>
     </image>
     <list id="n10_d4iw" name="list" xy="0,534" size="685,1060" overflow="scroll" scrollBarFlags="128" lineGap="62" scrollItemToViewOnClick="false">
       <relation target="" sidePair="bottomext-bottom"/>
     </list>
     <component id="n12_nz0t" name="btn" src="nz0t14" fileName="components/Button1.xml" xy="391,215">
-      <Button controller="c1" page="0"/>
+      <Button checked="true" controller="c1" page="0"/>
     </component>
     <image id="n13_nz0t" name="n13" src="nz0t12" fileName="images/sc_zdyy_1.png" xy="0,1223">
       <relation target="" sidePair="bottom-bottom"/>

BIN
FGUIProject/assets/RechargeStore/images/sc_rwrw.png


+ 13 - 4
GameClient/Assets/Game/HotUpdate/Constant/ConstGuideId.cs

@@ -2,10 +2,19 @@ namespace GFGGame
 {
     public class ConstGuideId
     {
-        public const int CHAPTER_VIEW_BTN_HOME = 1;
-        public const int MAIN_UI_BTN_HUAN_ZHUANG = 2;
-        public const int MAIN_UI_BTN_ZHAI_XING = 3;
-        public const int LUCKY_BOX_VIEW_BTN_BACK = 4;
+        public const int SINGLE_FIGHT_GUIDE = 1;//单人战斗引导
+        public const int CLOTHING_SHOP_VIEW_BTN_BUY = 11; //引导购买必需品
+        public const int SEE_DRESS_TIPS = 12; //点击查看关卡提示
+        public const int TARGET_FIGHT_GUIDE = 13; //双人对战算分提示
+        public const int MAIN_UI_BTN_ZHAI_XING = 3;//引导摘星
+        public const int LUCKY_BOX_VIEW_BTN_BACK = 4;//引导摘星后引导返回主界面
+        public const int MAIN_UI_BTN_HUAN_ZHUANG = 2;//引导换装
+        public const int SUIT_SYNTHETIC_GUIDE = 14;//引导套装合成
+        public const int USE_CARD_FIGHT = 15;//引导使用卡牌战斗
+        public const int TIPS_TAGS_FIGHT = 16;//提示标签
+        public const int CARD_UP_STAR = 17;//词牌升星
+        public const int PHOTOGRAPH_GUIDE = 18;//引导拍照
+
         public const int MAIN_UI_BTN_STORY = 5;
         public const int CHAPTER_RESULT_VIEW = 6;
         public const int GET_SUIT_ITEM_VIEW_FULL = 7;

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -226,6 +226,7 @@ namespace GFGGame
                 StoryDataManager.currentChapter = 1;
                 if (!StoryDataManager.CheckLevelPass(1, 1))
                 {
+                    ViewManager.Show(ViewName.STORY_CHAPTER_VIEW, StoryDataManager.currentChapter, new object[] { ViewName.STORY_CHAPTER_LIST_VIEW });
                     StoryController.ShowLevelView(StoryDataManager.currentChapter, 1);
                 }
                 else

+ 563 - 27
GameClient/Assets/Game/HotUpdate/Controller/GuideController.cs

@@ -2,15 +2,18 @@ using FairyGUI;
 using UI.DressUp;
 using UI.Main;
 using System.Collections.Generic;
+using UnityEngine;
+using UI.ClothingSynthetic;
 
 namespace GFGGame
 {
     public class GuideController
     {
 
+        /*******************************************************单人战斗引导***********************************************/
         public static void TryGuideChapterViewLevelItem(GObject target, string guideStr = null)
         {
-            if (GuideDataManager.GetGuideCount(ConstGuideId.CHAPTER_VIEW_BTN_HOME) <= 0)
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
             {
                 if (guideStr == null)
                 {
@@ -22,7 +25,7 @@ namespace GFGGame
                         StoryLevelCfg storyLevelCfg = StoryLevelCfgArray.Instance.GetCfg(levelID);
                         if (storyLevelCfg.fightID != null && storyLevelCfg.fightID.Length > 0)
                         {
-                            guideStr = "点击关卡图标,继续挑战";
+                            guideStr = "遇到意外事件了,暂时解释不清,先按请求换上服饰吧";
                         }
                         else
                         {
@@ -34,13 +37,18 @@ namespace GFGGame
                         guideStr = "点击,继续";
                     }
                 }
+                GuideDataManager.currentGuideId = ConstGuideId.SINGLE_FIGHT_GUIDE;
                 ShowGuide(target, true, guideStr);
             }
+            else if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
+            {
+
+            }
         }
 
         public static void TryGuideChapterInfoViewBtnStart(GObject target, string guideStr = null)
         {
-            if (GuideDataManager.GetGuideCount(ConstGuideId.CHAPTER_VIEW_BTN_HOME) <= 0)
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
             {
                 if (guideStr == null)
                 {
@@ -50,7 +58,7 @@ namespace GFGGame
             }
         }
 
-        public static bool TryGuideDressUpFightViewMenuType1(GList list)
+        public static bool TryGuideDressUpFightViewMenuType0(GList list)
         {
             if (StoryDataManager.currentChapter == 1 && StoryDataManager.currentLevel <= 2
                 && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
@@ -65,7 +73,7 @@ namespace GFGGame
                         DressUpMenuItemCfg1 dressUpMenuItemCfg1 = DressUpMenuItemCfg1Array.Instance.GetCfg(menuID);
                         if (dressUpMenuItemCfg1.type == ConstDressUpItemType.LIAN_YI_QUN)
                         {
-                            ShowGuide(item.target, true, "点击分类图标,可查看对应类型的服装");
+                            ShowGuide(item.target, true, "点击相应的分类,可以快速找到服饰");
                             return true;
                         }
                     }
@@ -73,41 +81,212 @@ namespace GFGGame
             }
             return false;
         }
-
-        public static void TryGuideDressUpFightViewMenuPart(GList list)
+        public static void TryGuideDressUpFightViewMenuPart0(GList list, string guideStr)
         {
-            if (list.numChildren > 0)
+            if (StoryDataManager.currentChapter == 1 && StoryDataManager.currentLevel <= 2
+            && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
             {
-                UI_PartsListItem listItem = UI_PartsListItem.Proxy(list.GetChildAt(0));
-                if (listItem != null)
+                if (list.numChildren > 0)
                 {
-                    ShowGuide(listItem.target, true, "点击图标,换上新衣服吧");
-                    return;
+                    UI_PartsListItem listItem = UI_PartsListItem.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.target, true, guideStr);
+                        return;
+                    }
                 }
             }
         }
+        public static void TryGuideDressUpFightViewBtnNext0(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
+            {
+                ShowGuide(target, false, "接下来验证一下,换上的服饰是否符合需求");
+            }
+        }
 
-        public static void TryGuideDressUpFightViewBtnRecommend(GObject target)
+        public static void TryGuideSingleScoreViewComClickCircle(GObject target)
         {
-            if (GuideDataManager.GetGuideCount(ConstGuideId.CHAPTER_VIEW_BTN_HOME) <= 0
+
+            ShowGuide(target, false, "服饰比较繁琐,适当的整理会更加分,点击为各部位修整吧");
+        }
+
+        /*******************************************************引导购买必需品***********************************************/
+
+        public static void TryGuideDressUpFightViewBtnRecommend(GObject target, GList list)
+        {
+            _list = list;
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0
+                && StoryDataManager.currentLevel == 4
                 && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel)
                 && DressUpMenuItemDataManager.GetRecommendCount() >= 2)
             {
-                ShowGuide(target, false, "点击推荐搭配, 可快速换上目标属性最高的服装");
+                GuideDataManager.currentGuideId = ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY;
+                ShowGuide(target, false, "当提示有“必需品”时,需要穿上对应物品才能通关");
             }
         }
 
-
-        public static void TryGuideDressUpFightViewBtnNext(GObject target)
+        public static void TryGuideApproachOfItemViewList(GList list)
         {
-            if (GuideDataManager.GetGuideCount(ConstGuideId.CHAPTER_VIEW_BTN_HOME) <= 0
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0
+                && StoryDataManager.currentLevel == 4
                 && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel)
-                && EquipDataCache.cacher.CheckCurrentScoreEnough()
-                && EquipDataCache.cacher.CheckEquipedFightNeeded())
+                && DressUpMenuItemDataManager.GetRecommendCount() >= 2)
+            {
+                UI.CommonGame.UI_ApproachOfItemUI listItem = UI.CommonGame.UI_ApproachOfItemUI.Proxy(list.GetChildAt(0));
+                if (listItem != null)
+                {
+                    ShowGuide(listItem.target, false, "该物品可以在服装店购买,点开服装店看看");
+                }
+
+            }
+        }
+        public static void TryGuideClothingShopViewBtnBug(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0
+                 && StoryDataManager.currentLevel == 4
+                 && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel)
+                 && DressUpMenuItemDataManager.GetRecommendCount() >= 2)
+            {
+                ShowGuide(target, false, "找到需要的物品了,点击购买吧");
+            }
+        }
+        public static void TryGuideBuyCountViewBtnSure(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0
+                && StoryDataManager.currentLevel == 4
+                && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
+            {
+                ShowGuide(target, false, "点击购买");
+            }
+        }
+
+        public static void TryGuideClothingShopViewBtnBack(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0
+                && StoryDataManager.currentLevel == 4
+                && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
+            {
+                ShowGuide(target, false, "点击返回,回到换装");
+            }
+        }
+        private static GList _list;
+        public static bool TryGuideDressUpFightViewMenuType1()
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0
+               && StoryDataManager.currentLevel == 4
+               && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
+            {
+                int len = _list.numChildren;
+                for (int i = 0; i < len; i++)
+                {
+                    UI_comListType item = UI_comListType.Proxy(_list.GetChildAt(i));
+                    if (item != null)
+                    {
+                        int menuID = (int)item.target.data;
+                        DressUpMenuItemCfg1 dressUpMenuItemCfg1 = DressUpMenuItemCfg1Array.Instance.GetCfg(menuID);
+                        if (dressUpMenuItemCfg1.type == ConstDressUpItemType.LIAN_YI_QUN)
+                        {
+                            ShowGuide(item.target, true, "在相应分类里就可以找到必需品啦");
+                            _list = null;
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+        public static void TryGuideDressUpFightViewMenuPart1(GList list, string guideStr)
+        {
+            if (StoryDataManager.currentChapter == 1 && StoryDataManager.currentLevel == 4
+            && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
+            {
+                if (list.numChildren > 0)
+                {
+                    UI_PartsList listItem = UI_PartsList.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.target, true, guideStr);
+                        return;
+                    }
+                }
+            }
+        }
+
+        /***************************************************点击查看关卡提示***************************************************/
+        public static void TryGuideDressUpFightViewBtnHint(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SEE_DRESS_TIPS) <= 0
+                && StoryDataManager.currentLevel == 6
+                && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.SEE_DRESS_TIPS;
+                ShowGuide(target, false, "这次换装需要获得别人的认可呢");
+            }
+        }
+
+
+        /******************************************************双人对战评分************************************************/
+
+        public static void TryGuideStoryFightTargetScoreComCircle(GObject target, float devWidth, float devHeight)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.TARGET_FIGHT_GUIDE) <= 0
+                && StoryDataManager.currentLevel == 6
+                && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.TARGET_FIGHT_GUIDE;
+                ShowGuide(target, false, "这里可以观察双方的分数计算", 0, true, devWidth, devHeight);
+            }
+        }
+        public static void TryGuideStoryFightTargetScorebtnSkill0(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.TARGET_FIGHT_GUIDE) <= 0
+                && StoryDataManager.currentLevel == 6
+                && !StoryDataManager.CheckLevelPass(StoryDataManager.currentChapter, StoryDataManager.currentLevel))
             {
-                ShowGuide(target, false, "服装搭配好后,点击下一步,看看战果如何");
+                ShowGuide(target, false, "使用技能,可以增加胜出的几率哦,点击看看");
             }
         }
+        /*******************************************************引导抽奖***********************************************/
+        public static bool TryGuideGoBackStoryChapter(GObject target)
+        {
+            Debug.Log(StoryDataManager.CheckLevelPass(1, 10));
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) <= 0
+                && StoryDataManager.CheckLevelPass(1, 10)
+                && !StoryDataManager.CheckLevelPass(1, 11))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.MAIN_UI_BTN_ZHAI_XING;
+                ShowGuide(target, true, "点击返回主界面", 0);
+                return true;
+            }
+            return false;
+        }
+        public static bool TryGuideLuckyBox(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) <= 0
+                && StoryDataManager.CheckLevelPass(1, 10)
+                && !StoryDataManager.CheckLevelPass(1, 11))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.MAIN_UI_BTN_ZHAI_XING;
+                ShowGuide(target, false, "“摘星”里可以通过星辰的力量获得服饰");
+                return true;
+            }
+            return false;
+        }
+        public static bool TryGuideLuckyBoxStar()
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) <= 0
+                && StoryDataManager.CheckLevelPass(1, 10)
+                && !StoryDataManager.CheckLevelPass(1, 11))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.MAIN_UI_BTN_ZHAI_XING;
+                ShowGuide(null, false, "点击将星星链接在一起", 1400);
+                return true;
+            }
+            return false;
+        }
+        /*****************************************************引导自由换装保存套装*************************************************/
 
         public static bool TryGuideDressUpViewMenuType1(GList list)
         {
@@ -117,14 +296,14 @@ namespace GFGGame
                 list.ScrollToView(len - 1);
                 for (int i = 0; i < len; i++)
                 {
-                    UI_TypeItem item = UI_TypeItem.Proxy(list.GetChildAt(i));
+                    UI_comListType item = UI_comListType.Proxy(list.GetChildAt(i));
                     if (item != null)
                     {
                         int menuID = (int)item.target.data;
                         DressUpMenuItemCfg1 dressUpMenuItemCfg1 = DressUpMenuItemCfg1Array.Instance.GetCfg(menuID);
                         if (dressUpMenuItemCfg1.type == ConstDressUpItemType.TAO_ZHUANG)
                         {
-                            ShowGuide(item.target, true, "点击套装分类,可查看收集的套装");
+                            ShowGuide(item.target, true, "套装分类里,可以查看集齐成套的服饰");
                             return true;
                         }
                     }
@@ -139,17 +318,373 @@ namespace GFGGame
             {
                 if (list.numChildren > 0)
                 {
-                    UI_PartsListItem listItem = UI_PartsListItem.Proxy(list.GetChildAt(0));
+                    UI_PartsList listItem = UI_PartsList.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.target, true, "点击一键换上");
+                        return;
+                    }
+
+                }
+            }
+        }
+
+
+        /************************************************************引导合成套装*******************************************************/
+
+        public static void TryGuideStoryChapterView(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2)
+                && StoryDataManager.currentChapter == 2 && StoryDataManager.currentLevel <= 2)
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.SUIT_SYNTHETIC_GUIDE;
+                ShowGuide(target, false, "点击进行下一关");
+            }
+        }
+        public static void TryGuideStoryLevelInfoViewTxtNeed(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2)
+                && StoryDataManager.currentChapter == 2 && StoryDataManager.currentLevel <= 2)
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.SUIT_SYNTHETIC_GUIDE;
+                ShowGuide(target, false, "这次必需品,要通过合成获得", 0, true);
+            }
+        }
+        public static void TryGuideStoryLevelInfoView(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2)
+                && GuideDataManager.currentGuideId == ConstGuideId.SUIT_SYNTHETIC_GUIDE)
+            {
+                ShowGuide(target, false, "点击空白处关闭", 1400);
+            }
+        }
+        public static void TryGuideStoryChapterViewBtnHome(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+                ShowGuide(target, false, "先回到主界面", 0);
+            }
+        }
+        public static bool TryGuideMainUIViewBtnXiuFang(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2)
+            // && GuideDataManager.currentGuideId == ConstGuideId.SUIT_SYNTHETIC_GUIDE
+            )
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.SUIT_SYNTHETIC_GUIDE;
+                ShowGuide(target, false, "绣坊里增添了新功能", 0);
+                return true;
+            }
+            return false;
+
+        }
+        public static void TryGuideSuitSyntheticView(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+                ShowGuide(target, false, "这里可以查看已获得的服饰图谱", 0);
+            }
+        }
+        public static void TryGuideSuitSyntheticViewList(GList list)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+                if (list.numChildren > 0)
+                {
+                    UI_SuitListItem listItem = UI_SuitListItem.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.target, true, "查看已解锁的图谱");
+                        return;
+                    }
+
+                }
+            }
+        }
+        public static void TryGuideClothingSyntheticViewSuitList(GList list)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+                if (list.numChildren > 0)
+                {
+                    UI_MateriasListItem listItem = UI_MateriasListItem.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.m_loaderIcon, true, "找到需要合成的物品", 0, false);
+                        return;
+                    }
+
+                }
+            }
+        }
+        public static void TryGuideClothingSyntheticViewList(GList list)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+                if (list.numChildren > 0)
+                {
+                    UI_MateriasListItem listItem = UI_MateriasListItem.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.m_loaderIcon, true, "这里可以查看合成需要的材料,和材料的获取途径", 0, false);
+                        return;
+                    }
+
+                }
+            }
+        }
+        public static void TryGuideClothingSyntheticViewBtnProduction(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+
+                ShowGuide(target, true, "点击合成物品");
+
+            }
+        }
+        public static void TryGuideClothingSyntheticViewBtnHome(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 1)
+                && !StoryDataManager.CheckLevelPass(2, 2))
+            {
+                ShowGuide(target, true, "获得必需品啦,继续通关主线剧情吧");
+            }
+        }
+
+        /************************************************************引导使用卡牌战斗*******************************************************/
+        public static void TryGuideStoryCardChoose(GList list)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.USE_CARD_FIGHT) <= 0
+                && StoryDataManager.CheckLevelPass(2, 5)
+                && !StoryDataManager.CheckLevelPass(2, 6)
+                && StoryDataManager.currentChapter == 2 && StoryDataManager.currentLevel == 6)
+            {
+                if (list.numChildren > 0)
+                {
+                    UI_ListCardItem listItem = UI_ListCardItem.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        GuideDataManager.currentGuideId = ConstGuideId.USE_CARD_FIGHT;
+                        ShowGuide(listItem.target, true, "选择一张合适的词牌,增加过关战斗力");
+                        return;
+                    }
+
+                }
+            }
+        }
+        public static void TryGuideStoryCardChooseBtnConfirm(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.USE_CARD_FIGHT) <= 0
+                && StoryDataManager.CheckLevelPass(2, 5)
+                && !StoryDataManager.CheckLevelPass(2, 6))
+            {
+
+                ShowGuide(target, true, "点击确定进行战斗");
+            }
+        }
+        /*****************************************************************提示标签**************************************************/
+        public static void TryGuideStoryLevelInfoListTag(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.TIPS_TAGS_FIGHT) <= 0
+                && StoryDataManager.CheckLevelPass(2, 7)
+                && !StoryDataManager.CheckLevelPass(2, 8))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.TIPS_TAGS_FIGHT;
+                ShowGuide(target, true, "选择相应的关卡标签,可提高分数", 0, true);
+            }
+        }
+        /***********************************************************词牌升星********************************************************/
+        public static void TryGuideStoryLevelInfoBtnHome(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0
+                && StoryDataManager.CheckLevelPass(2, 14)
+                && !StoryDataManager.CheckLevelPass(2, 15))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.CARD_UP_STAR;
+                ShowGuide(target, true, "已经收集了足够的材料,可以给词牌升星了", 0, true);
+            }
+        }
+        public static void TryGuideMainUIViewBtnCiPai(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0
+               && StoryDataManager.CheckLevelPass(2, 14)
+                && !StoryDataManager.CheckLevelPass(2, 15))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.CARD_UP_STAR;
+                ShowGuide(target, true, "点击词牌", 0);
+            }
+        }
+
+        public static void TryGuideCardDetailViewList(GList list)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0
+                  && StoryDataManager.CheckLevelPass(2, 14)
+                && !StoryDataManager.CheckLevelPass(2, 15))
+            {
+                if (list.numChildren > 0)
+                {
+                    UI.Card.UI_ListCardItem listItem = UI.Card.UI_ListCardItem.Proxy(list.GetChildAt(0));
                     if (listItem != null)
                     {
-                        ShowGuide(listItem.target, true, "点击图标,可换上整套衣服");
+                        GuideDataManager.currentGuideId = ConstGuideId.CARD_UP_STAR;
+                        ShowGuide(listItem.target, true, "选择可升星的词牌", 0);
                         return;
                     }
 
                 }
+
+            }
+        }
+        public static void TryGuideCardFosterViewBtnStar(GObject target)
+        {
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0
+                && StoryDataManager.CheckLevelPass(2, 14)
+                && !StoryDataManager.CheckLevelPass(2, 15))
+            {
+
+                ShowGuide(target, true, "升满5星后,可解锁词牌的隐藏卡面哦", 0);
+            }
+        }
+        /***********************************************************引导拍照********************************************************/
+        // PHOTOGRAPH_GUIDE
+        public static bool TryGuideGoBackStoryChapter1(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 4)
+                && !StoryDataManager.CheckLevelPass(2, 5))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.PHOTOGRAPH_GUIDE;
+                ShowGuide(target, false, "拍照功能开启了,点击返回主界面", 0);
+                return true;
+            }
+            return false;
+        }
+        public static bool TryGuideOpenDressUpView(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 4)
+                && !StoryDataManager.CheckLevelPass(2, 5))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.PHOTOGRAPH_GUIDE;
+                ShowGuide(target, false, "点击进入自由换装", 0);
+                return true;
+            }
+            return false;
+        }
+        public static bool TryGuideDressUpViewMenuType2(GList list)
+        {
+            if (GuideDataManager.currentGuideId == ConstGuideId.PHOTOGRAPH_GUIDE)
+            {
+                int len = list.numChildren;
+                list.ScrollToView(len - 1);
+                for (int i = 0; i < len; i++)
+                {
+                    UI_comListType item = UI_comListType.Proxy(list.GetChildAt(i));
+                    if (item != null)
+                    {
+                        int menuID = (int)item.target.data;
+                        DressUpMenuItemCfg1 dressUpMenuItemCfg1 = DressUpMenuItemCfg1Array.Instance.GetCfg(menuID);
+                        if (dressUpMenuItemCfg1.type == ConstDressUpItemType.TAO_ZHUANG)
+                        {
+                            ShowGuide(item.target, true, "点击套装");
+                            return true;
+                        }
+                    }
+                }
             }
+            return false;
         }
+        public static void TryGuideDressUpViewMenuPart1(GList list)
+        {
+            if (GuideDataManager.currentGuideId == ConstGuideId.PHOTOGRAPH_GUIDE)
+            {
+                if (list.numChildren > 0)
+                {
+                    UI_PartsList listItem = UI_PartsList.Proxy(list.GetChildAt(0));
+                    if (listItem != null)
+                    {
+                        ShowGuide(listItem.target, true, "选择一套衣服换上");
+                        return;
+                    }
+                }
+            }
+        }
+        public static bool TryGuideOpenPhotographView(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 4)
+                && !StoryDataManager.CheckLevelPass(2, 5))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.PHOTOGRAPH_GUIDE;
+                ShowGuide(target, false, "换好衣服去试着拍张照片吧", 0);
+                return true;
+            }
+            return false;
+        }
+        public static bool TryGuideBtnPhotograph(GObject target)
+        {
+            if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 4)
+                && !StoryDataManager.CheckLevelPass(2, 5))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.PHOTOGRAPH_GUIDE;
+                ShowGuide(target, false, "摆好姿势可以拍照了", 0);
+                return true;
+            }
+            return false;
+        }
+        public static bool TryGuideBtnSave(GObject target)
+        {
 
+            if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0
+                && StoryDataManager.CheckLevelPass(2, 4)
+                && !StoryDataManager.CheckLevelPass(2, 5))
+            {
+                GuideDataManager.currentGuideId = ConstGuideId.PHOTOGRAPH_GUIDE;
+                ShowGuide(target, false, "拍照的照片记得保存到手机相册哦", 0);
+                return true;
+            }
+            return false;
+        }
+        /*******************************************************************************************************************/
         public static bool TryGuideByGuideId(GObject target, int guideId, int maxCount = 1, bool needUpdate = false, string guideStr = null, int yTxt = 0, int preGuideIdAtThisLogin = 0)
         {
             if (preGuideIdAtThisLogin > 0 && !GuideDataManager.CheckGuideIsCompletedAtThisLogin(preGuideIdAtThisLogin))
@@ -180,14 +715,15 @@ namespace GFGGame
             ViewManager.Hide(ViewName.GUIDE_VIEW);
         }
 
-        private static void ShowGuide(GObject target, bool needUpdate = false, string guideStr = null, int yTxt = 0)
+        private static void ShowGuide(GObject target, bool needUpdate = false, string guideStr = null, int yTxt = 0, bool isOptionalGuide = false, float devWidth = 0, float devHeight = 0)
         {
             HideGuide();
             if (GameGlobal.skipGuide)
             {
                 return;
             }
-            ViewManager.Show(ViewName.GUIDE_VIEW, new List<object> { target, needUpdate, guideStr, yTxt });
+            ViewManager.Show(ViewName.GUIDE_VIEW, new List<object> { target, needUpdate, guideStr, yTxt, isOptionalGuide, devWidth, devHeight
+});
         }
     }
 }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Data/Cache/LuckyBoxBonusDataCache.cs

@@ -65,7 +65,7 @@ namespace GFGGame
             List<ItemData> bonusList = null;
             if (isGuide)
             {
-                List<ItemData> guideBonusList = ItemUtil.CreateItemDataList("10003*1;10004*1;10006*1;10007*1");
+                List<ItemData> guideBonusList = ItemUtil.CreateItemDataList("10332*1;10334*1;10335*1;10336*1;10338*1");
                 count = count - guideBonusList.Count;
                 bonusList = DropOutDataCache.GetDropItemDatas(_dropOutId, count);
                 while (guideBonusList.Count > 1)

+ 100 - 0
GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs

@@ -0,0 +1,100 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class FunctionOpenDataManager : SingletonBase<FunctionOpenDataManager>
+    {
+        /// <summary>
+        /// 根据功能名检测功能是否开启
+        /// </summary>
+        /// <param name="viewName"></param>
+        /// <returns></returns>
+        public bool CheckIsFunOpenBgViewName(string viewName)
+        {
+            FunctionOpenCfg cfg = FunctionOpenCfgArray.Instance.GetCfg(viewName);
+            if (cfg == null)
+            {
+                // Debug.LogWarning("g功能.xlsx  功能开启_FunctionOpenCfg  未添加  " + viewName + "  的配置");
+                return true;//未配置功能开启的暂时默认开启
+            }
+            if (cfg.parentId != null && cfg.parentId != "")
+            {
+                //先检查父功能是否开启
+                CheckIsFunOpenBgViewName(cfg.parentId);
+            }
+            if (!CheckIsChapterFunOpen(cfg)) return false;
+            if (!CheckIsLvFunOpen(cfg)) return false;
+
+            return true;
+        }
+
+        /// <summary>
+        /// 根据章节Id检测是否有新功能开启
+        /// </summary>
+        public void CheckHasChapterFunOpen(int chapterId, int level)
+        {
+            FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray;
+            List<string> listCfg = new List<string>();
+            for (int i = 0; i < cfgs.Length; i++)
+            {
+                if (cfgs[i].show == 0) continue;
+                if (cfgs[i].chapterId != chapterId || cfgs[i].level != level || !CheckIsChapterFunOpen(cfgs[i], false)) continue;
+                if (!CheckIsLvFunOpen(cfgs[i], false)) continue;
+                listCfg.Add(cfgs[i].id);
+            }
+            if (listCfg.Count > 0)
+            {
+                ViewManager.Show<FunctionOpenView>(listCfg);
+            }
+        }
+        /// <summary>
+        /// 根据角色Lv检测是否有新功能开启
+        /// </summary>
+        public void CheckHasLvFunOpen(int lv)
+        {
+            FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray;
+            List<string> listCfg = new List<string>();
+            for (int i = 0; i < cfgs.Length; i++)
+            {
+                if (cfgs[i].show == 0) continue;
+                if (lv != cfgs[i].lv || !CheckIsLvFunOpen(cfgs[i], false)) continue;
+                if (!CheckIsChapterFunOpen(cfgs[i], false)) continue;
+                listCfg.Add(cfgs[i].id);
+            }
+            if (listCfg.Count > 0)
+            {
+                ViewManager.Show<FunctionOpenView>(listCfg);
+            }
+        }
+
+
+        //检测配置章节是否开启
+        private bool CheckIsChapterFunOpen(FunctionOpenCfg cfg, bool showTips = true)
+        {
+
+            if (cfg.chapterId > 0 && cfg.level <= 0 || cfg.level > 0 && cfg.chapterId <= 0)
+            {
+                if (showTips) PromptController.Instance.ShowFloatTextPrompt("功能暂未开启,敬请期待");
+                return false;
+            }
+            if (cfg.chapterId > 0 && StoryDataManager.CheckLevelPass(cfg.chapterId, cfg.level))
+            {
+                return true;
+            }
+            if (showTips) PromptController.Instance.ShowFloatTextPrompt("功能暂未开启,敬请期待");
+            return false;
+        }
+
+        //检测配置角色是否开启
+        private bool CheckIsLvFunOpen(FunctionOpenCfg cfg, bool showTips = true)
+        {
+            if (RoleDataManager.lvl >= cfg.lv)
+            {
+                return true;
+            }
+            if (showTips) PromptController.Instance.ShowFloatTextPrompt("功能暂未开启,敬请期待");
+            return false;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1a3e219bad8a8a342bb6b0bf9ee74500
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 10 - 10
GameClient/Assets/Game/HotUpdate/Data/GuideDataManager.cs

@@ -6,7 +6,7 @@ namespace GFGGame
     public class GuideDataManager
     {
         public static int currentGuideId;
-        private static Dictionary<int, GuideData> _dataDic = new Dictionary<int, GuideData>(); 
+        private static Dictionary<int, GuideData> _dataDic = new Dictionary<int, GuideData>();
         //本次登录引导的id缓存
         private static Dictionary<int, bool> _guideDicAtThisLogin = new Dictionary<int, bool>();
 
@@ -15,9 +15,9 @@ namespace GFGGame
             currentGuideId = 0;
             _dataDic.Clear();
             _guideDicAtThisLogin.Clear();
-            if(list != null)
+            if (list != null)
             {
-                foreach(GuideData data in list)
+                foreach (GuideData data in list)
                 {
                     _dataDic.Add(data.guideId, data);
                 }
@@ -26,14 +26,14 @@ namespace GFGGame
 
         public static bool TryCompleteGuide(int guideId)
         {
-            if(GameGlobal.skipGuide)
+            if (GameGlobal.skipGuide)
             {
                 return false;
             }
-            if(currentGuideId == guideId)
+            if (currentGuideId == guideId)
             {
                 GuideData guideData = null;
-                if(_dataDic.ContainsKey(guideId))
+                if (_dataDic.ContainsKey(guideId))
                 {
                     guideData = _dataDic[guideId];
                 }
@@ -44,7 +44,7 @@ namespace GFGGame
                     guideData.count = 0;
                     _dataDic.Add(guideId, guideData);
                 }
-                guideData.count ++;
+                guideData.count++;
                 currentGuideId = 0;
                 GameProxy.ReqUpdateRoleGuide(guideData);
                 _guideDicAtThisLogin[guideId] = true;
@@ -55,17 +55,17 @@ namespace GFGGame
 
         public static int GetGuideCount(int guideId)
         {
-            if(_dataDic.ContainsKey(guideId))
+            if (_dataDic.ContainsKey(guideId))
             {
                 GuideData guideData = _dataDic[guideId];
                 return guideData.count;
             }
             return 0;
         }
-        
+
         public static bool CheckGuideIsCompletedAtThisLogin(int guideId)
         {
-            if(_guideDicAtThisLogin.ContainsKey(guideId))
+            if (_guideDicAtThisLogin.ContainsKey(guideId))
             {
                 return _guideDicAtThisLogin[guideId];
             }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Data/PhotographDataManager.cs

@@ -71,7 +71,7 @@ namespace GFGGame
             for (int i = 0; i < EquipDataCache.cacher.equipDatas.Length; i++)
             {
                 ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(EquipDataCache.cacher.equipDatas[i]);
-                if (itemCfg.subType == ConstDressUpItemType.QIAN_JING || itemCfg.subType == ConstDressUpItemType.BEI_SHI || itemCfg.subType == ConstDressUpItemType.HUAN_JING)
+                if (itemCfg.subType == ConstDressUpItemType.QIAN_JING || itemCfg.subType == ConstDressUpItemType.BEI_SHI || itemCfg.subType == ConstDressUpItemType.HUAN_JING || itemCfg.subType == ConstDressUpItemType.FEN_WEI)
                 {
                     PhotographDataManager.Instance.AddEquipItem(_equipSceneData, itemCfg.id, out _equipSceneData);
                 }

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Data/RoleDataManager.cs

@@ -96,6 +96,7 @@ namespace GFGGame
                     while (exp >= roleLevelCfg.exp)
                     {
                         lvl++;
+                        FunctionOpenDataManager.Instance.CheckHasLvFunOpen(lvl);//等级变化要加测是否有功能开启
                         exp -= roleLevelCfg.exp;
                         roleLevelCfg = RoleLevelCfgArray.Instance.GetCfg(lvl);
                     }

+ 53 - 7
GameClient/Assets/Game/HotUpdate/Data/SkillDataManager.cs

@@ -12,7 +12,7 @@ namespace GFGGame
         public const string SKILL_BREAK = "break";
         public const string SKILL_SHIELD = "shield";
 
-        public Dictionary<int, SkillData> skillData = new Dictionary<int, SkillData>();
+        public Dictionary<int, Dictionary<int, SkillData>> skillData = new Dictionary<int, Dictionary<int, SkillData>>();
 
         public void Clear()
         {
@@ -25,21 +25,33 @@ namespace GFGGame
             {
                 foreach (SkillData skillData in skillDatas)
                 {
-                    this.skillData.Add(skillData.id, skillData);
+                    if (!this.skillData.ContainsKey(skillData.cardId))
+                    {
+                        this.skillData[skillData.cardId] = new Dictionary<int, SkillData>();
+                    }
+                    // if(!this.skillData[skillData.cardId].ContainsKey(skillData.skillId)){
+
+                    // }this.skillData[skillData.cardId][skillData.skillId]=
+                    this.skillData[skillData.cardId][skillData.skillId] = skillData;
                 }
             }
         }
 
-        public void UpSkill(int skillId)
+        public void UpSkill(int cardId, int skillId)
         {
-            if (!skillData.ContainsKey(skillId))
+            if (!this.skillData.ContainsKey(cardId))
+            {
+                this.skillData[cardId] = new Dictionary<int, SkillData>();
+            }
+            if (!this.skillData[cardId].ContainsKey(skillId))
             {
                 SkillData skillData = new SkillData();
-                skillData.id = skillId;
+                skillData.cardId = cardId;
+                skillData.skillId = skillId;
                 skillData.lv = 1;
-                this.skillData.Add(skillId, skillData);
+                this.skillData[cardId][skillId] = skillData;
             }
-            skillData[skillId].lv += 1;
+            skillData[cardId][skillId].lv += 1;
             EventAgent.DispatchEvent(ConstMessage.CARD_UP_SKILL);
         }
 
@@ -57,5 +69,39 @@ namespace GFGGame
             }
             return npcSkillDic;
         }
+
+        public CardSkillCfg GetCardSkillCfg(int cardId, int skillId)
+        {
+            CardSkillCfg[] cardSkillCfgs = CardSkillCfgArray.Instance.GetCfgs(cardId);
+            CardSkillCfg cardSkillCfg = null;
+            for (int i = 0; i < cardSkillCfgs.Length; i++)
+            {
+                if (cardSkillCfgs[i].skillId == skillId)
+                {
+                    cardSkillCfg = cardSkillCfgs[i];
+                }
+            }
+            return cardSkillCfg;
+        }
+
+        public PassivitySkillCfg GetPassivitySkillCfg(int cardId, int skillId)
+        {
+            PassivitySkillCfg[] passivitySkillCfgs = PassivitySkillCfgArray.Instance.GetCfgs(cardId);
+            PassivitySkillCfg passivitySkillCfg = null;
+            for (int i = 0; i < passivitySkillCfgs.Length; i++)
+            {
+                if (passivitySkillCfgs[i].skillId == skillId)
+                {
+                    passivitySkillCfg = passivitySkillCfgs[i];
+                }
+            }
+            return passivitySkillCfg;
+        }
+
+        public SkillData GetSkillData(int cardId, int skillId)
+        {
+            SkillData skillData = SkillDataManager.Instance.skillData.ContainsKey(cardId) && SkillDataManager.Instance.skillData[cardId].ContainsKey(skillId) ? SkillDataManager.Instance.skillData[cardId][skillId] : null;
+            return skillData;
+        }
     }
 }

+ 7 - 4
GameClient/Assets/Game/HotUpdate/Data/StoryDataManager.cs

@@ -14,8 +14,8 @@ namespace GFGGame
         public static int currentScoreType;
         public static int currentCardId;
         public static bool usedRecommend;
-        private static int _passChapter = 0;
-        private static int _passLevel = 0;
+        public static int _passChapter = 0;
+        public static int _passLevel = 0;
         private static int _passChapterJY = 10000;
         private static int _passLevelJY = 0;
         private static int _recommendCount = 0;
@@ -202,7 +202,7 @@ namespace GFGGame
 
         public static bool CheckOpenMainUI()
         {
-            return CheckLevelPass(1, 4) && GuideDataManager.GetGuideCount(ConstGuideId.CHAPTER_VIEW_BTN_HOME) > 0;
+            return CheckLevelPass(1, 4) && GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) > 0;
         }
 
         //检查指定章节对应的普通章节是否通关
@@ -393,12 +393,14 @@ namespace GFGGame
             return _passLevel;
         }
 
-        public static List<ItemData> PassCurrentLevel(out bool fistPassLastLvl)
+        public static List<ItemData> PassCurrentLevel(out bool fistPassLastLvl, out bool curLvfirstPass)
         {
             fistPassLastLvl = false;
+            curLvfirstPass = false;
             List<ItemData> currentBonusList = new List<ItemData>();
             if (!CheckCurrentLevelPass())
             {
+                curLvfirstPass = true;
                 int tempPassLevel = currentLevel;
                 int tempPassChapter = GetPassChapter(currentChapter);
                 int nextLevel = currentLevel + 1;
@@ -411,6 +413,7 @@ namespace GFGGame
                     fistPassLastLvl = true;
                 }
                 SetPassData(tempPassChapter, tempPassLevel);
+                // FunctionOpenDataManager.Instance.CheckHasChapterFunOpen(_passChapter + 1, _passLevel);//首次通过要检查是否有功能开启
                 GameProxy.ReqUpdateStoryProgress(_passChapter, _passLevel, _passChapterJY, _passLevelJY);
                 currentBonusList = StoryBonusDataCache.GetBonusList(currentLevelID, true, true);
             }

+ 2 - 1
GameClient/Assets/Game/HotUpdate/Data/VO/SkillData.cs

@@ -4,7 +4,8 @@ namespace GFGGame
 {
     public class SkillData
     {
-        public int id;
+        public int cardId;
+        public int skillId;
         public int lv;
     }
     public class BuffData

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingSynthetic/UI_ClothingSyntheticUI.cs

@@ -10,6 +10,7 @@ namespace UI.ClothingSynthetic
         public GLoader m_bg;
         public UI_Component1 m_compHolder;
         public GButton m_btnBack;
+        public GButton m_btnHome;
         public GComponent m_valueBar;
         public GTextField m_txtSuitName;
         public UI_CompItemInfo m_compItemInfo;
@@ -68,6 +69,7 @@ namespace UI.ClothingSynthetic
             m_bg = (GLoader)comp.GetChild("bg");
             m_compHolder = (UI_Component1)UI_Component1.Create(comp.GetChild("compHolder"));
             m_btnBack = (GButton)comp.GetChild("btnBack");
+            m_btnHome = (GButton)comp.GetChild("btnHome");
             m_valueBar = (GComponent)comp.GetChild("valueBar");
             m_txtSuitName = (GTextField)comp.GetChild("txtSuitName");
             m_compItemInfo = (UI_CompItemInfo)UI_CompItemInfo.Create(comp.GetChild("compItemInfo"));
@@ -83,6 +85,7 @@ namespace UI.ClothingSynthetic
             m_compHolder.Dispose();
             m_compHolder = null;
             m_btnBack = null;
+            m_btnHome = null;
             m_valueBar = null;
             m_txtSuitName = null;
             m_compItemInfo.Dispose();

+ 77 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_ComFunctionOpen.cs

@@ -0,0 +1,77 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.CommonGame
+{
+    public partial class UI_ComFunctionOpen
+    {
+        public GComponent target;
+        public GLoader m_logIcon;
+        public GTextField m_txtTitle;
+        public GTextField m_txtName;
+        public const string URL = "ui://eg2y0ldpeiwu9v";
+        public const string PACKAGE_NAME = "CommonGame";
+        public const string RES_NAME = "ComFunctionOpen";
+        private static UI_ComFunctionOpen _proxy;
+
+        public static UI_ComFunctionOpen Create(GObject gObject = null)
+        {
+            var ui = new UI_ComFunctionOpen();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComFunctionOpen Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComFunctionOpen();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_logIcon = (GLoader)comp.GetChild("logIcon");
+            m_txtTitle = (GTextField)comp.GetChild("txtTitle");
+            m_txtName = (GTextField)comp.GetChild("txtName");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_logIcon = null;
+            m_txtTitle = null;
+            m_txtName = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_ComFunctionOpen.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 446d60702a1de23408acbfeeee3502fc
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 75 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_FunctionOpenUI.cs

@@ -0,0 +1,75 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.CommonGame
+{
+    public partial class UI_FunctionOpenUI
+    {
+        public GComponent target;
+        public UI_ComFunctionOpen m_ComFunctionOpen;
+        public Transition m_t0;
+        public const string URL = "ui://eg2y0ldpg3nf9r";
+        public const string PACKAGE_NAME = "CommonGame";
+        public const string RES_NAME = "FunctionOpenUI";
+        private static UI_FunctionOpenUI _proxy;
+
+        public static UI_FunctionOpenUI Create(GObject gObject = null)
+        {
+            var ui = new UI_FunctionOpenUI();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_FunctionOpenUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_FunctionOpenUI();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_ComFunctionOpen = (UI_ComFunctionOpen)UI_ComFunctionOpen.Create(comp.GetChild("ComFunctionOpen"));
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_ComFunctionOpen.Dispose();
+            m_ComFunctionOpen = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_FunctionOpenUI.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f2f531e278d82f64bad6f13689887eb4
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_StoryLevelInfoUI.cs

@@ -8,6 +8,7 @@ namespace UI.Main
     {
         public GComponent target;
         public Controller m_ctrlNeed;
+        public GLoader m_btnBg;
         public GButton m_btnStart;
         public GTextField m_txtTitle;
         public GTextField m_txtHighestScore;
@@ -25,6 +26,7 @@ namespace UI.Main
         public UI_CompFlower1 m_flower;
         public GList m_listBonus;
         public GLoader m_scoreType;
+        public GLoader m_btnClose;
         public const string URL = "ui://mfvz4q8kvxw538";
         public const string PACKAGE_NAME = "Main";
         public const string RES_NAME = "StoryLevelInfoUI";
@@ -73,6 +75,7 @@ namespace UI.Main
         private void Init(GComponent comp)
         {
             m_ctrlNeed = comp.GetController("ctrlNeed");
+            m_btnBg = (GLoader)comp.GetChild("btnBg");
             m_btnStart = (GButton)comp.GetChild("btnStart");
             m_txtTitle = (GTextField)comp.GetChild("txtTitle");
             m_txtHighestScore = (GTextField)comp.GetChild("txtHighestScore");
@@ -90,10 +93,12 @@ namespace UI.Main
             m_flower = (UI_CompFlower1)UI_CompFlower1.Create(comp.GetChild("flower"));
             m_listBonus = (GList)comp.GetChild("listBonus");
             m_scoreType = (GLoader)comp.GetChild("scoreType");
+            m_btnClose = (GLoader)comp.GetChild("btnClose");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_ctrlNeed = null;
+            m_btnBg = null;
             m_btnStart = null;
             m_txtTitle = null;
             m_txtHighestScore = null;
@@ -112,6 +117,7 @@ namespace UI.Main
             m_flower = null;
             m_listBonus = null;
             m_scoreType = null;
+            m_btnClose = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 3 - 1
GameClient/Assets/Game/HotUpdate/Views/Card/CardDetailView.cs

@@ -54,6 +54,8 @@ namespace GFGGame
             _ui.m_listRole.selectedIndex = this._selectType;
             _ui.m_listRole.numItems = listRoleCount;
             this.UpdateCardList(_ui.m_listRole.selectedIndex);
+            GuideController.TryGuideCardDetailViewList(_ui.m_listCard);
+
         }
         private void UpdateCardList(int rarity = 0)
         {
@@ -130,7 +132,7 @@ namespace GFGGame
 
         private void OnClickBtnHome()
         {
-            //GuideController.TryCompleteGuide(ConstGuideId.CHAPTER_VIEW_BTN_HOME);
+            GuideController.TryCompleteGuide(ConstGuideId.SUIT_SYNTHETIC_GUIDE);
             GameController.GoBackToMainView();
             this.Clear();
 

+ 7 - 3
GameClient/Assets/Game/HotUpdate/Views/Card/CardFosterView.cs

@@ -104,6 +104,8 @@ namespace GFGGame
             this.UpdateUpLvView();
             _comFosterBottom.m_ctrlTab.selectedIndex = this._selectTab;
             EventAgent.AddEventListener(ConstMessage.MONEY_CHANGE, UpdateUpStarView);
+            GuideController.TryGuideCardFosterViewBtnStar(_ui.m_ComFosterBottom.m_btnStar);
+
         }
 
         private void UpdateNormal()
@@ -587,16 +589,16 @@ namespace GFGGame
             item.m_txtName.text = skillScoreCfg.name;
 
             CardSkillCfg[] skillCfgs = CardSkillCfgArray.Instance.GetCfgs(skillScoreCfg.skillId);
-            SkillData skillData = SkillDataManager.Instance.skillData.ContainsKey(skillScoreCfg.skillId) ? SkillDataManager.Instance.skillData[skillScoreCfg.skillId] : null;
+            SkillData skillData = SkillDataManager.Instance.skillData.ContainsKey(skillScoreCfg.id) && SkillDataManager.Instance.skillData[skillScoreCfg.skillId].ContainsKey(skillScoreCfg.skillId) ? SkillDataManager.Instance.skillData[skillScoreCfg.id][skillScoreCfg.skillId] : null;
             int lv = skillData == null ? 1 : skillData.lv;
             item.m_txtLv.text = string.Format("{0}级", lv);
             item.m_btnUp.visible = lv == skillCfgs.Length ? false : true;
             if (item.m_btnUp.data == null)
             {
-                item.m_btnUp.data = skillScoreCfg;
+                // item.m_btnUp.data = skillScoreCfg;
                 item.m_btnUp.onClick.Add(() =>
                 {
-                    ViewManager.Show<CardSkillView>(item.m_btnUp.data);
+                    ViewManager.Show<CardSkillView>(new object[] { skillScoreCfg.id, skillScoreCfg.skillId });
                 });
             }
         }
@@ -656,6 +658,8 @@ namespace GFGGame
             else if (_comFosterBottom.m_ctrlTab.selectedIndex == 1)
             {
                 this.UpdateUpStarView();
+                GuideController.HideGuide();
+                GuideController.TryCompleteGuide(ConstGuideId.CARD_UP_STAR);
             }
             else
             {

+ 15 - 6
GameClient/Assets/Game/HotUpdate/Views/Card/CardSkillView.cs

@@ -5,8 +5,12 @@ namespace GFGGame
     public class CardSkillView : BaseWindow
     {
         private UI_CardSkillUI _ui;
-        private PassivitySkillCfg _viewData;
+        // private PassivitySkillCfg _viewData;
+        private int _cardId;
+        private int _skillId;
 
+        private CardSkillCfg cardSkillCfg;
+        private PassivitySkillCfg passivitySkillCfg;
         public override void Dispose()
         {
             base.Dispose();
@@ -30,17 +34,22 @@ namespace GFGGame
         {
             base.OnShown();
 
-            _viewData = (PassivitySkillCfg)viewData;
-            _ui.m_txtName.text = _viewData.name;
+            _cardId = (int)(viewData as object[])[0];
+            _skillId = (int)(viewData as object[])[1];
+            cardSkillCfg = SkillDataManager.Instance.GetCardSkillCfg(_cardId, _skillId);
+            passivitySkillCfg = SkillDataManager.Instance.GetPassivitySkillCfg(_cardId, _skillId);
+
+            _ui.m_txtName.text = passivitySkillCfg.name;
+            UpdateView();
         }
         private void UpdateView()
         {
             _ui.m_c1.selectedIndex = 0;
 
-            SkillData skillData = SkillDataManager.Instance.skillData.ContainsKey(_viewData.skillId) ? SkillDataManager.Instance.skillData[_viewData.skillId] : null;
+            SkillData skillData = SkillDataManager.Instance.GetSkillData(_cardId, _skillId);
             int lv = skillData == null ? 1 : skillData.lv;
             UpdateComLv(_ui.m_comCurLV, lv, lv + "级");
-            if (skillData != null && skillData.lv == PassivitySkillCfgArray.Instance.GetCfgs(_viewData.id).Length) //已满级
+            if (skillData != null && skillData.lv == PassivitySkillCfgArray.Instance.GetCfgs(_cardId).Length) //已满级
             {
                 _ui.m_c1.selectedIndex = 1;
                 return;
@@ -51,7 +60,7 @@ namespace GFGGame
         private void UpdateComLv(UI_ComSkillDiscribe com, int lv, string title)
         {
             com.m_txtLv.text = title;
-            com.m_txtDiscribe.text = CardSkillCfgArray.Instance.GetCfgs(_viewData.skillId)[lv - 1].describe;
+            com.m_txtDiscribe.text = cardSkillCfg.describe;
 
         }
         private void RenderListStarConsumeItem(int index, GObject obj)

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Views/Card/CardView.cs

@@ -34,6 +34,8 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
+            // GuideController.TryGuideCardViewBtnDetail(_ui.m_loaDetail);
+
         }
         /*******************************************************¼àÌýº¯Êý**************************************************/
         private void OnClickBtnBack()

+ 15 - 5
GameClient/Assets/Game/HotUpdate/Views/ClothingShop/ClothingShopView.cs

@@ -7,7 +7,7 @@ using System;
 
 namespace GFGGame
 {
-    public class ClothingShopView : BaseWindow
+    public class ClothingShopView : BaseView
     {
         private const int SHOES_Y = 105;
         private const int HEAD_Y = 609;
@@ -55,7 +55,7 @@ namespace GFGGame
                 _dressUpObjDataCache = null;
             }
             _cfgSelected = null;
-            EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateCJGoodsCount);
+            EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateItemChange);
             base.Dispose();
 
         }
@@ -85,7 +85,7 @@ namespace GFGGame
 
             _ui.m_compItemInfo.m_listTag.itemRenderer = RenderListTagItem;
 
-            EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateCJGoodsCount);
+            EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateItemChange);
 
         }
 
@@ -154,6 +154,8 @@ namespace GFGGame
             {
                 _valueBarController.Controller(3);
             }
+
+            GuideController.TryGuideClothingShopViewBtnBug(_ui.m_compItemInfo.m_btnBuy);
         }
 
         protected override void OnHide()
@@ -174,16 +176,24 @@ namespace GFGGame
 
         private void OnClickBtnBack()
         {
+            GuideController.HideGuide();
             ViewManager.GoBackFrom(ViewName.CLOTHING_SHOP_VIEW);
-
             this.Hide();
+            GuideController.TryGuideDressUpFightViewMenuType1();
+
         }
 
         private void OnclickBtnBuy()
         {
+            GuideController.HideGuide();
             BuyItemConteoller.Show(_cfgSelected.itemID, _cfgSelected.costID, INIT_COUNT, _cfgSelected.costNum, INIT_COUNT, null, true, false, MAX_COUNT);
 
-            // ItemUtil.ExchangeItemById(_cfgSelected.itemID, INIT_COUNT, false, null, false, MAX_COUNT, false);
+        }
+        private void UpdateItemChange()
+        {
+            GuideController.TryGuideClothingShopViewBtnBack(_ui.m_btnBack);
+
+            UpdateCJGoodsCount();
         }
         private void UpdateCJGoodsCount()
         {

+ 41 - 10
GameClient/Assets/Game/HotUpdate/Views/ClothingSynthetic/ClothingSyntheticView.cs

@@ -28,9 +28,9 @@ namespace GFGGame
 
         private readonly int[] HEAD_Y_ARR = new int[] { ConstDressUpItemType.TOU_SHI, ConstDressUpItemType.ER_SHI, ConstDressUpItemType.JING_SHI, ConstDressUpItemType.ZHUANG_RONG };
         private readonly int[] FA_XING_Y_ARR = new int[] { ConstDressUpItemType.FA_XING };
-        private readonly int[] UPPER_BODY_Y_ARR = new int[] { ConstDressUpItemType.NEI_DA, ConstDressUpItemType.SHANG_YI};
-        private readonly int[] LOWER_BODY_Y_ARR = new int[] { ConstDressUpItemType.XIA_ZHUANG, ConstDressUpItemType.SHOU_SHI};
-        private readonly int[] SHOES_Y_ARR = new int[] { ConstDressUpItemType.WA_ZI, ConstDressUpItemType.XIE_ZI};
+        private readonly int[] UPPER_BODY_Y_ARR = new int[] { ConstDressUpItemType.NEI_DA, ConstDressUpItemType.SHANG_YI };
+        private readonly int[] LOWER_BODY_Y_ARR = new int[] { ConstDressUpItemType.XIA_ZHUANG, ConstDressUpItemType.SHOU_SHI };
+        private readonly int[] SHOES_Y_ARR = new int[] { ConstDressUpItemType.WA_ZI, ConstDressUpItemType.XIE_ZI };
 
         private UI_ClothingSyntheticUI _ui;
         private GameObject _scenePrefab;
@@ -47,7 +47,7 @@ namespace GFGGame
 
         public override void Dispose()
         {
-            if(_valueBarController != null)
+            if (_valueBarController != null)
             {
                 _valueBarController.Dispose();
                 _valueBarController = null;
@@ -74,6 +74,7 @@ namespace GFGGame
         protected override void OnInit()
         {
             base.OnInit();
+            packageName = UI_ClothingSyntheticListUI.PACKAGE_NAME;
             _ui = UI_ClothingSyntheticUI.Create();
             this.viewCom = _ui.target;
             isfullScreen = true;
@@ -95,6 +96,8 @@ namespace GFGGame
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
             _ui.m_listClothing.onClickItem.Add(OnClickListClothingItem);
             _ui.m_btnProduction.onClick.Add(OnClickBtnProcuction);
+            _ui.m_btnHome.onClick.Add(OnClickBtnHome);
+
         }
 
         protected override void OnShown()
@@ -104,6 +107,9 @@ namespace GFGGame
             _valueBarController.OnShown();
             UpdateClothingList(false);
             EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, OnItemNumChanged);
+
+            GuideController.TryGuideClothingSyntheticViewSuitList(_ui.m_listClothing);
+
         }
 
         protected override void OnHide()
@@ -130,11 +136,14 @@ namespace GFGGame
         private void OnClickListClothingItem(EventContext context)
         {
             UpdateSelectedItemInfo(context.data as GComponent, true);
+            GuideController.TryGuideClothingSyntheticViewList(_ui.m_listMaterias);
         }
 
         private void OnClickBtnProcuction()
         {
-            if(ItemDataManager.GetItemNum(_selectedItemId) > 0)
+            Timers.inst.AddUpdate(UpdateTryGuide);
+            // GuideController.HideGuide();
+            if (ItemDataManager.GetItemNum(_selectedItemId) > 0)
             {
                 PromptController.Instance.ShowFloatTextPrompt("不能制作已经拥有的物品!");
                 return;
@@ -163,12 +172,13 @@ namespace GFGGame
             }
             ItemDataManager.Add(_selectedItemId, 1);
             GetSuitItemController.TryShow(_selectedItemId);
+
         }
 
         private void ListClothingItemRender(int index, GObject item)
         {
             UI_ClothingListItem listItem = UI_ClothingListItem.Proxy(item);
-           int itemId = _items[index];
+            int itemId = _items[index];
             listItem.target.data = itemId;
             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
             listItem.m_loaderIcon.url = ResPathUtil.GetIconPath(itemCfg);
@@ -256,11 +266,11 @@ namespace GFGGame
                 if (_selectedItemId > 0)
                 {
                     int num = _ui.m_listClothing.numChildren;
-                    for(int i = 0; i < num; i++)
+                    for (int i = 0; i < num; i++)
                     {
                         listItem = UI_ClothingListItem.Proxy(_ui.m_listClothing.GetChildAt(i));
                         int temp = (int)listItem.target.data;
-                        if(temp == _selectedItemId)
+                        if (temp == _selectedItemId)
                         {
                             index = i;
                         }
@@ -299,10 +309,10 @@ namespace GFGGame
             _ui.m_txtCost.SetVar("v1", "" + clothingSyntheticCfg.costNum).SetVar("v2", costName).FlushVars();
             _materiarsOfSelectedItem = ItemUtil.CreateItemDataList(clothingSyntheticCfg.materiars);
             int count = _ui.m_listMaterias.numChildren;
-            for(int i = 0; i < count; i++)
+            for (int i = 0; i < count; i++)
             {
                 UI_MateriasListItem listItem = UI_MateriasListItem.Proxy(_ui.m_listMaterias.GetChildAt(i));
-                if(i < _materiarsOfSelectedItem.Count)
+                if (i < _materiarsOfSelectedItem.Count)
                 {
                     ItemData itemData = _materiarsOfSelectedItem[i];
                     ItemCfg materiasItemCfg = ItemCfgArray.Instance.GetCfg(itemData.id);
@@ -316,6 +326,14 @@ namespace GFGGame
                     listItem.m_groupCount.target.onClick.Clear();
                     listItem.m_groupCount.target.onClick.Add(OnClickMateriasItemPlus);
                     listItem.target.data = itemData;
+
+                    if (i == 0)
+                    {
+                        listItem.m_loaderIcon.onClick.Add(() =>
+                        {
+                            GuideController.TryGuideClothingSyntheticViewBtnProduction(_ui.m_btnProduction);
+                        });
+                    }
                 }
                 else
                 {
@@ -354,5 +372,18 @@ namespace GFGGame
             _ui.m_txtProgress.SetVar("v2", "" + totalCount);
             _ui.m_txtProgress.FlushVars();
         }
+        private void OnClickBtnHome()
+        {
+            Timers.inst.Remove(UpdateTryGuide);
+            GuideController.TryCompleteGuide(ConstGuideId.SUIT_SYNTHETIC_GUIDE);
+            GameController.GoBackToMainView();
+        }
+        private void UpdateTryGuide(object param)
+        {
+            if (GRoot.inst.GetTopWindow() == this.viewCom)
+            {
+                GuideController.TryGuideClothingSyntheticViewBtnHome(_ui.m_btnHome);
+            }
+        }
     }
 }

+ 15 - 11
GameClient/Assets/Game/HotUpdate/Views/ClothingSynthetic/SuitSyntheticView.cs

@@ -39,6 +39,8 @@ namespace GFGGame
             UpdateSuitList();
 
             EventAgent.AddEventListener(ConstMessage.SUIT_BOX_STATUS_CHANGED, UpdateSuitBoxStatus);
+            GuideController.TryGuideSuitSyntheticViewList(_ui.m_listSuit);
+
         }
 
         protected override void OnHide()
@@ -59,7 +61,7 @@ namespace GFGGame
 
         private void UpdateSuitList()
         {
-            if(_suitListIds == null)
+            if (_suitListIds == null)
             {
                 _suitListIds = new List<int>();
             }
@@ -74,7 +76,7 @@ namespace GFGGame
                 string[] values = menuCfg.suitIds.Split(';');
                 foreach (string value in values)
                 {
-                    if(value.Length > 0)
+                    if (value.Length > 0)
                     {
                         int suitId = int.Parse(value);
                         if (suitId > 0)
@@ -103,22 +105,22 @@ namespace GFGGame
             bool haveSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitId);
             bool isLock = false;
             SuitSyntheticCfg suitSyntheticCfg = SuitSyntheticCfgArray.Instance.GetCfg(suitId);
-            if(suitSyntheticCfg.storyLevelId.Length > 0)
+            if (suitSyntheticCfg.storyLevelId.Length > 0)
             {
                 int chapter = 0;
                 int level = 0;
                 StoryUtil.GetStoryLevelId(suitSyntheticCfg.storyLevelId, out chapter, out level);
                 bool isLevelPass = StoryDataManager.CheckLevelPass(chapter, level);
-                if(!isLevelPass)
+                if (!isLevelPass)
                 {
                     isLock = true;
                     listItem.m_txtLockDesc.text = string.Format("通关第{0}章第{1}关", chapter, level);
                 }
             }
-            if(suitSyntheticCfg.preSuitId > 0)
+            if (suitSyntheticCfg.preSuitId > 0)
             {
                 bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitSyntheticCfg.preSuitId);
-                if(!hasPreSuit)
+                if (!hasPreSuit)
                 {
                     isLock = true;
                     string preSuitName = SuitUtil.GetSuitName(suitSyntheticCfg.preSuitId);
@@ -129,13 +131,15 @@ namespace GFGGame
             listItem.target.data = suitId;
             UpdateSuitBoxStatusView(listItem);
             listItem.m_loaderBonusBox.onClick.Clear();
-            listItem.m_loaderBonusBox.onClick.Add(() => {
+            listItem.m_loaderBonusBox.onClick.Add(() =>
+            {
                 SuitUtil.ShowSuitSyntheticBonus(suitId);
             });
             listItem.m_bg.onClick.Clear();
-            listItem.m_bg.onClick.Add(() => {
-                if(!isLock)
-                { 
+            listItem.m_bg.onClick.Add(() =>
+            {
+                if (!isLock)
+                {
                     ViewManager.Show(ViewName.CLOTHING_SYNTHETIC_VIEW, suitId, new object[] { ViewName.SUIT_SYNTHETIC_LIST_VIEW, this.viewData });
                 }
             });
@@ -169,7 +173,7 @@ namespace GFGGame
             else
             {
                 listItem.m_loaderBonusBox.grayed = true;
-                if(status == ConstBonusStatus.GOT)
+                if (status == ConstBonusStatus.GOT)
                 {
                     listItem.m_iconGot.visible = true;
                 }

+ 4 - 1
GameClient/Assets/Game/HotUpdate/Views/CommonGame/ApproachOfItemView.cs

@@ -59,6 +59,8 @@ namespace GFGGame
                 _ui.m_txtNone.visible = true;
                 _ui.m_listApproach.height = 162;
             }
+
+            GuideController.TryGuideApproachOfItemViewList(_ui.m_listApproach);
         }
 
         protected override void OnHide()
@@ -92,6 +94,7 @@ namespace GFGGame
 
         private void OnClickListApproachItem(EventContext context)
         {
+            GuideController.HideGuide();
             GObject listItem = context.data as GObject;
             string[] infos = listItem.data as string[];
             string functionId = infos[0];
@@ -99,7 +102,7 @@ namespace GFGGame
             {
                 case ConstFunctionId.FU_ZHUANG_DIAN:
                     this.Hide();
-                    ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, new object[] { null, null, _itemId });
+                    ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, new object[] { null, null, _itemId }, null, false, true);
                     break;
                 case ConstFunctionId.JU_QING_GUAN_QIA:
                     string value = infos[1];

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/CommonGame/BuyCountView.cs

@@ -77,6 +77,7 @@ namespace GFGGame
             base.OnShown();
             _ui.m_txtCount.text = "" + _count;
             UpdateView();
+            GuideController.TryGuideBuyCountViewBtnSure(_ui.m_btnSure);
         }
         private void UpdateView()
         {
@@ -244,14 +245,13 @@ namespace GFGGame
                 {
                     int buyCount = price / _perCostCount * _perCount;
                     ItemUtil.AddItemUseCost(_itemId, buyCount, _costId, price);
-
+                    // GuideController.HideGuide();
                     if (_onSuccess != null)
                     {
                         _onSuccess();
                     }
                     if (_showTips)
                     {
-
                         PromptController.Instance.ShowFloatTextPrompt("购买成功", MessageType.SUCCESS);
                     }
                 }
@@ -260,6 +260,7 @@ namespace GFGGame
             {
                 PromptController.Instance.ShowFloatTextPrompt("购买异常", MessageType.ERR);
             }
+
             this.Hide();
         }
 

+ 70 - 0
GameClient/Assets/Game/HotUpdate/Views/CommonGame/FunctionOpenView.cs

@@ -0,0 +1,70 @@
+using UnityEngine;
+using FairyGUI;
+using UI.CommonGame;
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class FunctionOpenView : BaseWindow
+    {
+        private UI_FunctionOpenUI _ui;
+        List<string> _funList = new List<string>();
+
+        public override void Dispose()
+        {
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_FunctionOpenUI.PACKAGE_NAME;
+            _ui = UI_FunctionOpenUI.Create();
+            this.viewCom = _ui.target;
+            isfullScreen = true;
+            this.viewCom.Center();
+
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+            List<string> funList = (viewData as object) as List<string>;
+            AddFunDatas(funList);
+            UpdateFunIcon();
+            // _ui.m_t0.Play(UpdateFunIcon);
+            // Timers.inst.Remove(UpdateFunIcon);
+            // Timers.inst.Add(1.5f, _funList.Count, UpdateFunIcon);
+        }
+
+        private void AddFunDatas(List<string> itemList)
+        {
+            for (int i = 0; i < itemList.Count; i++)
+            {
+                if (_funList.IndexOf(itemList[i]) < 0)
+                {
+                    _funList.Add(itemList[i]);
+                }
+            }
+        }
+        private void UpdateFunIcon()
+        {
+            if (_funList.Count == 0)
+            {
+                this.Hide();
+                return;
+            }
+            FunctionOpenCfg cfg = FunctionOpenCfgArray.Instance.GetCfg(_funList[0]);
+            _ui.m_ComFunctionOpen.m_txtName.text = cfg.name;
+            _ui.m_ComFunctionOpen.m_logIcon.url = ResPathUtil.GetCommonGameResPath(cfg.res);
+            _funList.RemoveAt(0);
+            _ui.m_t0.Play(UpdateFunIcon);
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/CommonGame/FunctionOpenView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9692fd8d862dc8146b3d7e0498d3120a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 9 - 8
GameClient/Assets/Game/HotUpdate/Views/CommonGame/GetSuitItemVIew.cs

@@ -14,14 +14,14 @@ namespace GFGGame
 
         public override void Dispose()
         {
-            if(_scenePrefab != null)
+            if (_scenePrefab != null)
             {
                 GameObject.Destroy(_scenePrefab);
                 _scenePrefab = null;
             }
             base.Dispose();
         }
-        
+
         protected override void OnInit()
         {
             base.OnInit();
@@ -43,16 +43,17 @@ namespace GFGGame
         protected override void OnHide()
         {
             base.OnHide();
-            if(_sceneObject != null)
+            if (_sceneObject != null)
             {
                 GameObject.Destroy(_sceneObject);
                 _sceneObject = null;
             }
-            if(_wrapper != null)
+            if (_wrapper != null)
             {
                 _wrapper.wrapTarget = null;
             }
-            Timers.inst.CallLater((object param) => {
+            Timers.inst.CallLater((object param) =>
+            {
                 GetSuitItemController.TryShow(0);
             });
             GuideController.HideGuide();
@@ -110,7 +111,7 @@ namespace GFGGame
                 SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
                 _ui.m_txtName.text = "套装·" + suitCfg.name;
                 int targetY = (int)(_ui.m_item.target.y + _ui.m_item.target.height + 50);
-                if(count == totalCount)
+                if (count == totalCount)
                 {
                     GuideController.TryGuideByGuideId(null, ConstGuideId.GET_SUIT_ITEM_VIEW_FULL, 1, false, "恭喜你,集齐了第一套套装,快去换装界面穿上试试吧!点击空白区域继续", targetY);
                 }
@@ -122,7 +123,7 @@ namespace GFGGame
             _ui.m_probar.max = totalCount;
             _ui.m_probar.value = count;
             UpdateItem(itemId);
-            if(_sceneObject != null)
+            if (_sceneObject != null)
             {
                 GameObject.Destroy(_sceneObject);
                 _sceneObject = null;
@@ -131,7 +132,7 @@ namespace GFGGame
             int scale = 70;
             _sceneObject.transform.localScale = new Vector3(scale, scale, scale);
             SceneController.UpdateRole(itemIds, _sceneObject);
-            if(_wrapper == null)
+            if (_wrapper == null)
             {
                 _wrapper = new GoWrapper(_sceneObject);
                 _ui.m_holder.SetNativeObject(_wrapper);

+ 29 - 7
GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpFightView.cs

@@ -92,6 +92,7 @@ namespace GFGGame
 
             EventAgent.AddEventListener(ConstMessage.DRESS_FILTER, UpdatePartsListSort);
             EventAgent.AddEventListener(ConstMessage.DRESS_SEARCH, UpdatePartsListSort);
+            // EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdatePartsListSort);
             EventAgent.AddEventListener(ConstMessage.CARD_CHOOSE, StartCalculateScore);
         }
 
@@ -151,10 +152,18 @@ namespace GFGGame
             }
             UpdateScore();
             EventAgent.AddEventListener(ConstMessage.DRESS_UP_SCORE_CHANGED, UpdateScore);
-            _guideMenu = GuideController.TryGuideDressUpFightViewMenuType1(_ui.m_comListType1.m_listType);
-            if (!_guideMenu)
+
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
+            {
+                _guideMenu = GuideController.TryGuideDressUpFightViewMenuType0(_ui.m_comListType1.m_listType);
+            }
+            else if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0)
             {
-                GuideController.TryGuideDressUpFightViewBtnRecommend(_ui.m_btnRecommend);
+                GuideController.TryGuideDressUpFightViewBtnRecommend(_ui.m_compNeed.target, _ui.m_comListType1.m_listType);
+            }
+            else if (GuideDataManager.GetGuideCount(ConstGuideId.SEE_DRESS_TIPS) <= 0)
+            {
+                GuideController.TryGuideDressUpFightViewBtnHint(_ui.m_btnHint);
             }
         }
 
@@ -192,7 +201,7 @@ namespace GFGGame
         private void OnClickListType1Item(EventContext context)
         {
 
-            GuideController.HideGuide();
+            // GuideController.HideGuide();
             GObject typeItem = context.data as GObject;
             int order = (int)typeItem.data;
             DressUpMenuItemCfg1 item1 = DressUpMenuItemCfg1Array.Instance.dataArray[order - 1];
@@ -203,9 +212,14 @@ namespace GFGGame
             else
             {
                 this.showListParts(item1.type);
-                if (_guideMenu)
+
+                if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
                 {
-                    GuideController.TryGuideDressUpFightViewMenuPart(_ui.m_partsList.m_list);
+                    GuideController.TryGuideDressUpFightViewMenuPart0(_ui.m_partsList.m_list, "找到这条裙子了,换上看看吧");
+                }
+                else if (GuideDataManager.GetGuideCount(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY) <= 0)
+                {
+                    GuideController.TryGuideDressUpFightViewMenuPart1(_ui.m_partsList.m_list, "点击换上吧");
                 }
             }
             this.hideListType1();
@@ -235,7 +249,12 @@ namespace GFGGame
                 EquipDataCache.cacher.TryCancelSuit(id);
                 EquipDataCache.cacher.AddOrRemove(id, true);
                 UpdateListPartsSelected();
+
+                GuideController.TryGuideDressUpFightViewBtnNext0(_ui.m_btnNext);
+
             }
+            GuideController.TryCompleteGuide(ConstGuideId.CLOTHING_SHOP_VIEW_BTN_BUY);
+
         }
 
         private void OnTouchPad()
@@ -262,6 +281,8 @@ namespace GFGGame
         private void OnClickBtnHint()
         {
             this.ShowTaskHint();
+            GuideController.HideGuide();
+            GuideController.TryCompleteGuide(ConstGuideId.SEE_DRESS_TIPS);
         }
 
         private void OnClickBtnDelete()
@@ -576,7 +597,7 @@ namespace GFGGame
         private void UpdateScore()
         {
             _ui.m_txtScore.text = "" + EquipDataCache.cacher.score;
-            GuideController.TryGuideDressUpFightViewBtnNext(_ui.m_btnNext);
+            // GuideController.TryGuideDressUpFightViewBtnNext(_ui.m_btnNext);
         }
 
         private void OnClickBtnSearch()
@@ -616,6 +637,7 @@ namespace GFGGame
         }
         private void OnClickComNeed()
         {
+            GuideController.HideGuide();
             if (_fightCfg.needItemId <= 0 && _fightCfg.needSuitId <= 0)
             {
                 return;

+ 6 - 3
GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs

@@ -97,6 +97,7 @@ namespace GFGGame
             _ui.m_comboBox.selectedIndex = CustomSuitDataManager.currentIndex;
             EquipDataCache.cacher.PutOnCurrentSuitSaved();
             GuideController.TryGuideDressUpViewMenuType1(_ui.m_comListType1.m_listType);
+            GuideController.TryGuideDressUpViewMenuType2(_ui.m_comListType1.m_listType);
         }
 
         protected override void OnHide()
@@ -151,6 +152,7 @@ namespace GFGGame
             {
                 this.showListParts(item1.type);
                 GuideController.TryGuideDressUpViewMenuPart(_ui.m_partsList.m_list);
+                GuideController.TryGuideDressUpViewMenuPart1(_ui.m_partsList.m_list);
             }
             this.hideListType1();
         }
@@ -167,7 +169,8 @@ namespace GFGGame
 
         private void OnClickPartsListItem(EventContext context)
         {
-            GuideController.TryGuideByGuideId(_ui.m_btnSave, ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG, 1, false, "点击按钮,保存搭配后,可以在主界面显示哦");
+            GuideController.TryGuideByGuideId(_ui.m_btnSave, ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG, 1, false, "搭配好的服饰,可以保存随时查看");
+            GuideController.TryGuideOpenPhotographView(_ui.m_btnPhoto);
             GObject listItem = (GObject)context.data as GObject;
             int id = (int)listItem.data;
             if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
@@ -212,7 +215,7 @@ namespace GFGGame
         private void OnClickBtnSave()
         {
             GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG);
-            GuideController.TryGuideByGuideId(_ui.m_btnBack, ConstGuideId.DRESS_UP_VIEW_BTN_BACK, 1, false, "点击按钮,返回主界面", 0, ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG);
+            GuideController.TryGuideByGuideId(_ui.m_btnBack, ConstGuideId.DRESS_UP_VIEW_BTN_BACK, 1, false, "保存成功,回主界面看看吧", 0, ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG);
             CustomSuitDataManager.SaveCurrentSuit(_ui.m_comboBox.selectedIndex);
             PromptController.Instance.ShowFloatTextPrompt("保存成功", MessageType.SUCCESS);
         }
@@ -521,7 +524,7 @@ namespace GFGGame
         }
         private void OnClickBtnPhoto()
         {
-            // this.Hide();
+
             _ui.target.visible = false;
             this._sceneObject.gameObject.SetActive(false);
             ViewManager.Show<PhotographView>();

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographSaveView.cs

@@ -32,6 +32,8 @@ namespace GFGGame
             float height = width * tex.height / tex.width;
             _ui.m_imgRes.SetSize(width, height);
             _ui.m_imgBorder.SetSize(width, height + 12);
+            GuideController.TryGuideBtnSave(_ui.m_btnSave);
+
         }
 
         protected override void OnHide()
@@ -46,6 +48,7 @@ namespace GFGGame
 
         private void OnClickBtnSave()
         {
+            GuideController.TryCompleteGuide(ConstGuideId.PHOTOGRAPH_GUIDE);
             string path = Application.persistentDataPath + "/Pictures/WanshiJing/";
 
             //判断目录是否存在,不存在则会创建目录

+ 8 - 1
GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs

@@ -24,6 +24,7 @@ namespace GFGGame
         private const string BorderResPath = "Border/BorderRes";
         private const string NpcResPath = "Scene/Npc/NpcRes";
         private const string RolePath = "Scene/Role";
+        private const string RoleName = "Role";
         private const string NpcPath = "Scene/Npc";
         private const string BgResName = "BgRes";
         // private const string BorderResName = "BorderRes";
@@ -117,7 +118,7 @@ namespace GFGGame
             UpdateBg(ItemCfgArray.Instance.GetCfg(EquipDataCache.cacher.bgId));
             UpdateBody();
             UpdateScene();
-
+            GuideController.TryGuideBtnPhotograph(_ui.m_btnPhotograph);
         }
         /************************************************************UI界面*********************************************************/
         private void OnContorllerChanged(EventContext context)
@@ -458,6 +459,11 @@ namespace GFGGame
         private void OnTouchBtnFlipBegin()//翻转
         {
             Transform transform = memoryHitGameObj.transform;
+            if (memoryHitGameObj.name == RoleName)
+            {
+                transform.Rotate(Vector3.up, 180, Space.Self);
+                return;
+            }
             for (int i = 0; i < transform.childCount; i++)
             {
                 transform.GetChild(i).Rotate(Vector3.up, 180, Space.Self);
@@ -502,6 +508,7 @@ namespace GFGGame
         }
         private void OnClickBtnPhotograph()
         {
+            GuideController.HideGuide();
             _ui.target.visible = false;
             Timers.inst.StartCoroutine(ScreenShotTex());// ();
         }

+ 17 - 7
GameClient/Assets/Game/HotUpdate/Views/Guide/GuideView.cs

@@ -11,7 +11,9 @@ namespace GFGGame
         private UI_GuideUI _ui;
         private bool _needUpdate;
         private GObject guideTarget = null;
-
+        private float devWidth;
+        private float devHeight;
+        private bool isOptionalGuide = false;//弱引导,点击任意地方都可关闭
         public override void Dispose()
         {
             base.Dispose();
@@ -25,11 +27,16 @@ namespace GFGGame
             _ui = UI_GuideUI.Create();
             this.viewCom = _ui.target;
             this.clickBlankToClose = false;
+            // this.layer = ConstViewLayer.TOP;
             isfullScreen = true;
             _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Width);
             _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Height);
             _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Left_Left);
             _ui.m_rectFrame.target.AddRelation(_ui.m_mask.m_guideArea, RelationType.Top_Top);
+            _ui.target.onClick.Add(() =>
+            {
+                if (isOptionalGuide) this.Hide();
+            });
         }
 
         protected override void OnShown()
@@ -40,14 +47,17 @@ namespace GFGGame
             _needUpdate = (bool)dataList[1];
             string txtContent = (string)dataList[2];
             int yTxt = (int)dataList[3];
-            if(txtContent != null && txtContent.Length > 0)
+            isOptionalGuide = (bool)dataList[4];
+            devWidth = (float)dataList[5];
+            devHeight = (float)dataList[6];
+            if (txtContent != null && txtContent.Length > 0)
             {
                 _ui.m_compTxt.m_txt.text = txtContent;
-                if(this._ui.m_compTxt.m_txt.textHeight > this._ui.m_compTxt.m_txt.textFormat.size*2)
+                if (this._ui.m_compTxt.m_txt.textHeight > this._ui.m_compTxt.m_txt.textFormat.size * 2)
                 {
                     this._ui.m_compTxt.m_txt.align = AlignType.Left;
                 }
-                else 
+                else
                 {
                     this._ui.m_compTxt.m_txt.align = AlignType.Center;
                 }
@@ -91,9 +101,9 @@ namespace GFGGame
 
         private void UpdateGuideRect(object param = null)
         {
-            if(guideTarget != null)
+            if (guideTarget != null)
             {
-                Rect rect = guideTarget.TransformRect(new Rect(0, 0, guideTarget.width, guideTarget.height), _ui.target);
+                Rect rect = guideTarget.TransformRect(new Rect(0 + devWidth, devHeight, guideTarget.width, guideTarget.height), _ui.target);
                 _ui.m_mask.m_guideArea.size = new Vector2((int)rect.size.x, (int)rect.size.y);
                 _ui.m_mask.m_guideArea.position = new Vector2((int)rect.position.x, (int)rect.position.y);
                 int padding = 30;
@@ -107,7 +117,7 @@ namespace GFGGame
                     _ui.m_compTxt.target.y = _ui.m_mask.m_guideArea.y + _ui.m_mask.m_guideArea.height + padding;
                 }
                 int targetWidth = 20;
-                if(Mathf.Abs(_ui.m_rectFrameTemp.width - _ui.m_rectFrame.target.width) > targetWidth && Mathf.Abs(_ui.m_rectFrameTemp.height - _ui.m_rectFrame.target.height) > targetWidth)
+                if (Mathf.Abs(_ui.m_rectFrameTemp.width - _ui.m_rectFrame.target.width) > targetWidth && Mathf.Abs(_ui.m_rectFrameTemp.height - _ui.m_rectFrame.target.height) > targetWidth)
                 {
                     _ui.m_rectFrameTemp.visible = true;
                     float duration = 0.5f;

+ 15 - 15
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxStarView.cs

@@ -21,6 +21,8 @@ namespace GFGGame
 
         private const int checkDistance = 40;//鼠标靠近星星周围加减40都算选中星星
         private const int imgLineWidth = 10;//线的原始长度
+
+        private bool isGuide = false;
         public override void Dispose()
         {
             base.Dispose();
@@ -52,6 +54,8 @@ namespace GFGGame
         }
         private void ResetStartView()
         {
+            isGuide = GuideController.TryGuideLuckyBoxStar();
+
             curComStar = null;
             comStars.Clear();
             int index = 0;
@@ -111,6 +115,7 @@ namespace GFGGame
                     lastPos = Vector2.right;
 
                     comStars.RemoveAt(i);
+
                 }
                 else
                 {
@@ -139,24 +144,19 @@ namespace GFGGame
 
 
         }
-        //private async void OnClickUIEnd()
-        //{
-        //    if (curComStar != null)
-        //    {
-        //        if (curComStar != null)
-        //        {
-        //            await Task.Delay(1000);
-
-        //            RemoveListener();
-        //            ViewManager.Show(ViewName.LUCKY_BOX_CARD_VIEW, new object[] { _rewardList, 0 });
-        //            this.Hide();
-        //        }
-        //    }
-        //}
 
         private void OnClickUIEnd()
         {
-            Timers.inst.Add(0.3f, 1, ClickUIEnd);
+            if (isGuide && comStars.Count > 0)
+            {
+                ResetStartView();
+            }
+            else
+            {
+                Timers.inst.Add(0.3f, 1, ClickUIEnd);
+                GuideController.HideGuide();
+                GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_ZHAI_XING);
+            }
         }
         private void ClickUIEnd(object param)
         {

+ 34 - 8
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs

@@ -116,10 +116,14 @@ namespace GFGGame
             _ui.m_comCostOne.m_loaCost.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(luckyBoxCfg.costID).res);
             _ui.m_comCostTen.m_loaCost.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(luckyBoxCfg.costID).res);
 
-            if (!GuideController.TryGuideByGuideId(_ui.m_btnBuyTen, ConstGuideId.MAIN_UI_BTN_ZHAI_XING, 1, true, "点击按钮,开始抽奖,可以抽到好看的服装哦"))
-            {
-                GuideController.TryGuideByGuideId(_ui.m_btnBack, ConstGuideId.LUCKY_BOX_VIEW_BTN_BACK, 1, true, "点击按钮,返回主界面", 0, ConstGuideId.MAIN_UI_BTN_ZHAI_XING);
-            }
+            // if (!GuideController.TryGuideByGuideId(_ui.m_btnBuyTen, ConstGuideId.MAIN_UI_BTN_ZHAI_XING, 1, true, "点击按钮,开始抽奖,可以抽到好看的服装哦"))
+            // {
+            //     GuideController.TryGuideByGuideId(_ui.m_btnBack, ConstGuideId.LUCKY_BOX_VIEW_BTN_BACK, 1, true, "点击按钮,返回主界面", 0, ConstGuideId.MAIN_UI_BTN_ZHAI_XING);
+            // }
+            // if (GuideDataManager.GetGuideCount(ConstGuideId.LUCKY_BOX_VIEW_BTN_BACK) <= 0)
+            // {
+            Timers.inst.AddUpdate(UpdateToCheckGuide);
+            // }
             int count = LuckyBoxBonusDataCache.GetOwnedCount();
             _ui.m_txtOwned.SetVar("v1", "" + count).FlushVars();
 
@@ -180,12 +184,13 @@ namespace GFGGame
 
         private void OnClickBtnBuyTen()
         {
-            bool result = GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_ZHAI_XING);
+            // bool result = GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_ZHAI_XING);
             LuckyBoxCfg luckyBoxCfg = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxBonusDataCache.currentBoxId);
-            if (result)
+            if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) <= 0)
             {
+                Timers.inst.AddUpdate(UpdateToCheckGuide);
                 ItemDataManager.Remove(luckyBoxCfg.costID, luckyBoxCfg.costNumTen);
-                LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(10, result);
+                LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(10, true);
                 ViewManager.Show(ViewName.LUCKY_BOX_STAR_VIEW, _ui.m_c1.selectedIndex);
             }
             else
@@ -194,19 +199,40 @@ namespace GFGGame
                 LuckyBoxBonusDataCache.CheckItemEnough(luckyBoxCfg.costID, luckyBoxCfg.costNumTen, 10, () =>
                  {
                      ItemDataManager.Remove(luckyBoxCfg.costID, luckyBoxCfg.costNumTen);
-                     LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(10, result);
+                     LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(10, false);
                      ViewManager.Show(ViewName.LUCKY_BOX_STAR_VIEW, _ui.m_c1.selectedIndex);
 
                  });
             }
         }
+        private void UpdateToCheckGuide(object param)
+        {
+            if (this.viewCom.parent != null)
+            {
+                if (GRoot.inst.GetTopWindow() == this.viewCom)
+                {
+                    if (GuideController.TryGuideByGuideId(_ui.m_btnBuyTen, ConstGuideId.MAIN_UI_BTN_ZHAI_XING, 1, true, "点击摘取十次"))
+                    {
+                        Timers.inst.Remove(UpdateToCheckGuide);
+                    }
+                    else
+                    {
+                        if (GuideController.TryGuideByGuideId(_ui.m_btnBack, ConstGuideId.LUCKY_BOX_VIEW_BTN_BACK, 1, true, "获得一套完整的服装啦,马上去试穿一下", 0, ConstGuideId.MAIN_UI_BTN_ZHAI_XING))
+                        {
+                            Timers.inst.Remove(UpdateToCheckGuide);
+                        }
+                    }
+                }
+            }
 
+        }
 
         protected override void OnHide()
         {
             base.OnHide();
             _valueBarController.OnHide();
 
+            Timers.inst.Remove(UpdateToCheckGuide);
             Timers.inst.Remove(CheckTime);
             EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateNormal);
             EventAgent.RemoveEventListener(ConstMessage.MONEY_CHANGE, UpdateNormal);

+ 6 - 1
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs

@@ -44,6 +44,8 @@ namespace GFGGame
             _ui.m_listCard.numItems = cardList.Count;
             _ui.m_listCard.selectedIndex = 0;
             UpdateView(0);
+
+            GuideController.TryGuideStoryCardChoose(_ui.m_listCard);
         }
 
         private void UpdateView(int index)
@@ -68,6 +70,8 @@ namespace GFGGame
         private void OnListCardItemClick(EventContext context)
         {
             UpdateView(_ui.m_listCard.selectedIndex);
+            GuideController.TryGuideStoryCardChooseBtnConfirm(_ui.m_btnConfirm);
+
         }
         private void OnBtnComfirmClick()
         {
@@ -76,7 +80,8 @@ namespace GFGGame
             StoryDataManager.currentCardId = cfgs.Length > 0 ? cardId : -1;
             this.Hide();
             EventAgent.DispatchEvent(ConstMessage.CARD_CHOOSE);
-
+            GuideController.HideGuide();
+            GuideController.TryCompleteGuide(ConstGuideId.USE_CARD_FIGHT);
         }
 
         private static List<CardData> SortCardList(List<CardData> arrayList)

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterListView.cs

@@ -82,7 +82,7 @@ namespace GFGGame
         }
         private void OnClickListChapterItem(EventContext context)
         {
-            GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_STORY);
+            // GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_STORY);
             GObject chapterItem = context.data as GObject;
             int chapterID = (int)chapterItem.data;
             StoryChapterCfg chapterCfg = StoryChapterCfgArray.Instance.GetCfg(chapterID);
@@ -155,7 +155,7 @@ namespace GFGGame
                 }
                 if (i == 0)
                 {
-                    GuideController.TryGuideByGuideId(listItem.m_content.target, ConstGuideId.MAIN_UI_BTN_STORY, 1, true, "点击章节图标,继续探索吧");
+                    // GuideController.TryGuideByGuideId(listItem.m_content.target, ConstGuideId.MAIN_UI_BTN_STORY, 1, true, "点击章节图标,继续探索吧");
                 }
             }
         }

+ 37 - 9
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterView.cs

@@ -60,7 +60,10 @@ namespace GFGGame
             _ui.m_chapter.AddChild(_compChapter);
             InitChapter();
             _valueBarController.OnShown();
-            if (GuideDataManager.GetGuideCount(ConstGuideId.CHAPTER_VIEW_BTN_HOME) <= 0)
+            if (GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0
+            || GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) <= 0
+            || GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0
+            || GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0)
             {
                 Timers.inst.AddUpdate(UpdateToCheckGuide);
             }
@@ -84,7 +87,8 @@ namespace GFGGame
 
         private void OnClickBtnHome()
         {
-            GuideController.TryCompleteGuide(ConstGuideId.CHAPTER_VIEW_BTN_HOME);
+            GuideController.HideGuide();
+            GuideController.TryCompleteGuide(ConstGuideId.SINGLE_FIGHT_GUIDE);
             GameController.GoBackToMainView();
         }
 
@@ -231,16 +235,40 @@ namespace GFGGame
                 int index = this.viewCom.parent.GetChildIndex(this.viewCom);
                 if (index == this.viewCom.parent.numChildren - 1 && GRoot.inst.GetTopWindow() == null)
                 {
-                    if (StoryDataManager.CheckLevelPass(1, 4))
+                    if (_unPasslevelItem != null && GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
                     {
-                        GuideController.TryGuideByGuideId(_ui.m_btnHome, ConstGuideId.CHAPTER_VIEW_BTN_HOME, 1, false, "点击按钮,进入主界面");
+                        GuideController.TryGuideChapterViewLevelItem(_unPasslevelItem);
+                        // Timers.inst.Remove(UpdateToCheckGuide);
+
                     }
-                    else
+                    else if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) <= 0)
                     {
-                        if (_unPasslevelItem != null)
-                        {
-                            GuideController.TryGuideChapterViewLevelItem(_unPasslevelItem);
-                        }
+                        GuideController.TryGuideGoBackStoryChapter(_ui.m_btnHome);
+                        // Timers.inst.Remove(UpdateToCheckGuide);
+
+                    }
+                    else if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0 && GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG) > 0 && GuideDataManager.currentGuideId != ConstGuideId.SUIT_SYNTHETIC_GUIDE)
+                    {
+                        GuideController.TryGuideStoryChapterView(_unPasslevelItem);
+                        // Timers.inst.Remove(UpdateToCheckGuide);
+
+                    }
+                    else if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0 && GuideDataManager.currentGuideId == ConstGuideId.SUIT_SYNTHETIC_GUIDE)
+                    {
+                        GuideController.TryGuideStoryChapterViewBtnHome(_ui.m_btnHome);
+                        // Timers.inst.Remove(UpdateToCheckGuide);
+
+                    }
+                    else if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0)
+                    {
+                        GuideController.TryGuideGoBackStoryChapter1(_ui.m_btnHome);
+                    }
+
+                    else if (GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0)
+                    {
+                        GuideController.TryGuideStoryLevelInfoBtnHome(_ui.m_btnHome);
+                        // Timers.inst.Remove(UpdateToCheckGuide);
+
                     }
                 }
             }

+ 9 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryController.cs

@@ -29,11 +29,14 @@ namespace GFGGame
 
         private static void OnCompleteChapterStoryDialog(bool isSkip, object param)
         {
+
             List<ItemData> bonusList = null;
             bool _fistPassLastLvl = false;
+            bool _curLvfirstPass = false;
             if (!isSkip)
             {
-                bonusList = StoryDataManager.PassCurrentLevel(out _fistPassLastLvl);
+
+                bonusList = StoryDataManager.PassCurrentLevel(out _fistPassLastLvl, out _curLvfirstPass);
             }
             if (_fistPassLastLvl)
             {
@@ -43,6 +46,10 @@ namespace GFGGame
             {
                 ViewManager.Show(ViewName.STORY_CHAPTER_VIEW, StoryDataManager.currentChapter, null, true);
             }
+            if (_curLvfirstPass)
+            {
+                FunctionOpenDataManager.Instance.CheckHasChapterFunOpen(StoryDataManager._passChapter + 1, StoryDataManager._passLevel);//首次通过要检查是否有功能开启
+            }
             if (bonusList != null && bonusList.Count > 0)
             {
                 ViewManager.Show(ViewName.GET_BONUS_VIEW, bonusList);
@@ -53,7 +60,7 @@ namespace GFGGame
         private static void OnCompleteCardStoryDialog(bool isSkip, object param)
         {
             CardData cardData = param as CardData;
-            ViewManager.Show(ViewName.CARD_FOSTER_VIEW, cardData, new object[] { ViewName.CARD_DETAIL_VIEW}, true);
+            ViewManager.Show(ViewName.CARD_FOSTER_VIEW, cardData, new object[] { ViewName.CARD_DETAIL_VIEW }, true);
             ViewManager.Show(ViewName.CARD_STORY_VIEW, cardData);
         }
     }

+ 2 - 1
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightQuicklyView.cs

@@ -79,7 +79,8 @@ namespace GFGGame
             for (int i = 1; i <= count; i++)
             {
                 bool fistPassLastLvl = false;
-                List<ItemData> bonusList = StoryDataManager.PassCurrentLevel(out fistPassLastLvl);
+                bool curLvfirstPass = false;
+                List<ItemData> bonusList = StoryDataManager.PassCurrentLevel(out fistPassLastLvl, out curLvfirstPass);
                 _totalBonusList.Add(bonusList);
             }
             _index = 0;

+ 23 - 17
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightSingleScoreView.cs

@@ -29,7 +29,6 @@ namespace GFGGame
             isfullScreen = true;
 
             _scenePrefab = GFGAsset.Load<GameObject>(ResPathUtil.GetPrefabPath("SceneFightSingleScore"));
-            EventAgent.AddEventListener(ConstMessage.CARD_SKILL, CircleScoreStart);
         }
 
         protected override void OnShown()
@@ -37,6 +36,7 @@ namespace GFGGame
             base.OnShown();
             if (_sceneObject == null) _sceneObject = GameObject.Instantiate(_scenePrefab);
             SceneController.UpdateRole(EquipDataCache.cacher.equipDatas, _sceneObject);
+            EventAgent.AddEventListener(ConstMessage.CARD_SKILL, CircleScoreStart);
 
             _ui.m_comClickCircle.m_loaCircle.onClick.Add(CircleScoreEnd);
             _ui.m_comAllCircle.target.onTouchBegin.Add(OnComAllCircleClickBegin);
@@ -50,16 +50,12 @@ namespace GFGGame
             _ui.m_proScore.target.max = fightCfg.score3;
             _ui.m_proScore.target.value = 0;
             _ui.m_proScore.m_imgFirstScore.x = (((float)fightCfg.score1 / (float)fightCfg.score3)) * _ui.m_proScore.target.width;
-            // _ui.m_proCount.m_imgCurScore.x = 0;
-            // _ui.m_comProCount.m_comBar.width = 0;
-            // _ui.m_comProCount.m_imgFirstScore.x = (((float)fightCfg.score1 / (float)fightCfg.score3)) * _ui.m_comProCount.target.width;
 
             _index = 0;
             _score = 0;
             _prefectCount = 0;
             _mainScore = ScoreSystemData.Instance.GetMainScore();
 
-
             Timers.inst.Add(0.5f, 1, (param) =>
             {
                 SkillScoreStart(null);
@@ -88,24 +84,32 @@ namespace GFGGame
         {
             Debug.Log("index:" + _index);
             Vector2 pos = (_ui.target.GetChild("grh_" + _index).asGraph).xy;
-            // int numX = UnityEngine.Random.Range(0, 2);
-            // int signX = numX % 2 == 0 ? 1 : -1;
-            // float rangeX = UnityEngine.Random.Range(0, _range);
-            float x = 0f;// pos.x + signX * (rangeX);
-
-            // int numY = UnityEngine.Random.Range(0, 2);
-            // int signY = numY % 2 == 0 ? 1 : -1;
-            // float rangeY = UnityEngine.Random.Range(0, _range);
-            float y = 0f;// pos.y + signY * (rangeY);
+            float x = 0f;
+            float y = 0f;
 
             EquipDataCache.cacher.GetCirclePos(pos, _range, out x, out y);
             _ui.m_comClickCircle.target.SetXY(x, y);
             _ui.m_comClickCircle.target.visible = true;
-            _ui.m_comClickCircle.m_t0.Play(CircleScoreEnd);
+
+
+            if (_index == 0 && GuideDataManager.GetGuideCount(ConstGuideId.SINGLE_FIGHT_GUIDE) <= 0)
+            {
+                _ui.m_comClickCircle.m_t0.Play(1, 0, 0, 0.5f, () =>
+                {
+                    GuideController.TryGuideSingleScoreViewComClickCircle(_ui.m_comClickCircle.m_loaCircle);
+                });
+            }
+            else
+            {
+                _ui.m_comClickCircle.m_t0.Play(CircleScoreEnd);
+            }
+
         }
 
         private void CircleScoreEnd()
         {
+            GuideController.HideGuide();
+            GuideController.TryCompleteGuide(ConstGuideId.SINGLE_FIGHT_GUIDE);
             _ui.m_comClickCircle.m_loaCircle.onClick.Remove(CircleScoreEnd);
 
             int clickState = GetClickState();
@@ -129,7 +133,7 @@ namespace GFGGame
             double partScore = ScoreSystemData.Instance.GetPartItemScore(partId);
             double clickScore = +ScoreSystemData.Instance.GetPartItemClickScore(_mainScore, clickState);
             int count = (int)(partScore + clickScore);
-            // Debug.Log("partScore:" + partScore + "   clickScore:" + clickScore + "   count:" + count + "   clickState:" + clickState + "  _mainScore:" + _mainScore);
+
             comScoreResult.m_txtCount0.text = count.ToString();
             comScoreResult.m_txtCount1.text = count.ToString();
             comScoreResult.m_txtCount2.text = count.ToString();
@@ -215,13 +219,14 @@ namespace GFGGame
         private void SetScoreUI()
         {
             EquipDataCache.cacher.totalScore = (int)Math.Round(_score);
-            _ui.m_selfScore.m_txtScore.text = Math.Round(_score).ToString();
+            _ui.m_proScore.m_txtCount.text = Math.Round(_score).ToString();
             _ui.m_proScore.target.TweenValue(_score, 0.2f);
 
         }
 
         private void Skip(object param = null)
         {
+            EventAgent.RemoveEventListener(ConstMessage.CARD_SKILL, CircleScoreStart);
             Timers.inst.Remove(SkillScoreStart);
             Timers.inst.Remove(Skip);
             this.Hide();
@@ -236,6 +241,7 @@ namespace GFGGame
                 GameObject.Destroy(_sceneObject);
                 _sceneObject = null;
             }
+
         }
 
         public override void Dispose()

+ 48 - 4
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightTargetScoreView.cs

@@ -35,6 +35,8 @@ namespace GFGGame
         private GoWrapper _wrapper1_1;
         private Dictionary<int, RoleSkillCfg> _npcSkillDic;
 
+        private bool playStop = false;
+
         public override void Dispose()
         {
             if (_scenePrefab != null)
@@ -63,7 +65,6 @@ namespace GFGGame
                 icon.onClick.Add(() => { OnBtnSkillClick(btnSkill); });
             }
             _ui.m_btnBack.onClick.Add(OnBtnBackClick);
-            EventAgent.AddEventListener(ConstMessage.CARD_SKILL, UpdateCircleResult);
 
         }
 
@@ -74,6 +75,19 @@ namespace GFGGame
             {
                 Skip();
             });
+            _ui.m_comMineCircle.target.onClick.Add(() =>
+            {
+                if (_index == 0 && GuideDataManager.GetGuideCount(ConstGuideId.TARGET_FIGHT_GUIDE) <= 0 && playStop)
+                {
+                    playStop = false;
+                    _ui.m_comTargetCircle.target.visible = false;
+                    _ui.m_comMineCircle.target.visible = false;
+                    _ui.m_comMineCircle.m_t0.Stop(true, false);
+                    _ui.m_comTargetCircle.m_t0.Stop(true, false);
+                    _ui.m_btnSkill0.target.touchable = true;
+                    GuideController.TryGuideStoryFightTargetScorebtnSkill0(_ui.m_btnSkill0.target);
+                }
+            });
         }
 
         protected override void OnShown()
@@ -83,6 +97,8 @@ namespace GFGGame
             {
                 _sceneObject = GameObject.Instantiate(_scenePrefab);
             }
+            EventAgent.AddEventListener(ConstMessage.CARD_SKILL, UpdateCircleResult);
+
             SceneController.UpdateRole(EquipDataCache.cacher.equipDatas, _sceneObject);
             StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(StoryDataManager.currentLevelID);
             StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
@@ -101,6 +117,10 @@ namespace GFGGame
             _mainScore = ScoreSystemData.Instance.GetMainScore();
             _targetMainScore = fightCfg.targetMainScore;
 
+            if (_index == 0 && GuideDataManager.GetGuideCount(ConstGuideId.TARGET_FIGHT_GUIDE) <= 0)
+            {
+                _ui.m_btnSkill0.target.touchable = false;
+            }
             Timers.inst.Add(0.5f, 1, CircleScoreStart);//评分开始
         }
         private void UpdateNormal()
@@ -158,7 +178,8 @@ namespace GFGGame
             StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(StoryDataManager.currentLevelID);
             StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
             double targetScore = fightCfg.targetPartsScoreArr[_index] * ConstScoreSystem.PART_SCORE;
-            _ui.m_comTargetCircle.m_txtCount.text = targetScore.ToString();
+            Debug.Log("targetScore:" + targetScore);
+            _ui.m_comTargetCircle.m_txtCount.text = ((int)targetScore).ToString();
             _targetScore += targetScore;
             EquipDataCache.cacher.npcTotalScore = (int)Math.Round(_targetScore);
 
@@ -171,6 +192,8 @@ namespace GFGGame
         {
             _ui.m_proScore.m_txtMineScore.text = ((int)_score).ToString();
             _ui.m_proScore.m_txtNpcScore.text = ((int)_targetScore).ToString();
+            Debug.Log("_targetScore:" + _targetScore);
+
             double value = _score / (_score + _targetScore) * _ui.m_proScore.target.max;
             _ui.m_proScore.target.TweenValue(value, 0.5f);
         }
@@ -186,11 +209,23 @@ namespace GFGGame
         {
             _ui.m_comMineCircle.target.visible = true;
             _ui.m_comMineCircle.m_txtPart.text = FightScoreCfgArray.Instance.GetCfg(_index + 1).name;
-            _ui.m_comMineCircle.m_t0.Play(CircleScoreEnd);
 
             _ui.m_comTargetCircle.target.visible = true;
             _ui.m_comTargetCircle.m_txtPart.text = FightScoreCfgArray.Instance.GetCfg(_index + 1).name;
+            if (_index == 0 && GuideDataManager.GetGuideCount(ConstGuideId.TARGET_FIGHT_GUIDE) <= 0)
+            {
+
+                _ui.m_comMineCircle.m_t0.Play(1, 0, 0, 0.75f, () =>
+                 {
+                     playStop = true;
+                     GuideController.TryGuideStoryFightTargetScoreComCircle(_ui.m_comMineCircle.target, -128f, -128f);
+                 });
+                _ui.m_comTargetCircle.m_t0.Play(1, 0, 0, 0.75f, null);
+                return;
+            }
+            _ui.m_comMineCircle.m_t0.Play(CircleScoreEnd);
             _ui.m_comTargetCircle.m_t0.Play();
+
         }
         private void CircleScoreEnd()
         {
@@ -284,6 +319,12 @@ namespace GFGGame
 
             UpdateProgressBar();
 
+            if (_index == 0 && GuideDataManager.GetGuideCount(ConstGuideId.TARGET_FIGHT_GUIDE) <= 0 && role == SkillDataManager.MINE)
+            {
+                GuideController.HideGuide();
+                GuideController.TryCompleteGuide(ConstGuideId.TARGET_FIGHT_GUIDE);
+                CircleScoreEnd();
+            }
         }
 
         //荆钗效果
@@ -386,17 +427,20 @@ namespace GFGGame
                 _sceneObject = null;
             }
             _npcSkillDic.Clear();
+
+
         }
 
         private void Skip(object param = null)
         {
-
             Reset();
             this.Hide();
             ViewManager.Show(ViewName.STORY_FIGHT_RESULT_VIEW);
         }
         private void Reset()
         {
+            EventAgent.RemoveEventListener(ConstMessage.CARD_SKILL, CircleScoreStart);
+
             _ui.m_proScore.target.max = 100;
             _ui.m_proScore.target.value = 0;
 

+ 32 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryLevelInfoView.cs

@@ -33,6 +33,11 @@ namespace GFGGame
             _ui.m_btnFightOnce.onClick.Add(OnClickBtnFightOnce);
             _ui.m_btnFightTimes.onClick.Add(OnClickBtnFightTimes);
 
+            _ui.m_btnClose.onClick.Add(() =>
+            {
+                this.Hide();
+            });
+
             _ui.m_listTag.itemRenderer = RenderListTagItem;
         }
 
@@ -42,15 +47,25 @@ namespace GFGGame
             _levelID = (string)viewData;
             _storyType = int.Parse(_levelID.Split('_')[0]) / 10000;
             UpdateView();
-            GuideController.TryGuideChapterInfoViewBtnStart(_ui.m_btnStart, "点击按钮,开始挑战");
+            GuideController.TryGuideChapterInfoViewBtnStart(_ui.m_btnStart, "点击开启换装");
+            GuideController.TryGuideStoryLevelInfoViewTxtNeed(_ui.m_txtNeed);
+            GuideController.TryGuideStoryLevelInfoListTag(_ui.m_listTag);
 
             EventAgent.AddEventListener(ConstMessage.ROLE_POWER_CHANGED, UpdateBtnFightTimes);
+            Timers.inst.AddUpdate(UpdateToCheckGuide);
         }
 
         protected override void OnHide()
         {
             base.OnHide();
             EventAgent.RemoveEventListener(ConstMessage.ROLE_POWER_CHANGED, UpdateBtnFightTimes);
+            Timers.inst.Remove(UpdateToCheckGuide);
+
+            if (GuideDataManager.currentGuideId == ConstGuideId.SUIT_SYNTHETIC_GUIDE)
+            {
+                GuideController.HideGuide();
+            }
+            GuideController.TryCompleteGuide(ConstGuideId.TIPS_TAGS_FIGHT);
         }
 
         private void OnClickBtnStart()
@@ -187,7 +202,7 @@ namespace GFGGame
                 string scoreStr = "" + score;
                 if (score <= fightCfg.score1)
                 {
-                    scoreStr = "[color=#fddadb]失败 " + scoreStr + "[/color]";
+                    scoreStr = "[color=#A28D77]失败 " + scoreStr + "[/color]";
                 }
                 _ui.m_txtHighestScore.text = scoreStr;
                 _ui.m_flower.target.visible = true;
@@ -230,5 +245,20 @@ namespace GFGGame
             item.m_loaTag.url = ResPathUtil.GetCommonGameResPath("fzd_bqbq_" + tag[0]);
             item.m_txtTag.text = tag[1];
         }
+
+        private void UpdateToCheckGuide(object param)
+        {
+            if (GRoot.inst.GetTopWindow() == this.viewCom)
+            {
+                GuideController.TryGuideStoryLevelInfoView(null);
+                Timers.inst.Remove(UpdateToCheckGuide);
+
+            }
+        }
+        // protected override void OnHide()
+        // {
+        //     base.OnHide();
+        //     GuideController.HideGuide();
+        // }
     }
 }

+ 7 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StorySkillView.cs

@@ -14,6 +14,8 @@ namespace GFGGame
             _ui = UI_StorySkillUI.Create();
             viewCom = _ui.target;
             isfullScreen = true;
+            // this.modal = false;
+
         }
         protected override void OnShown()
         {
@@ -26,9 +28,12 @@ namespace GFGGame
             _ui.m_t0.Play(() =>
             {
                 this.Hide();
-                EventAgent.DispatchEvent(ConstMessage.CARD_SKILL);
             });
         }
-
+        protected override void OnHide()
+        {
+            base.OnHide();
+            EventAgent.DispatchEvent(ConstMessage.CARD_SKILL);
+        }
     }
 }

+ 7 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StroyFightResultView.cs

@@ -12,6 +12,7 @@ namespace GFGGame
         private GameObject _scenePrefab;
         private List<ItemData> _currentBonusList;
         private bool _fistPassLastLvl;
+        private bool _curLvfirstPass = false;
 
         public override void Dispose()
         {
@@ -86,7 +87,11 @@ namespace GFGGame
                 _ui.m_btnClose.enabled = false;
                 //过关
                 _ui.m_expBar.m_txtLvlAdded.text = "" + fightCfg.exp;
-                _currentBonusList = StoryDataManager.PassCurrentLevel(out _fistPassLastLvl);
+                _currentBonusList = StoryDataManager.PassCurrentLevel(out _fistPassLastLvl, out _curLvfirstPass);
+                if (_curLvfirstPass)
+                {
+                    FunctionOpenDataManager.Instance.CheckHasChapterFunOpen(StoryDataManager._passChapter + 1, StoryDataManager._passLevel);//首次通过要检查是否有功能开启
+                }
                 Timers.inst.Add(0.5f, 1, AddExp);
             }
             _ui.m_selfScore.m_txtScore.textFormat = tf;
@@ -170,7 +175,7 @@ namespace GFGGame
             {
                 txt = "你太厉害了,初次对战就获得了这么好的战绩,继续加油吧";
             }
-            GuideController.TryGuideByGuideId(null, ConstGuideId.CHAPTER_RESULT_VIEW, 2, false, txt, targetY);
+            GuideController.TryGuideByGuideId(null, ConstGuideId.TARGET_FIGHT_GUIDE, 2, false, txt, targetY);
         }
 
     }

+ 19 - 6
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -229,12 +229,11 @@ namespace GFGGame
             Timers.inst.Add(effectTime, 1, (param) =>
             {
                 _ui.m_btnCiPai.m_holder1.visible = false;
-                //Timers.inst.AddUpdate(UpdateToCheckGuide);
-                ViewManager.Show(ViewName.CARD_VIEW, null, new object[] { ViewName.MAINUI_VIEW, this.viewData });
+
+                ViewManager.Show(ViewName.CARD_DETAIL_VIEW, null, new object[] { ViewName.MAINUI_VIEW, this.viewData });
                 isOpen = false;
 
             });
-
         }
 
 
@@ -293,12 +292,26 @@ namespace GFGGame
 
         private void TryGuide()
         {
-            if (!GuideController.TryGuideByGuideId(_ui.m_btnZhaiXing.target, ConstGuideId.MAIN_UI_BTN_ZHAI_XING, 1, false, "点击摘星按钮,进入抽奖界面"))
+            // TryGuideByGuideId(_ui.m_btnZhaiXing.target, ConstGuideId.MAIN_UI_BTN_ZHAI_XING, 1, false, "点击摘星按钮,进入抽奖界面")
+            if (!GuideController.TryGuideLuckyBox(_ui.m_btnZhaiXing.target))
             {
-                if (!GuideController.TryGuideByGuideId(_ui.m_btnHuanZhuang.target, ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG, 1, false, "点击自由换装按钮,进入换装界面"))
+                if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_ZHAI_XING) > 0 && GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG) <= 0)
                 {
-                    GuideController.TryGuideByGuideId(_ui.m_btnMain.target, ConstGuideId.MAIN_UI_BTN_STORY, 1, false, "这套服装搭配这个背景可真好看!点击按钮,继续故事可以获取更多好看的服装");
+                    GuideController.TryGuideByGuideId(_ui.m_btnHuanZhuang.target, ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG, 1, false, "在这里,可以自由搭配服饰和分享哦~");
                 }
+                else if (GuideDataManager.GetGuideCount(ConstGuideId.MAIN_UI_BTN_HUAN_ZHUANG) > 0 && GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) <= 0)
+                {
+                    GuideController.TryGuideMainUIViewBtnXiuFang(_ui.m_btnXiuFang.target);
+                }
+                else if (GuideDataManager.GetGuideCount(ConstGuideId.SUIT_SYNTHETIC_GUIDE) > 0 && GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) <= 0)
+                {
+                    GuideController.TryGuideOpenDressUpView(_ui.m_btnHuanZhuang.target);
+                }
+                else if (GuideDataManager.GetGuideCount(ConstGuideId.PHOTOGRAPH_GUIDE) > 0 && GuideDataManager.GetGuideCount(ConstGuideId.CARD_UP_STAR) <= 0)
+                {
+                    GuideController.TryGuideMainUIViewBtnCiPai(_ui.m_btnCiPai.target);
+                }
+
             }
         }
     }

+ 8 - 0
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -56,6 +56,10 @@ namespace GFGGame
                 HideAllView(viewName);
             }
             UIView obj = null;
+            if (!FunctionOpenDataManager.Instance.CheckIsFunOpenBgViewName(viewName))
+            {
+                return;
+            }
             if (_viewDic.ContainsKey(viewName))
             {
                 obj = _viewDic[viewName];
@@ -96,6 +100,10 @@ namespace GFGGame
         public static void Show<T>(object viewData = null, object[] goBackParams = null, bool hideOthers = false, bool resetGobackParams = false) where T : class, new()
         {
             string viewName = typeof(T).FullName;
+            if (!FunctionOpenDataManager.Instance.CheckIsFunOpenBgViewName(viewName))
+            {
+                return;
+            }
             if (hideOthers)
             {
                 HideAllView(viewName);

+ 4 - 1
GameClient/Assets/Game/HotUpdate/Views/XiuFang/XiuFangView.cs

@@ -32,6 +32,7 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
+            GuideController.TryGuideSuitSyntheticView(_ui.m_btnSuitSynthetic);
         }
 
         protected override void OnHide()
@@ -47,7 +48,9 @@ namespace GFGGame
 
         private void OnClickBtnClothingShop()
         {
-            ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, null, null, false, true);
+            ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, null, new object[] { ViewName.XIU_FANG_VIEW, this.viewData }, false, true);
+            this.Hide();
+
         }
 
         private void OnClickBtnSuitSynthetic()

BIN
GameClient/Assets/ResIn/Config/excelConfig.sqlite.bytes


BIN
GameClient/Assets/ResIn/UI/Card/Card_fui.bytes


BIN
GameClient/Assets/ResIn/UI/ClothingSynthetic/ClothingSynthetic_fui.bytes


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_fui.bytes


BIN
GameClient/Assets/ResIn/UI/DressUp/DressUp_fui.bytes


BIN
GameClient/Assets/ResIn/UI/Main/Main_fui.bytes


BIN
GameClient/Assets/ResIn/UI/RechargeStore/RechargeStore_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/RechargeStore/RechargeStore_atlas0.png


BIN
GameClient/Assets/ResIn/UI/RechargeStore/RechargeStore_fui.bytes