浏览代码

Merge remote-tracking branch 'remotes/origin/zhaoyang' into guodong

# Conflicts:
#	GameClient/Assets/Game/CSShare
#	GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
guodong 3 年之前
父节点
当前提交
803ffcda3c
共有 94 个文件被更改,包括 749 次插入114 次删除
  1. 1 1
      FGUIProject/assets/CommonGame/components/ComCostCurrency.xml
  2. 1 1
      FGUIProject/assets/CommonGame/package.xml
  3. 6 1
      FGUIProject/assets/Main/MainUI.xml
  4. 二进制
      FGUIProject/assets/Main/images/zjm_rk_6.png
  5. 二进制
      FGUIProject/assets/Main/images/zjm_rk_7.png
  6. 0 0
      FGUIProject/assets/Main/imagesExport/zx_jq_djtubiao_1.png
  7. 3 1
      FGUIProject/assets/Main/package.xml
  8. 10 10
      FGUIProject/assets/Studio/StudioBuyNumUI.xml
  9. 21 8
      FGUIProject/assets/Studio/StudioEctypeUI.xml
  10. 19 4
      FGUIProject/assets/Studio/StudioUI.xml
  11. 5 4
      FGUIProject/assets/Studio/components/ComEctype.xml
  12. 11 13
      FGUIProject/assets/Studio/components/ListItem.xml
  13. 10 13
      FGUIProject/assets/Studio/components/ListPropertyItem.xml
  14. 二进制
      FGUIProject/assets/Studio/images/fzjl_dik_2.png
  15. 二进制
      FGUIProject/assets/Studio/images/fzyc_hxk_1.png
  16. 二进制
      FGUIProject/assets/Studio/images/fzyc_hxkan_1.png
  17. 二进制
      FGUIProject/assets/Studio/images/gzs_bjbj.png
  18. 二进制
      FGUIProject/assets/Studio/images/gzsatb_1.png
  19. 二进制
      FGUIProject/assets/Studio/images/gzsatb_2.png
  20. 二进制
      FGUIProject/assets/Studio/images/gzsatb_3.png
  21. 二进制
      FGUIProject/assets/Studio/images/gzsatb_4.png
  22. 二进制
      FGUIProject/assets/Studio/images/gzsdi_1.png
  23. 二进制
      FGUIProject/assets/Studio/images/gzsdi_2.png
  24. 二进制
      FGUIProject/assets/Studio/images/gzsltb_1.png
  25. 二进制
      FGUIProject/assets/Studio/images/gzsltb_2.png
  26. 二进制
      FGUIProject/assets/Studio/images/gzsltb_3.png
  27. 二进制
      FGUIProject/assets/Studio/images/gzsltb_4.png
  28. 二进制
      FGUIProject/assets/Studio/images/gzssuo.png
  29. 二进制
      FGUIProject/assets/Studio/images/gzswtb_1.png
  30. 二进制
      FGUIProject/assets/Studio/images/gzswtb_2.png
  31. 二进制
      FGUIProject/assets/Studio/images/gzswtb_3.png
  32. 二进制
      FGUIProject/assets/Studio/images/gzswtb_4.png
  33. 二进制
      FGUIProject/assets/Studio/images/gzsxian_2.png
  34. 二进制
      FGUIProject/assets/Studio/images/sxsx_dgdg.png
  35. 二进制
      FGUIProject/assets/Studio/images/sxsx_sxdi.png
  36. 二进制
      FGUIProject/assets/Studio/images/sxsx_sxdian.png
  37. 二进制
      FGUIProject/assets/Studio/images/zjm_anhui.png
  38. 二进制
      FGUIProject/assets/Studio/images/zjm_bj_1.jpg
  39. 二进制
      FGUIProject/assets/Studio/images/zjm_rk_10.png
  40. 二进制
      FGUIProject/assets/Studio/images/zjm_rk_11.png
  41. 二进制
      FGUIProject/assets/Studio/images/zjm_rk_8.png
  42. 二进制
      FGUIProject/assets/Studio/images/zjm_rk_9.png
  43. 二进制
      FGUIProject/assets/Studio/images/zpsxian_1.png
  44. 二进制
      FGUIProject/assets/Studio/images/zx_jq_djtubiao_1.png
  45. 二进制
      FGUIProject/assets/Studio/imagesExport/hb_anniu_3.png
  46. 二进制
      FGUIProject/assets/Studio/imagesExport/hb_kuangdi_1.png
  47. 二进制
      FGUIProject/assets/Studio/imagesExport/hb_kuangdi_2.png
  48. 24 10
      FGUIProject/assets/Studio/package.xml
  49. 1 1
      GameClient/Assets/Game/CSShare
  50. 3 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs
  51. 2 1
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  52. 1 1
      GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs
  53. 5 5
      GameClient/Assets/Game/HotUpdate/Data/InstanceZonesDataManager.cs
  54. 63 0
      GameClient/Assets/Game/HotUpdate/Data/StudioDataManager.cs
  55. 27 0
      GameClient/Assets/Game/HotUpdate/Data/VO/StudioData.cs
  56. 11 0
      GameClient/Assets/Game/HotUpdate/Data/VO/StudioData.cs.meta
  57. 4 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_MainUI.cs
  58. 3 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Studio/UI_ListItem.cs
  59. 3 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Studio/UI_StudioBuyNumUI.cs
  60. 58 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/StudioProxy.cs
  61. 11 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/StudioProxy.cs.meta
  62. 100 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/SuitFosterProxy.cs
  63. 11 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/SuitFosterProxy.cs.meta
  64. 1 1
      GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitFosterView.cs
  65. 1 1
      GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitListView.cs
  66. 2 2
      GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitView.cs
  67. 44 13
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioBaseView.cs
  68. 60 2
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioBuyNumView.cs
  69. 4 1
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioFabricView.cs
  70. 4 1
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioMetalView.cs
  71. 15 4
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioPropertyView.cs
  72. 8 7
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioView.cs
  73. 4 2
      GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs
  74. 二进制
      GameClient/Assets/ResIn/Config/excelConfig.sqlite.bytes
  75. 二进制
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0!a.png
  76. 二进制
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0.png
  77. 二进制
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_fui.bytes
  78. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0!a.png
  79. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0.png
  80. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_1!a.png
  81. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_1.png
  82. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_3!a.png
  83. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_3.png
  84. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_4!a.png
  85. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_4.png
  86. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_5!a.png
  87. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_5.png
  88. 二进制
      GameClient/Assets/ResIn/UI/Main/Main_fui.bytes
  89. 二进制
      GameClient/Assets/ResIn/UI/Studio/Studio_atlas0.png
  90. 二进制
      GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhd1a.png
  91. 96 0
      GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhd1a.png.meta
  92. 二进制
      GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhdp.png
  93. 96 0
      GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhdp.png.meta
  94. 二进制
      GameClient/Assets/ResIn/UI/Studio/Studio_fui.bytes

+ 1 - 1
FGUIProject/assets/CommonGame/components/ComCostCurrency.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<component size="280,42">
+<component size="285,42">
   <displayList>
   <displayList>
     <image id="n4_a713" name="n4" src="a71377" fileName="imagesExport/kp_dikuang_3.png" xy="60,3"/>
     <image id="n4_a713" name="n4" src="a71377" fileName="imagesExport/kp_dikuang_3.png" xy="60,3"/>
     <text id="n2_ojlz" name="n2" xy="0,0" size="65,42" fontSize="30" color="#7d634a" autoSize="none" text="消耗"/>
     <text id="n2_ojlz" name="n2" xy="0,0" size="65,42" fontSize="30" color="#7d634a" autoSize="none" text="消耗"/>

+ 1 - 1
FGUIProject/assets/CommonGame/package.xml

@@ -122,7 +122,7 @@
     <image id="m9wm8v" name="ts_canghaiym.png" path="/images/"/>
     <image id="m9wm8v" name="ts_canghaiym.png" path="/images/"/>
     <image id="m9wm8w" name="ts_jiyuet.png" path="/images/"/>
     <image id="m9wm8w" name="ts_jiyuet.png" path="/images/"/>
     <image id="ighs8x" name="hd_suanc.png" path="/imagesExport/" exported="true"/>
     <image id="ighs8x" name="hd_suanc.png" path="/imagesExport/" exported="true"/>
-    <image id="9cth8y" name="tctc_xiant_1.png" path="/imagesExport/"/>
+    <image id="9cth8y" name="tctc_xiant_1.png" path="/imagesExport/" exported="true"/>
     <image id="9cth8z" name="cj_hd_kdi.png" path="/imagesExport/"/>
     <image id="9cth8z" name="cj_hd_kdi.png" path="/imagesExport/"/>
     <image id="9cth90" name="cj_hd_zik.png" path="/imagesExport/"/>
     <image id="9cth90" name="cj_hd_zik.png" path="/imagesExport/"/>
     <component id="ojlzk" name="ListPropertyItem.xml" path="/components/" exported="true"/>
     <component id="ojlzk" name="ListPropertyItem.xml" path="/components/" exported="true"/>

+ 6 - 1
FGUIProject/assets/Main/MainUI.xml

@@ -29,8 +29,13 @@
       <relation target="" sidePair="bottom-bottom"/>
       <relation target="" sidePair="bottom-bottom"/>
       <Button icon="ui://mfvz4q8kq08x7"/>
       <Button icon="ui://mfvz4q8kq08x7"/>
     </component>
     </component>
-    <component id="n44_n3xh" name="btnStudio" src="q08xu" fileName="components/ButtonModle1.xml" xy="397,1374">
+    <component id="n44_n3xh" name="btnStudio" src="q08xu" fileName="components/ButtonModle1.xml" xy="309,1455">
       <relation target="" sidePair="bottom-bottom"/>
       <relation target="" sidePair="bottom-bottom"/>
+      <Button icon="ui://mfvz4q8kkqhddo"/>
+    </component>
+    <component id="n45_kqhd" name="btnSurvey" src="q08xu" fileName="components/ButtonModle1.xml" xy="561,1455">
+      <relation target="" sidePair="bottom-bottom"/>
+      <Button icon="ui://mfvz4q8kkqhddn"/>
     </component>
     </component>
     <image id="n42_wg7t" name="n42" src="wg7t8t" fileName="images/zjm_gn_dik_1.png" xy="131,1756" size="995,105">
     <image id="n42_wg7t" name="n42" src="wg7t8t" fileName="images/zjm_gn_dik_1.png" xy="131,1756" size="995,105">
       <gearDisplay controller="c1" pages="1"/>
       <gearDisplay controller="c1" pages="1"/>

二进制
FGUIProject/assets/Main/images/zjm_rk_6.png


二进制
FGUIProject/assets/Main/images/zjm_rk_7.png


+ 0 - 0
FGUIProject/assets/Main/images/zx_jq_djtubiao_1.png → FGUIProject/assets/Main/imagesExport/zx_jq_djtubiao_1.png


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

@@ -228,7 +228,7 @@
     <image id="f4xv91" name="dhjm_dianse.png" path="/images/"/>
     <image id="f4xv91" name="dhjm_dianse.png" path="/images/"/>
     <image id="j48o92" name="zx_anniutz_1.png" path="/images/"/>
     <image id="j48o92" name="zx_anniutz_1.png" path="/images/"/>
     <image id="j48o94" name="zx_jq_dituditu.png" path="/images/"/>
     <image id="j48o94" name="zx_jq_dituditu.png" path="/images/"/>
-    <image id="j48o95" name="zx_jq_djtubiao_1.png" path="/images/"/>
+    <image id="j48o95" name="zx_jq_djtubiao_1.png" path="/imagesExport/" exported="true"/>
     <image id="j48o97" name="zx_jq_rwbszik.png" path="/images/"/>
     <image id="j48o97" name="zx_jq_rwbszik.png" path="/images/"/>
     <image id="srnc98" name="zd_btzi_1.png" path="/images/"/>
     <image id="srnc98" name="zd_btzi_1.png" path="/images/"/>
     <image id="oq7r99" name="zx_gka_baoxiang_1.png" path="/imagesStory/"/>
     <image id="oq7r99" name="zx_gka_baoxiang_1.png" path="/imagesStory/"/>
@@ -372,6 +372,8 @@
     <image id="jj0mdg" name="zd_jsjs_1.png" path="/images/"/>
     <image id="jj0mdg" name="zd_jsjs_1.png" path="/images/"/>
     <component id="jj0mdl" name="ButtonSpeedUp1.xml" path="/componentsDialog/"/>
     <component id="jj0mdl" name="ButtonSpeedUp1.xml" path="/componentsDialog/"/>
     <component id="lqp0dm" name="ComBtn.xml" path="/components/"/>
     <component id="lqp0dm" name="ComBtn.xml" path="/components/"/>
+    <image id="kqhddn" name="zjm_rk_7.png" path="/images/"/>
+    <image id="kqhddo" name="zjm_rk_6.png" path="/images/"/>
   </resources>
   </resources>
   <publish name="" path="..\GameClient\Assets\ResIn\UI\Main" packageCount="2" genCode="true" extractAlpha="true"/>
   <publish name="" path="..\GameClient\Assets\ResIn\UI\Main" packageCount="2" genCode="true" extractAlpha="true"/>
 </packageDescription>
 </packageDescription>

+ 10 - 10
FGUIProject/assets/Studio/StudioBuyNumUI.xml

@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<component size="936,536">
+<component size="936,574">
   <displayList>
   <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="n6_hinb" name="btnBuy" src="q08x7" fileName="components/Button2.xml" pkg="mk0fwx0x" xy="496,354">
+    <loader id="n26_eiwu" name="loaBg" xy="0,0" size="936,574" url="ui://mk0fwx0xlwri5u" fill="scaleFree"/>
+    <image id="n32_kqhd" name="n32" src="9cth8y" fileName="imagesExport/tctc_xiant_1.png" pkg="eg2y0ldp" xy="44,120"/>
+    <component id="n6_hinb" name="btnBuy" src="q08x7" fileName="components/Button2.xml" pkg="mk0fwx0x" xy="496,419">
       <Button title="购买"/>
       <Button title="购买"/>
     </component>
     </component>
-    <component id="n7_hinb" name="btnExchange" src="q08x6" fileName="components/Button1.xml" pkg="mk0fwx0x" xy="54,354">
+    <component id="n7_hinb" name="btnExchange" src="q08x6" fileName="components/Button1.xml" pkg="mk0fwx0x" xy="54,420">
       <Button title="兑换"/>
       <Button title="兑换"/>
     </component>
     </component>
-    <component id="n27_n3xh" name="comCostItem" src="n3xha1" fileName="components/ComCostCurrency.xml" pkg="eg2y0ldp" xy="106,301"/>
-    <component id="n28_n3xh" name="comCostCurrent" src="n3xha1" fileName="components/ComCostCurrency.xml" pkg="eg2y0ldp" xy="545,304"/>
-    <text id="n30_n3xh" name="txtTitle" xy="432,62" pivot="0.5,0" size="87,56" fontSize="42" color="#876e54" text="提示"/>
-    <text id="n29_n3xh" name="txtTips" xy="325,150" pivot="0.5,0" size="306,46" fontSize="34" color="#a0845c" text="请选择获取次数方式"/>
-    <text id="n31_n3xh" name="txtNum" xy="348,227" pivot="0.5,0" size="272,42" fontSize="30" color="#a0845c" text="(今日已兑换0/10次)"/>
+    <component id="n27_n3xh" name="comCostItem" src="n3xha1" fileName="components/ComCostCurrency.xml" pkg="eg2y0ldp" xy="100,364"/>
+    <component id="n28_n3xh" name="comCostCurrent" src="n3xha1" fileName="components/ComCostCurrency.xml" pkg="eg2y0ldp" xy="540,364"/>
+    <text id="n30_n3xh" name="txtTitle" xy="425,30" pivot="0.5,0" size="100,64" fontSize="48" color="#9b7853" text="提示"/>
+    <text id="n29_n3xh" name="txtTips" xy="297,150" pivot="0.5,0" size="342,51" fontSize="38" color="#917961" text="请选择获取次数方式"/>
+    <text id="n31_n3xh" name="txtNum" xy="337,220" pivot="0.5,0" size="294,44" fontSize="32" color="#917961" text="(今日已兑换0/10次)"/>
   </displayList>
   </displayList>
 </component>
 </component>

+ 21 - 8
FGUIProject/assets/Studio/StudioEctypeUI.xml

@@ -2,16 +2,26 @@
 <component size="1080,1920">
 <component size="1080,1920">
   <controller name="c1" pages="0,,1," selected="1"/>
   <controller name="c1" pages="0,,1," selected="1"/>
   <displayList>
   <displayList>
-    <list id="n17_n3xh" name="listProperty" xy="119,235" size="842,142" layout="row" colGap="40" defaultItem="ui://xz8kxrecn3xhn" align="center">
+    <image id="n24_fa5e" name="n24" src="kqhdp" fileName="images/gzs_bjbj.png" xy="0,-240">
+      <relation target="" sidePair="center-center,middle-middle"/>
+    </image>
+    <image id="n25_kqhd" name="n25" src="kqhdz" fileName="images/gzsxian_2.png" xy="61,162">
+      <relation target="" sidePair="height-height"/>
+    </image>
+    <image id="n26_kqhd" name="n26" src="kqhdo" fileName="images/zpsxian_1.png" xy="0,258">
+      <gearDisplay controller="c1" pages="1"/>
+      <relation target="n17_n3xh" sidePair="top-top"/>
+    </image>
+    <list id="n17_n3xh" name="listProperty" xy="94,235" size="892,174" layout="row" colGap="60" defaultItem="ui://xz8kxrecn3xhn" align="center" vAlign="middle">
       <gearDisplay controller="c1" pages="1"/>
       <gearDisplay controller="c1" pages="1"/>
       <item/>
       <item/>
       <item/>
       <item/>
       <item/>
       <item/>
       <item/>
       <item/>
     </list>
     </list>
-    <list id="n16_n3xh" name="list" xy="201,418" pivot="0.5,0" size="678,1328" overflow="scroll" lineGap="20" defaultItem="ui://xz8kxrecn3xha" align="center">
-      <gearXY controller="c1" pages="0,1" values="201,234|201,418"/>
-      <gearSize controller="c1" pages="0,1" values="678,1507,1,1|678,1328,1,1"/>
+    <list id="n16_n3xh" name="list" xy="39,516" pivot="0.5,0" size="1002,1406" overflow="scroll" lineGap="63" defaultItem="ui://xz8kxrecn3xha" align="center">
+      <gearXY controller="c1" pages="0,1" values="39,320|39,516"/>
+      <gearSize controller="c1" pages="0,1" values="1002,1600,1,1|1002,1406,1,1"/>
       <relation target="" sidePair="bottomext-bottom"/>
       <relation target="" sidePair="bottomext-bottom"/>
       <item/>
       <item/>
       <item/>
       <item/>
@@ -22,9 +32,12 @@
       <item/>
       <item/>
     </list>
     </list>
     <component id="n18_n3xh" name="btnBack" src="9xlo8" fileName="components/ButtonBack1.xml" pkg="eg2y0ldp" xy="35,80"/>
     <component id="n18_n3xh" name="btnBack" src="9xlo8" fileName="components/ButtonBack1.xml" pkg="eg2y0ldp" xy="35,80"/>
-    <component id="n19_n3xh" name="valueBar" src="v3541v" fileName="components/ComponentValueBar.xml" pkg="eg2y0ldp" xy="159,105"/>
-    <text id="n21_n3xh" name="txtNum" xy="76,1791" size="225,42" fontSize="30" text="剩余次数:1/10"/>
-    <text id="n20_n3xh" name="txtTime" xy="78,1846" size="189,42" fontSize="30" text="12小时候刷新"/>
-    <component id="n22_n3xh" name="btnBuy" src="n3xhi" fileName="components/Button12.xml" xy="311,1776"/>
+    <component id="n19_n3xh" name="valueBar" src="v3541v" fileName="components/ComponentValueBar.xml" pkg="eg2y0ldp" xy="159,90"/>
+    <text id="n21_n3xh" name="txtNum" xy="709,460" size="243,44" group="n23_fa5e" fontSize="32" color="#e2deb6" text="剩余次数:1/10"/>
+    <text id="n20_n3xh" name="txtTime" xy="476,460" size="204,44" group="n23_fa5e" fontSize="32" color="#979166" text="12小时候刷新"/>
+    <component id="n22_n3xh" name="btnBuy" src="hinb5s" fileName="components/ButtonPlus2.xml" pkg="eg2y0ldp" xy="980,446" group="n23_fa5e"/>
+    <group id="n23_fa5e" name="n23" xy="476,446" size="572,71" advanced="true">
+      <gearXY controller="c1" pages="0" values="476,250" default="476,446"/>
+    </group>
   </displayList>
   </displayList>
 </component>
 </component>

+ 19 - 4
FGUIProject/assets/Studio/StudioUI.xml

@@ -1,10 +1,25 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <component size="1080,1920">
 <component size="1080,1920">
   <displayList>
   <displayList>
+    <image id="n6_fa5e" name="n6" src="kqhd1a" fileName="images/zjm_bj_1.jpg" xy="0,-240">
+      <relation target="" sidePair="center-center,middle-middle"/>
+    </image>
     <component id="n1_rbxq" name="btnBack" src="9xlo8" fileName="components/ButtonBack1.xml" pkg="eg2y0ldp" xy="35,80"/>
     <component id="n1_rbxq" name="btnBack" src="9xlo8" fileName="components/ButtonBack1.xml" pkg="eg2y0ldp" xy="35,80"/>
-    <component id="n2_rbxq" name="comMetal" src="rbxq5" fileName="components/ComEctype.xml" xy="638,681"/>
-    <component id="n3_rbxq" name="comFabric" src="rbxq5" fileName="components/ComEctype.xml" xy="255,812"/>
-    <component id="n4_rbxq" name="comProperty" src="rbxq5" fileName="components/ComEctype.xml" xy="167,1314"/>
-    <component id="n5_rbxq" name="comFiling" src="rbxq5" fileName="components/ComEctype.xml" xy="684,1453"/>
+    <component id="n2_rbxq" name="comMetal" src="rbxq5" fileName="components/ComEctype.xml" xy="840,910">
+      <relation target="" sidePair="right-right,bottom-bottom"/>
+      <property target="icon" propertyId="1" value="ui://xz8kxreckqhd19"/>
+    </component>
+    <component id="n3_rbxq" name="comFabric" src="rbxq5" fileName="components/ComEctype.xml" xy="30,1064">
+      <relation target="" sidePair="left-left,bottom-bottom"/>
+      <property target="icon" propertyId="1" value="ui://xz8kxreckqhd17"/>
+    </component>
+    <component id="n4_rbxq" name="comProperty" src="rbxq5" fileName="components/ComEctype.xml" xy="30,1345">
+      <relation target="" sidePair="left-left,bottom-bottom"/>
+      <property target="icon" propertyId="1" value="ui://xz8kxreckqhd18"/>
+    </component>
+    <component id="n5_rbxq" name="comFiling" src="rbxq5" fileName="components/ComEctype.xml" xy="820,1497">
+      <relation target="" sidePair="right-right,bottom-bottom"/>
+      <property target="icon" propertyId="1" value="ui://xz8kxreckqhd16"/>
+    </component>
   </displayList>
   </displayList>
 </component>
 </component>

+ 5 - 4
FGUIProject/assets/Studio/components/ComEctype.xml

@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<component size="164,162">
+<component size="198,198">
   <controller name="c1" pages="0,,1," selected="0"/>
   <controller name="c1" pages="0,,1," selected="0"/>
   <displayList>
   <displayList>
-    <loader id="n4_n3xh" name="icon" xy="0,0" size="164,162" url="ui://xz8kxrecrbxq3"/>
-    <image id="n3_n3xh" name="img" src="n3xhe" fileName="images/sxsx_sxdian.png" xy="11,10">
+    <loader id="n4_n3xh" name="icon" xy="-23,-9" size="236,218" url="ui://xz8kxreckqhd19" autoSize="true"/>
+    <image id="n3_n3xh" name="img" src="mnxr1c" fileName="images/zjm_anhui.png" xy="0,0">
       <gearDisplay controller="c1" pages="0"/>
       <gearDisplay controller="c1" pages="0"/>
     </image>
     </image>
-    <image id="n2_rbxq" name="imgLock" src="rbxq4" fileName="images/zhuxian_shuoto.png" xy="46,62">
+    <image id="n2_rbxq" name="imgLock" src="rbxq4" fileName="images/zhuxian_shuoto.png" xy="63,80">
       <gearDisplay controller="c1" pages="0"/>
       <gearDisplay controller="c1" pages="0"/>
     </image>
     </image>
   </displayList>
   </displayList>
+  <customProperty target="icon" propertyId="1"/>
 </component>
 </component>

+ 11 - 13
FGUIProject/assets/Studio/components/ListItem.xml

@@ -1,23 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<component size="682,300">
-  <controller name="star" pages="0,,1,,2,,3," selected="1"/>
+<component size="1009,161">
+  <controller name="star" pages="0,,1,,2,,3," selected="3"/>
   <displayList>
   <displayList>
-    <image id="n16_n3xh" name="n16" src="n3xhb" fileName="images/fzjl_dik_2.png" xy="-6,4" size="682,297"/>
-    <loader id="n6_rbxq" name="loaIcon" xy="70,70" size="164,162" url="ui://xz8kxrecrbxq3"/>
-    <image id="n8_rbxq" name="n8" src="rbxq6" fileName="images/fzyc_hxk_1.png" xy="2,0"/>
-    <text id="n10_rbxq" name="txtTitle" xy="326,107" size="258,80" fontSize="30" align="center" autoSize="none" text="完成主线1-10解锁"/>
-    <image id="n7_rbxq" name="n7" src="rbxq7" fileName="images/fzyc_hxkan_1.png" xy="0,0" group="n15_rbxq"/>
-    <image id="n9_rbxq" name="n9" src="rbxq4" fileName="images/zhuxian_shuoto.png" xy="117,130" group="n15_rbxq"/>
-    <group id="n15_rbxq" name="grpLock" xy="0,0" size="300,300" advanced="true"/>
-    <image id="n11_rbxq" name="n11" src="rbxq9" fileName="images/zx_jq_djtubiao_1.png" xy="357,207" group="n14_rbxq">
+    <image id="n16_n3xh" name="n16" src="kqhds" fileName="images/gzsdi_1.png" xy="-6,4"/>
+    <image id="n18_kqhd" name="n18" src="kqhdt" fileName="images/gzsdi_2.png" xy="194,11"/>
+    <loader id="n6_rbxq" name="loaIcon" xy="202,19" size="120,120" url="ui://xz8kxrecrbxq3" fill="scale"/>
+    <image id="n17_kqhd" name="imgLock" src="kqhdy" fileName="images/gzssuo.png" xy="196,13"/>
+    <text id="n10_rbxq" name="txtTitle" xy="381,49" size="381,62" fontSize="46" color="#877d53" align="center" text="完成主线1-10解锁"/>
+    <image id="n11_rbxq" name="n11" src="j48o95" fileName="imagesExport/zx_jq_djtubiao_1.png" pkg="mfvz4q8k" xy="739,58" group="n14_rbxq">
       <gearDisplay controller="star" pages="1,2,3"/>
       <gearDisplay controller="star" pages="1,2,3"/>
     </image>
     </image>
-    <image id="n12_rbxq" name="n12" src="rbxq9" fileName="images/zx_jq_djtubiao_1.png" xy="414,208" group="n14_rbxq">
+    <image id="n12_rbxq" name="n12" src="j48o95" fileName="imagesExport/zx_jq_djtubiao_1.png" pkg="mfvz4q8k" xy="794,59" group="n14_rbxq">
       <gearDisplay controller="star" pages="2,3"/>
       <gearDisplay controller="star" pages="2,3"/>
     </image>
     </image>
-    <image id="n13_rbxq" name="n13" src="rbxq9" fileName="images/zx_jq_djtubiao_1.png" xy="478,209" group="n14_rbxq">
+    <image id="n13_rbxq" name="n13" src="j48o95" fileName="imagesExport/zx_jq_djtubiao_1.png" pkg="mfvz4q8k" xy="849,60" group="n14_rbxq">
       <gearDisplay controller="star" pages="3"/>
       <gearDisplay controller="star" pages="3"/>
     </image>
     </image>
-    <group id="n14_rbxq" name="n14" xy="357,207" size="162,47" advanced="true"/>
+    <group id="n14_rbxq" name="n14" xy="739,58" size="151,47" advanced="true" layout="hz" colGap="14"/>
   </displayList>
   </displayList>
 </component>
 </component>

+ 10 - 13
FGUIProject/assets/Studio/components/ListPropertyItem.xml

@@ -1,19 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<component size="142,142" extention="Button">
-  <controller name="button" pages="0,up,1,down" selected="1"/>
+<component size="174,174" extention="Button">
+  <controller name="button" pages="0,up,1,down,2,lock" selected="1"/>
   <displayList>
   <displayList>
-    <image id="n3_n3xh" name="n3" src="n3xhd" fileName="images/sxsx_sxdi.png" xy="0,0">
-      <relation target="" sidePair="width-width,height-height"/>
-    </image>
-    <text id="n4_n3xh" name="title" xy="-21,-61" size="184,264" fontSize="46" color="#fff7eb" align="center" vAlign="middle" autoSize="none" singleLine="true" text="风">
-      <relation target="" sidePair="width-width,height-height"/>
-    </text>
-    <image id="n5_n3xh" name="n5" src="n3xhe" fileName="images/sxsx_sxdian.png" xy="0,0">
+    <loader id="n8_kqhd" name="n8" xy="1,1" size="172,172" url="ui://xz8kxreckqhdu" autoSize="true">
       <gearDisplay controller="button" pages="1"/>
       <gearDisplay controller="button" pages="1"/>
-    </image>
-    <image id="n6_n3xh" name="n6" src="n3xhf" fileName="images/sxsx_dgdg.png" xy="40,44">
-      <gearDisplay controller="button" pages="1"/>
-    </image>
+    </loader>
+    <loader id="n9_kqhd" name="n9" xy="1,0" size="172,173" url="ui://xz8kxreckqhdq" autoSize="true">
+      <gearDisplay controller="button" pages="0"/>
+    </loader>
+    <loader id="n10_kqhd" name="n10" xy="0,0" size="174,174" url="ui://xz8kxreckqhd12" autoSize="true">
+      <gearDisplay controller="button" pages="2"/>
+    </loader>
   </displayList>
   </displayList>
   <Button mode="Radio"/>
   <Button mode="Radio"/>
 </component>
 </component>

二进制
FGUIProject/assets/Studio/images/fzjl_dik_2.png


二进制
FGUIProject/assets/Studio/images/fzyc_hxk_1.png


二进制
FGUIProject/assets/Studio/images/fzyc_hxkan_1.png


二进制
FGUIProject/assets/Studio/images/gzs_bjbj.png


二进制
FGUIProject/assets/Studio/images/gzsatb_1.png


二进制
FGUIProject/assets/Studio/images/gzsatb_2.png


二进制
FGUIProject/assets/Studio/images/gzsatb_3.png


二进制
FGUIProject/assets/Studio/images/gzsatb_4.png


二进制
FGUIProject/assets/Studio/images/gzsdi_1.png


二进制
FGUIProject/assets/Studio/images/gzsdi_2.png


二进制
FGUIProject/assets/Studio/images/gzsltb_1.png


二进制
FGUIProject/assets/Studio/images/gzsltb_2.png


二进制
FGUIProject/assets/Studio/images/gzsltb_3.png


二进制
FGUIProject/assets/Studio/images/gzsltb_4.png


二进制
FGUIProject/assets/Studio/images/gzssuo.png


二进制
FGUIProject/assets/Studio/images/gzswtb_1.png


二进制
FGUIProject/assets/Studio/images/gzswtb_2.png


二进制
FGUIProject/assets/Studio/images/gzswtb_3.png


二进制
FGUIProject/assets/Studio/images/gzswtb_4.png


二进制
FGUIProject/assets/Studio/images/gzsxian_2.png


二进制
FGUIProject/assets/Studio/images/sxsx_dgdg.png


二进制
FGUIProject/assets/Studio/images/sxsx_sxdi.png


二进制
FGUIProject/assets/Studio/images/sxsx_sxdian.png


二进制
FGUIProject/assets/Studio/images/zjm_anhui.png


二进制
FGUIProject/assets/Studio/images/zjm_bj_1.jpg


二进制
FGUIProject/assets/Studio/images/zjm_rk_10.png


二进制
FGUIProject/assets/Studio/images/zjm_rk_11.png


二进制
FGUIProject/assets/Studio/images/zjm_rk_8.png


二进制
FGUIProject/assets/Studio/images/zjm_rk_9.png


二进制
FGUIProject/assets/Studio/images/zpsxian_1.png


二进制
FGUIProject/assets/Studio/images/zx_jq_djtubiao_1.png


二进制
FGUIProject/assets/Studio/imagesExport/hb_anniu_3.png


二进制
FGUIProject/assets/Studio/imagesExport/hb_kuangdi_1.png


二进制
FGUIProject/assets/Studio/imagesExport/hb_kuangdi_2.png


+ 24 - 10
FGUIProject/assets/Studio/package.xml

@@ -6,20 +6,34 @@
     <image id="rbxq3" name="sc_zizhuan_6.png" path="/images/" exported="true"/>
     <image id="rbxq3" name="sc_zizhuan_6.png" path="/images/" exported="true"/>
     <image id="rbxq4" name="zhuxian_shuoto.png" path="/images/"/>
     <image id="rbxq4" name="zhuxian_shuoto.png" path="/images/"/>
     <component id="rbxq5" name="ComEctype.xml" path="/components/" exported="true"/>
     <component id="rbxq5" name="ComEctype.xml" path="/components/" exported="true"/>
-    <image id="rbxq6" name="fzyc_hxk_1.png" path="/images/"/>
-    <image id="rbxq7" name="fzyc_hxkan_1.png" path="/images/"/>
-    <image id="rbxq9" name="zx_jq_djtubiao_1.png" path="/images/"/>
     <component id="n3xha" name="ListItem.xml" path="/components/"/>
     <component id="n3xha" name="ListItem.xml" path="/components/"/>
-    <image id="n3xhb" name="fzjl_dik_2.png" path="/images/" scale="9grid" scale9grid="217,42,656,86"/>
-    <image id="n3xhd" name="sxsx_sxdi.png" path="/images/"/>
-    <image id="n3xhe" name="sxsx_sxdian.png" path="/images/"/>
-    <image id="n3xhf" name="sxsx_dgdg.png" path="/images/"/>
     <component id="n3xhh" name="StudioBuyNumUI.xml" path="/" exported="true"/>
     <component id="n3xhh" name="StudioBuyNumUI.xml" path="/" exported="true"/>
     <component id="n3xhi" name="Button12.xml" path="/components/"/>
     <component id="n3xhi" name="Button12.xml" path="/components/"/>
-    <image id="n3xhj" name="hb_anniu_3.png" path="/imagesExport/"/>
-    <image id="n3xhk" name="hb_kuangdi_2.png" path="/imagesExport/"/>
-    <image id="n3xhl" name="hb_kuangdi_1.png" path="/imagesExport/"/>
     <component id="n3xhn" name="ListPropertyItem.xml" path="/components/"/>
     <component id="n3xhn" name="ListPropertyItem.xml" path="/components/"/>
+    <image id="kqhdo" name="zpsxian_1.png" path="/images/"/>
+    <image id="kqhdp" name="gzs_bjbj.png" path="/images/" atlas="alone_npot"/>
+    <image id="kqhdq" name="gzsatb_1.png" path="/images/"/>
+    <image id="kqhdr" name="gzsatb_2.png" path="/images/"/>
+    <image id="kqhds" name="gzsdi_1.png" path="/images/"/>
+    <image id="kqhdt" name="gzsdi_2.png" path="/images/"/>
+    <image id="kqhdu" name="gzsltb_1.png" path="/images/"/>
+    <image id="kqhdv" name="gzsltb_2.png" path="/images/"/>
+    <image id="kqhdw" name="gzsltb_3.png" path="/images/"/>
+    <image id="kqhdx" name="gzsltb_4.png" path="/images/"/>
+    <image id="kqhdy" name="gzssuo.png" path="/images/"/>
+    <image id="kqhdz" name="gzsxian_2.png" path="/images/" scale="9grid" scale9grid="0,635,0,681"/>
+    <image id="kqhd10" name="gzsatb_3.png" path="/images/"/>
+    <image id="kqhd11" name="gzsatb_4.png" path="/images/"/>
+    <image id="kqhd12" name="gzswtb_1.png" path="/images/"/>
+    <image id="kqhd13" name="gzswtb_2.png" path="/images/"/>
+    <image id="kqhd14" name="gzswtb_3.png" path="/images/"/>
+    <image id="kqhd15" name="gzswtb_4.png" path="/images/"/>
+    <image id="kqhd16" name="zjm_rk_11.png" path="/images/"/>
+    <image id="kqhd17" name="zjm_rk_8.png" path="/images/"/>
+    <image id="kqhd18" name="zjm_rk_9.png" path="/images/"/>
+    <image id="kqhd19" name="zjm_rk_10.png" path="/images/"/>
+    <image id="kqhd1a" name="zjm_bj_1.jpg" path="/images/" atlas="alone_npot"/>
+    <image id="mnxr1c" name="zjm_anhui.png" path="/images/"/>
   </resources>
   </resources>
   <publish name="" path="..\GameClient\Assets\ResIn\UI\Studio" packageCount="2" genCode="true"/>
   <publish name="" path="..\GameClient\Assets\ResIn\UI\Studio" packageCount="2" genCode="true"/>
 </packageDescription>
 </packageDescription>

+ 1 - 1
GameClient/Assets/Game/CSShare

@@ -1 +1 @@
-Subproject commit c539e2e466db8ce1b50544453ebf098dffce81b9
+Subproject commit 294f9d5d7fd36d34c9e4810b49b534f864203b5c

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -32,6 +32,9 @@ namespace GFGGame
         public const string STORY_FIGHT_QUICKLY_SUCCESS = "STORY_FIGHT_QUICKLY_SUCCESS";
         public const string STORY_FIGHT_QUICKLY_SUCCESS = "STORY_FIGHT_QUICKLY_SUCCESS";
 
 
 
 
+        public const string GET_STUDIO_INFO = "GET_STUDIO_INFO";
+        public const string BUY_STUDIO_PLAY_TIMES = "BUY_STUDIO_PLAY_TIMES";
+        public const string NOTICE_STUDIO_PLAY_TIMES = "NOTICE_STUDIO_PLAY_TIMES";
 
 
     }
     }
 }
 }

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

@@ -164,8 +164,9 @@ namespace GFGGame
             //GameProxy.ReqGetStoryStarList();
             //GameProxy.ReqGetStoryStarList();
 
 
             ItemHelper.GetItemAttributeInfos().Coroutine();
             ItemHelper.GetItemAttributeInfos().Coroutine();
-            SuitFosterHelper.SendGetSuitInfos().Coroutine();
+            SuitFosterProxy.SendGetSuitInfos().Coroutine();
             InstanceZonesSProxy.GetStoryInfos().Coroutine();
             InstanceZonesSProxy.GetStoryInfos().Coroutine();
+            MainStorySProxy.GetStoryInfos().Coroutine();
         }
         }
 
 
         public static void PrepareUpdateTreasure()
         public static void PrepareUpdateTreasure()

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

@@ -22,7 +22,7 @@ namespace GFGGame
             if (cfg.parentId != null && cfg.parentId != "")
             if (cfg.parentId != null && cfg.parentId != "")
             {
             {
                 //先检查父功能是否开启
                 //先检查父功能是否开启
-                if (!CheckIsFunOpenById(cfg.parentId))
+                if (!CheckIsFunOpenById(cfg.parentId, showTips))
                 {
                 {
                     return false;
                     return false;
                 }
                 }

+ 5 - 5
GameClient/Assets/Game/HotUpdate/Data/InstanceZonesDataManager.cs

@@ -27,7 +27,7 @@ namespace GFGGame
             {
             {
                 _currentLevelCfgId = value;
                 _currentLevelCfgId = value;
                 var levelCfg = StoryLevelCfgArray.Instance.GetCfg(_currentLevelCfgId);
                 var levelCfg = StoryLevelCfgArray.Instance.GetCfg(_currentLevelCfgId);
-                if(levelCfg.type == ConstInstanceZonesType.Story)
+                if (levelCfg.type == ConstInstanceZonesType.Story)
                 {
                 {
                     StoryDataManager.currentLevelCfgId = _currentLevelCfgId;
                     StoryDataManager.currentLevelCfgId = _currentLevelCfgId;
                 }
                 }
@@ -100,9 +100,9 @@ namespace GFGGame
             }
             }
         }
         }
 
 
-        public static int GetStarCountHistory(int levelID)
+        public static int GetStarCountHistory(int levelCfgId)
         {
         {
-            _starDic.TryGetValue(levelID, out var star);
+            _starDic.TryGetValue(levelCfgId, out var star);
             return star;
             return star;
         }
         }
 
 
@@ -205,10 +205,10 @@ namespace GFGGame
         public static bool CheckChapterPass(int type, int subType, int chapterId, int levelCount)
         public static bool CheckChapterPass(int type, int subType, int chapterId, int levelCount)
         {
         {
             var chapterCfg = StoryChapterCfgArray.Instance.GetCfg(chapterId);
             var chapterCfg = StoryChapterCfgArray.Instance.GetCfg(chapterId);
-            if(chapterCfg != null)
+            if (chapterCfg != null)
             {
             {
                 var passLevelOrder = InstanceZonesDataManager.GetPassLevelOrder(type, subType, chapterId);
                 var passLevelOrder = InstanceZonesDataManager.GetPassLevelOrder(type, subType, chapterId);
-                if(levelCount <= passLevelOrder)
+                if (levelCount <= passLevelOrder)
                 {
                 {
                     return true;
                     return true;
                 }
                 }

+ 63 - 0
GameClient/Assets/Game/HotUpdate/Data/StudioDataManager.cs

@@ -1,11 +1,74 @@
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using ET;
+using GFGGame;
+
 
 
 namespace GFGGame
 namespace GFGGame
 {
 {
     public class StudioDataManager : SingletonBase<StudioDataManager>
     public class StudioDataManager : SingletonBase<StudioDataManager>
     {
     {
+        private Dictionary<int, StudioData> _StudioInfoById = new Dictionary<int, StudioData>();
+
+        public int TYPE_SELECT_INDEX = 0;//界面类型0无属性选择,1有属性选择
+        public int PROPERTY_SELECT_INDEX = 0;//属性类型
+
+        public void Clear()
+        {
+            _StudioInfoById.Clear();
+        }
+
+
+        public void RspStudioInfos(StudioData studioData)
+        {
+            if (!_StudioInfoById.ContainsKey(studioData.ChapterId))
+            {
+                _StudioInfoById.Add(studioData.ChapterId, studioData);
+            }
+            _StudioInfoById[studioData.ChapterId] = studioData;
+        }
+        public void RspBuyStudioPlayTimes(int chapterId, int buyTimes, int totalPlayTimes)
+        {
+            _StudioInfoById[chapterId].BuyTimes = buyTimes;
+            _StudioInfoById[chapterId].TotalPlayTimes = totalPlayTimes;
+
+        }
+        public void NoticeStudioPlayTimes(M2C_NoticeStudioPlayTimes message)
+        {
+            _StudioInfoById[message.ChapterId].PlayTimes = message.PlayTimes;
+        }
 
 
 
 
+        public StudioData GetStudioDataById(int id)
+        {
+            if (_StudioInfoById.ContainsKey(id))
+            {
+                return _StudioInfoById[id];
+            }
+            else
+            {
+                StudioData studioData = new StudioData() { ChapterId = id, BuyTimes = 0, PlayTimes = 0, TotalPlayTimes = StudioCfgArray.Instance.GetCfg(id).num };
+                RspStudioInfos(studioData);
+                return studioData;
+            }
+        }
 
 
+        public void IsCanFight(StoryLevelCfg[] storyLevelCfgs, StoryLevelCfg storyLevelCfg, out bool canFight, out string content)
+        {
+            bool isPass = InstanceZonesDataManager.CheckLevelPass(storyLevelCfg.needStoryLevelId);
+            bool isRoleLv = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl) >= storyLevelCfg.needRoleLv;
+            bool isLastPast = true;
+            int index = Array.IndexOf(storyLevelCfgs, storyLevelCfg);
+            if (index > 0)
+            {
+                isLastPast = InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[index - 1].needStoryLevelId);
+            }
+            content = "";
+            if (!isRoleLv) content = string.Format("主角等级达到{0}级解锁", storyLevelCfg.order);
+            if (!isLastPast) content = "需通关前置关卡";
+            StoryLevelCfg needStoryLevelCfg = StoryLevelCfgArray.Instance.GetCfg(storyLevelCfg.needStoryLevelId);
+            if (!isPass) content = string.Format("完成主线{0}-{1}解锁", needStoryLevelCfg.chapterId, needStoryLevelCfg.order);
+            canFight = isPass && isRoleLv && isLastPast;
+        }
     }
     }
 }
 }

+ 27 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/StudioData.cs

@@ -0,0 +1,27 @@
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class StudioData
+    {
+        /// <summary>
+        /// 副本Id
+        /// </summary>
+        public int ChapterId;
+
+        /// <summary>
+        /// 已购买次数
+        /// </summary>
+        public int BuyTimes;
+
+        /// <summary>
+        /// 已挑战次数
+        /// </summary>
+        public int PlayTimes;
+
+        /// <summary>
+        /// 可挑战次数
+        /// </summary>
+        public int TotalPlayTimes;
+    }
+}

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

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

+ 4 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_MainUI.cs

@@ -16,6 +16,7 @@ namespace UI.Main
         public UI_ButtonModle1 m_btnZhaiXing;
         public UI_ButtonModle1 m_btnZhaiXing;
         public UI_ButtonModle1 m_btnCiPai;
         public UI_ButtonModle1 m_btnCiPai;
         public UI_ButtonModle1 m_btnStudio;
         public UI_ButtonModle1 m_btnStudio;
+        public UI_ButtonModle1 m_btnSurvey;
         public GList m_list;
         public GList m_list;
         public GButton m_btnChange;
         public GButton m_btnChange;
         public const string URL = "ui://mfvz4q8kq08x0";
         public const string URL = "ui://mfvz4q8kq08x0";
@@ -74,6 +75,7 @@ namespace UI.Main
             m_btnZhaiXing = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnZhaiXing"));
             m_btnZhaiXing = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnZhaiXing"));
             m_btnCiPai = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnCiPai"));
             m_btnCiPai = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnCiPai"));
             m_btnStudio = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnStudio"));
             m_btnStudio = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnStudio"));
+            m_btnSurvey = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnSurvey"));
             m_list = (GList)comp.GetChild("list");
             m_list = (GList)comp.GetChild("list");
             m_btnChange = (GButton)comp.GetChild("btnChange");
             m_btnChange = (GButton)comp.GetChild("btnChange");
         }
         }
@@ -95,6 +97,8 @@ namespace UI.Main
             m_btnCiPai = null;
             m_btnCiPai = null;
             m_btnStudio.Dispose();
             m_btnStudio.Dispose();
             m_btnStudio = null;
             m_btnStudio = null;
+            m_btnSurvey.Dispose();
+            m_btnSurvey = null;
             m_list = null;
             m_list = null;
             m_btnChange = null;
             m_btnChange = null;
             if(disposeTarget && target != null)
             if(disposeTarget && target != null)

+ 3 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Studio/UI_ListItem.cs

@@ -9,8 +9,8 @@ namespace UI.Studio
         public GComponent target;
         public GComponent target;
         public Controller m_star;
         public Controller m_star;
         public GLoader m_loaIcon;
         public GLoader m_loaIcon;
+        public GImage m_imgLock;
         public GTextField m_txtTitle;
         public GTextField m_txtTitle;
-        public GGroup m_grpLock;
         public const string URL = "ui://xz8kxrecn3xha";
         public const string URL = "ui://xz8kxrecn3xha";
         public const string PACKAGE_NAME = "Studio";
         public const string PACKAGE_NAME = "Studio";
         public const string RES_NAME = "ListItem";
         public const string RES_NAME = "ListItem";
@@ -60,15 +60,15 @@ namespace UI.Studio
         {
         {
             m_star = comp.GetController("star");
             m_star = comp.GetController("star");
             m_loaIcon = (GLoader)comp.GetChild("loaIcon");
             m_loaIcon = (GLoader)comp.GetChild("loaIcon");
+            m_imgLock = (GImage)comp.GetChild("imgLock");
             m_txtTitle = (GTextField)comp.GetChild("txtTitle");
             m_txtTitle = (GTextField)comp.GetChild("txtTitle");
-            m_grpLock = (GGroup)comp.GetChild("grpLock");
         }
         }
         public void Dispose(bool disposeTarget = false)
         public void Dispose(bool disposeTarget = false)
         {
         {
             m_star = null;
             m_star = null;
             m_loaIcon = null;
             m_loaIcon = null;
+            m_imgLock = null;
             m_txtTitle = null;
             m_txtTitle = null;
-            m_grpLock = null;
             if(disposeTarget && target != null)
             if(disposeTarget && target != null)
             {
             {
                 target.RemoveFromParent();
                 target.RemoveFromParent();

+ 3 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Studio/UI_StudioBuyNumUI.cs

@@ -7,7 +7,7 @@ namespace UI.Studio
     public partial class UI_StudioBuyNumUI
     public partial class UI_StudioBuyNumUI
     {
     {
         public GComponent target;
         public GComponent target;
-        public GImage m_bg;
+        public GLoader m_loaBg;
         public GButton m_btnBuy;
         public GButton m_btnBuy;
         public GButton m_btnExchange;
         public GButton m_btnExchange;
         public GComponent m_comCostItem;
         public GComponent m_comCostItem;
@@ -62,7 +62,7 @@ namespace UI.Studio
 
 
         private void Init(GComponent comp)
         private void Init(GComponent comp)
         {
         {
-            m_bg = (GImage)comp.GetChild("bg");
+            m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_btnBuy = (GButton)comp.GetChild("btnBuy");
             m_btnBuy = (GButton)comp.GetChild("btnBuy");
             m_btnExchange = (GButton)comp.GetChild("btnExchange");
             m_btnExchange = (GButton)comp.GetChild("btnExchange");
             m_comCostItem = (GComponent)comp.GetChild("comCostItem");
             m_comCostItem = (GComponent)comp.GetChild("comCostItem");
@@ -73,7 +73,7 @@ namespace UI.Studio
         }
         }
         public void Dispose(bool disposeTarget = false)
         public void Dispose(bool disposeTarget = false)
         {
         {
-            m_bg = null;
+            m_loaBg = null;
             m_btnBuy = null;
             m_btnBuy = null;
             m_btnExchange = null;
             m_btnExchange = null;
             m_comCostItem = null;
             m_comCostItem = null;

+ 58 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/StudioProxy.cs

@@ -0,0 +1,58 @@
+using System.Collections.Generic;
+using ET;
+using GFGGame;
+
+namespace ET
+{
+    public class NoticeStudioPlayTimes : AMHandler<M2C_NoticeStudioPlayTimes>
+    {
+        protected override async ETTask Run(Session session, M2C_NoticeStudioPlayTimes message)
+        {
+            StudioDataManager.Instance.NoticeStudioPlayTimes(message);
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_STUDIO_PLAY_TIMES);
+
+            await ETTask.CompletedTask;
+        }
+    }
+}
+namespace GFGGame
+{
+    public class StudioProxy
+    {
+
+        //请求工作室副本数据
+        public static async ETTask ReqStudioInfos()
+        {
+            M2C_GetStudioInfos response = null;
+            response = (M2C_GetStudioInfos)await MessageHelper.SendToServer(new C2M_GetStudioInfos());
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    for (int i = 0; i < response.infos.Count; i++)
+                    {
+                        StudioData studioData = new StudioData { ChapterId = response.infos[i].ChapterId, BuyTimes = response.infos[i].BuyTimes, PlayTimes = response.infos[i].PlayTimes, TotalPlayTimes = response.infos[i].TotalPlayTimes };
+                        StudioDataManager.Instance.RspStudioInfos(studioData);
+                    }
+                    EventAgent.DispatchEvent(ConstMessage.GET_STUDIO_INFO);
+                }
+            }
+        }
+
+        //请求购买副本挑战次数
+        public static async ETTask ReqBuyStudioPlayTimes(int chapterId, int buyType, int buyCount)
+        {
+            M2C_BuyStudioPlayTimes response = null;
+            response = (M2C_BuyStudioPlayTimes)await MessageHelper.SendToServer(new C2M_BuyStudioPlayTimes() { ChapterId = chapterId, BuyType = buyType, BuyCount = buyCount });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    StudioDataManager.Instance.RspBuyStudioPlayTimes(response.ChapterId, response.BuyTimes, response.TotalPlayTimes);
+                    EventAgent.DispatchEvent(ConstMessage.BUY_STUDIO_PLAY_TIMES);
+
+                }
+            }
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/StudioProxy.cs.meta

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

+ 100 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/SuitFosterProxy.cs

@@ -0,0 +1,100 @@
+using System;
+using GFGGame;
+
+namespace ET
+{
+    public static class SuitFosterProxy
+    {
+        //获取所有养护套装信息
+        public static async ETTask<int> SendGetSuitInfos()
+        {
+            M2C_GetSuitInfos getSuitInfos = null;
+            Session session = null;
+            try
+            {
+                session = GameGlobal.zoneScene.GetComponent<SessionComponent>().Session;
+                getSuitInfos = (M2C_GetSuitInfos)await session.Call(new C2M_GetSuitInfos() { });
+            }
+            catch
+            {
+                return ErrorCode.ERR_NetWorkError;
+            }
+            if (getSuitInfos.Error != ErrorCode.ERR_Success)
+            {
+                return getSuitInfos.Error;
+            }
+
+            DressUpMenuSuitDataManager.SetSuitInfo(getSuitInfos.SuitInfos);
+
+            return ErrorCode.ERR_Success;
+        }
+
+        //养护套装
+        public static async ETTask<int> SendMaintainSuit(int suitId, int maintainStep)
+        {
+            M2C_MaintainSuit maintainSuit = null;
+            Session session = null;
+            try
+            {
+                session = GameGlobal.zoneScene.GetComponent<SessionComponent>().Session;
+                maintainSuit = (M2C_MaintainSuit)await session.Call(new C2M_MaintainSuit() { SuitId = suitId, MaintainStep = maintainStep });
+            }
+            catch
+            {
+                return ErrorCode.ERR_NetWorkError;
+            }
+            if (maintainSuit.Error != ErrorCode.ERR_Success)
+            {
+                return maintainSuit.Error;
+            }
+            SuitFosterDataManager.Instance.SetMaintainSuit(suitId, maintainSuit.MaintainStep);
+
+            return ErrorCode.ERR_Success;
+        }
+
+        //领取养护套装奖励
+        public static async ETTask<int> SendGetMaintainSuitBonus(int suitId, int maintainStep)
+        {
+            M2C_GetMaintainSuitBonus getMaintainSuitBonus = null;
+            Session session = null;
+            try
+            {
+                session = GameGlobal.zoneScene.GetComponent<SessionComponent>().Session;
+                getMaintainSuitBonus = (M2C_GetMaintainSuitBonus)await session.Call(new C2M_GetMaintainSuitBonus() { SuitId = suitId, MaintainStep = maintainStep });
+            }
+            catch
+            {
+                return ErrorCode.ERR_NetWorkError;
+            }
+            if (getMaintainSuitBonus.Error != ErrorCode.ERR_Success)
+            {
+                return getMaintainSuitBonus.Error;
+            }
+            SuitFosterDataManager.Instance.SetMaintainBonusSteps(suitId, getMaintainSuitBonus.MaintainStep);
+
+            return ErrorCode.ERR_Success;
+        }
+
+        //换新套装
+        public static async ETTask<int> SendMakeNewSuit(int suitId)
+        {
+            M2C_MakeNewSuit makeNewSuit = null;
+            Session session = null;
+            try
+            {
+                session = GameGlobal.zoneScene.GetComponent<SessionComponent>().Session;
+                makeNewSuit = (M2C_MakeNewSuit)await session.Call(new C2M_MakeNewSuit() { SuitId = suitId });
+            }
+            catch
+            {
+                return ErrorCode.ERR_NetWorkError;
+            }
+            if (makeNewSuit.Error != ErrorCode.ERR_Success)
+            {
+                return makeNewSuit.Error;
+            }
+            SuitFosterDataManager.Instance.SetMakeNewSuit(suitId, makeNewSuit.MakeNewState);
+            return ErrorCode.ERR_Success;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/SuitFosterProxy.cs.meta

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

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitFosterView.cs

@@ -102,7 +102,7 @@ namespace GFGGame
                 PromptController.Instance.ShowFloatTextPrompt("材料不足");
                 PromptController.Instance.ShowFloatTextPrompt("材料不足");
                 return;
                 return;
             }
             }
-            SuitFosterHelper.SendMaintainSuit(_suitId, _index + 1).Coroutine();
+            SuitFosterProxy.SendMaintainSuit(_suitId, _index + 1).Coroutine();
             this.Hide();
             this.Hide();
         }
         }
     }
     }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitListView.cs

@@ -51,7 +51,7 @@ namespace GFGGame
             _ui.m_btnHaveGot.selected = true;
             _ui.m_btnHaveGot.selected = true;
             _ui.m_btnNotGet.selected = true;
             _ui.m_btnNotGet.selected = true;
 
 
-            SuitFosterHelper.SendGetSuitInfos().Coroutine();
+            SuitFosterProxy.SendGetSuitInfos().Coroutine();
             UpdateListSuit();
             UpdateListSuit();
             EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateSuitStatus);
             EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateSuitStatus);
         }
         }

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitView.cs

@@ -233,7 +233,7 @@ namespace GFGGame
             }
             }
             else
             else
             {
             {
-                SuitFosterHelper.SendGetMaintainSuitBonus(_suitId, index + 1).Coroutine();
+                SuitFosterProxy.SendGetMaintainSuitBonus(_suitId, index + 1).Coroutine();
             }
             }
         }
         }
         private void OnClickBtnPropertyShow()
         private void OnClickBtnPropertyShow()
@@ -355,7 +355,7 @@ namespace GFGGame
                 PromptController.Instance.ShowFloatTextPrompt(string.Format("完成{0}开启换新", SuitFosterDataManager.Instance.stepNames[cfg.renewOpenLv - 1]));
                 PromptController.Instance.ShowFloatTextPrompt(string.Format("完成{0}开启换新", SuitFosterDataManager.Instance.stepNames[cfg.renewOpenLv - 1]));
                 return;
                 return;
             }
             }
-            SuitFosterHelper.SendMakeNewSuit(_suitId).Coroutine();
+            SuitFosterProxy.SendMakeNewSuit(_suitId).Coroutine();
         }
         }
         private void OnListenerRenew()
         private void OnListenerRenew()
         {
         {

+ 44 - 13
GameClient/Assets/Game/HotUpdate/Views/Studio/StudioBaseView.cs

@@ -1,4 +1,5 @@
 
 
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using ET;
 using ET;
 using FairyGUI;
 using FairyGUI;
@@ -13,6 +14,7 @@ namespace GFGGame
 
 
         protected StudioCfg studioCfg;
         protected StudioCfg studioCfg;
         protected StoryLevelCfg[] storyLevelCfgs;
         protected StoryLevelCfg[] storyLevelCfgs;
+        protected StudioData studioData;
 
 
         public override void Dispose()
         public override void Dispose()
         {
         {
@@ -34,6 +36,10 @@ namespace GFGGame
             _ui.m_list.SetVirtual();
             _ui.m_list.SetVirtual();
 
 
             _ui.m_btnBuy.onClick.Add(OnCliclBtnBuy);
             _ui.m_btnBuy.onClick.Add(OnCliclBtnBuy);
+
+            EventAgent.AddEventListener(ConstMessage.BUY_STUDIO_PLAY_TIMES, UpdateView);
+            EventAgent.AddEventListener(ConstMessage.NOTICE_STUDIO_PLAY_TIMES, UpdateView);
+
         }
         }
 
 
         protected override void OnShown()
         protected override void OnShown()
@@ -41,6 +47,8 @@ namespace GFGGame
             base.OnShown();
             base.OnShown();
             _valueBarController.OnShown();
             _valueBarController.OnShown();
             UpdateView();
             UpdateView();
+            Timers.inst.Add(1, 0, UpdateShowTime);
+
         }
         }
 
 
         protected override void OnHide()
         protected override void OnHide()
@@ -49,12 +57,12 @@ namespace GFGGame
             _valueBarController.OnHide();
             _valueBarController.OnHide();
             studioCfg = null;
             studioCfg = null;
             storyLevelCfgs = null;
             storyLevelCfgs = null;
+            studioData = null;
             Timers.inst.Remove(UpdateShowTime);
             Timers.inst.Remove(UpdateShowTime);
         }
         }
         private void UpdateView()
         private void UpdateView()
         {
         {
-            _ui.m_txtNum.text = string.Format("剩余次数:{0}/{1}", 1, this.studioCfg.num);
-            Timers.inst.Add(1, 0, UpdateShowTime);
+            _ui.m_txtNum.text = string.Format("剩余次数:{0}/{1}", this.studioData.TotalPlayTimes - this.studioData.PlayTimes, this.studioData.TotalPlayTimes);
         }
         }
         private void UpdateShowTime(object param)
         private void UpdateShowTime(object param)
         {
         {
@@ -63,27 +71,50 @@ namespace GFGGame
         private void ListItemRender(int index, GObject obj)
         private void ListItemRender(int index, GObject obj)
         {
         {
             UI_ListItem item = UI_ListItem.Proxy(obj);
             UI_ListItem item = UI_ListItem.Proxy(obj);
-            // item.m_loaIcon.url=
-            bool isPass = InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[index].needStoryLevelId);
-            bool isRoleLv = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl) >= storyLevelCfgs[index].needRoleLv;
-
+            StudioDataManager.Instance.IsCanFight(storyLevelCfgs, storyLevelCfgs[index], out bool canFight, out string content);
 
 
-            item.m_grpLock.visible = !isPass || !isRoleLv;
-            string title = string.Format("{0}{1}", studioCfg.name, index + 1);
-            if (!isPass) title = string.Format("完成主线{0}-{1}解锁", storyLevelCfgs[index].chapterId, storyLevelCfgs[index].order);
-            if (!isRoleLv) title = string.Format("主角等级达到{}级解锁", storyLevelCfgs[index].order);
-            item.m_txtTitle.text = title;
+            item.m_star.selectedIndex = InstanceZonesDataManager.GetStarCountHistory(storyLevelCfgs[index].id);
+            item.m_imgLock.visible = canFight;
+            item.m_txtTitle.text = canFight ? string.Format("{0}{1}", studioCfg.name, index + 1) : content;
             item.target.data = storyLevelCfgs[index];
             item.target.data = storyLevelCfgs[index];
         }
         }
         private void OnCliclListItem(EventContext context)
         private void OnCliclListItem(EventContext context)
         {
         {
             UI_ListItem item = UI_ListItem.Proxy(context.data as GObject);
             UI_ListItem item = UI_ListItem.Proxy(context.data as GObject);
-            StoryLevelCfg storyLevelCfgs = item.target.data as StoryLevelCfg;
+            StoryLevelCfg storyLevelCfg = item.target.data as StoryLevelCfg;
+            StudioDataManager.Instance.IsCanFight(storyLevelCfgs, storyLevelCfg, out bool canFight, out string content);
+            if (!canFight)
+            {
+                PromptController.Instance.ShowFloatTextPrompt(content);
+                return;
+            }
+            InstanceZonesController.ShowLevelView(storyLevelCfg.id, OnFinishStoryLevel);
+        }
+        public static void OnFinishStoryLevel(int levelCfgId, bool firstPass, bool success)
+        {
+            if (success)
+            {
+
+
+            }
+            else
+            {
+
+            }
+        }
+
+        private bool GetCanFight(StoryLevelCfg storyLevelCfg)
+        {
+            bool isPass = InstanceZonesDataManager.CheckLevelPass(storyLevelCfg.needStoryLevelId);
+            bool isRoleLv = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl) >= storyLevelCfg.needRoleLv;
+            return isPass && isRoleLv;
         }
         }
 
 
+
+
         private void OnCliclBtnBuy()
         private void OnCliclBtnBuy()
         {
         {
-            ViewManager.Show<StudioBuyNumView>(this.studioCfg);
+            ViewManager.Show<StudioBuyNumView>(this.studioCfg.id);
         }
         }
     }
     }
 }
 }

+ 60 - 2
GameClient/Assets/Game/HotUpdate/Views/Studio/StudioBuyNumView.cs

@@ -1,6 +1,7 @@
 
 
 using System.Collections.Generic;
 using System.Collections.Generic;
 using FairyGUI;
 using FairyGUI;
+using UI.CommonGame;
 using UI.Studio;
 using UI.Studio;
 
 
 namespace GFGGame
 namespace GFGGame
@@ -9,6 +10,15 @@ namespace GFGGame
     public class StudioBuyNumView : BaseWindow
     public class StudioBuyNumView : BaseWindow
     {
     {
         private UI_StudioBuyNumUI _ui;
         private UI_StudioBuyNumUI _ui;
+        private int _chapterId;
+        private StudioData _studioData;
+        private StudioCfg _studioCfg;
+
+        private int _index;
+
+        private const int BUY_TYPE_0 = 0;
+        private const int BUY_TYPE_1 = 1;
+
         public override void Dispose()
         public override void Dispose()
         {
         {
             base.Dispose();
             base.Dispose();
@@ -22,11 +32,47 @@ namespace GFGGame
             this.viewCom.Center();
             this.viewCom.Center();
             this.modal = true;
             this.modal = true;
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_btnExchange.onClick.Add(() => { OnClickBtnBuy(BUY_TYPE_0); });
+            _ui.m_btnExchange.onClick.Add(() => { OnClickBtnBuy(BUY_TYPE_1); });
+
+            EventAgent.AddEventListener(ConstMessage.BUY_STUDIO_PLAY_TIMES, () =>
+            {
+                PromptController.Instance.ShowFloatTextPrompt("购买成功");
+                UpdateView();
+                if (_studioData.BuyTimes == _studioCfg.buyNum)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("今日购买次数已达上限");
+                    this.Hide();
+                }
+            });
         }
         }
 
 
         protected override void OnShown()
         protected override void OnShown()
         {
         {
             base.OnShown();
             base.OnShown();
+            UpdateView();
+        }
+
+        private void UpdateView()
+        {
+            _chapterId = (int)this.viewData;
+            _studioData = StudioDataManager.Instance.GetStudioDataById(_chapterId);
+            _studioCfg = StudioCfgArray.Instance.GetCfg(_chapterId);
+
+
+            _ui.m_txtNum.text = string.Format("(今天已兑换{0}/{1}次)", _studioData.BuyTimes, _studioCfg.buyNum);
+            ItemCfg cfg1 = ItemCfgArray.Instance.GetCfg(_studioCfg.itemID);
+            UI_ComCostCurrency comCostCurrency = UI_ComCostCurrency.Proxy(_ui.m_comCostItem);
+            comCostCurrency.m_txtNeed.text = _studioCfg.itemNum.ToString();
+            comCostCurrency.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg1.res);
+
+
+            ItemCfg cfg2 = ItemCfgArray.Instance.GetCfg(_studioCfg.moneyId);
+            UI_ComCostCurrency comCostCurrency2 = UI_ComCostCurrency.Proxy(_ui.m_comCostCurrent);
+            StudioCfgArray.Instance.GetMoneyIdAndNum(_studioCfg.id, _studioData.BuyTimes, 1, out int moneyId, out int moneyNum);
+            comCostCurrency2.m_txtNeed.text = moneyNum.ToString();
+            comCostCurrency2.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg2.res);
 
 
         }
         }
 
 
@@ -34,9 +80,21 @@ namespace GFGGame
         {
         {
             base.OnHide();
             base.OnHide();
         }
         }
-
-        private void OnClickBtnBack()
+        private void OnClickBtnBuy(int type)
         {
         {
+            if (_studioData.BuyTimes == _studioCfg.buyNum)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("今日购买次数已达上限");
+                return;
+            }
+            StudioCfgArray.Instance.GetMoneyIdAndNum(_studioCfg.id, _studioData.BuyTimes, 1, out int moneyId, out int moneyNum);
+
+            if (type == BUY_TYPE_0 && ItemDataManager.GetItemNum(_studioCfg.itemID) < _studioCfg.itemNum || type == BUY_TYPE_1 && ItemDataManager.GetItemNum(moneyId) < moneyNum)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("道具不足");
+                return;
+            }
+            StudioProxy.ReqBuyStudioPlayTimes(_chapterId, type, 1).Coroutine();
 
 
         }
         }
     }
     }

+ 4 - 1
GameClient/Assets/Game/HotUpdate/Views/Studio/StudioFabricView.cs

@@ -23,8 +23,11 @@ namespace GFGGame
 
 
         protected override void OnShown()
         protected override void OnShown()
         {
         {
-            _ui.m_c1.selectedIndex = 0;
+            _ui.m_c1.selectedIndex = (int)(this.viewData as object[])[0];
+            StudioDataManager.Instance.TYPE_SELECT_INDEX = _ui.m_c1.selectedIndex;
+            StudioDataManager.Instance.PROPERTY_SELECT_INDEX = 0;
             this.studioCfg = StudioCfgArray.Instance.GetCfgs(typeof(StudioFabricView).Name)[0];
             this.studioCfg = StudioCfgArray.Instance.GetCfgs(typeof(StudioFabricView).Name)[0];
+            this.studioData = StudioDataManager.Instance.GetStudioDataById(this.studioCfg.id);
             this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
             this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
             _ui.m_list.numItems = this.storyLevelCfgs.Length;
             _ui.m_list.numItems = this.storyLevelCfgs.Length;
             base.OnShown();
             base.OnShown();

+ 4 - 1
GameClient/Assets/Game/HotUpdate/Views/Studio/StudioMetalView.cs

@@ -24,9 +24,12 @@ namespace GFGGame
         protected override void OnShown()
         protected override void OnShown()
         {
         {
 
 
-            _ui.m_c1.selectedIndex = 0;
+            _ui.m_c1.selectedIndex = (int)(this.viewData as object[])[0];
+            StudioDataManager.Instance.TYPE_SELECT_INDEX = _ui.m_c1.selectedIndex;
+            StudioDataManager.Instance.PROPERTY_SELECT_INDEX = 0;
 
 
             this.studioCfg = StudioCfgArray.Instance.GetCfgs(typeof(StudioMetalView).Name)[0];
             this.studioCfg = StudioCfgArray.Instance.GetCfgs(typeof(StudioMetalView).Name)[0];
+            this.studioData = StudioDataManager.Instance.GetStudioDataById(this.studioCfg.id);
             this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
             this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
             _ui.m_list.numItems = this.storyLevelCfgs.Length;
             _ui.m_list.numItems = this.storyLevelCfgs.Length;
             base.OnShown();
             base.OnShown();

+ 15 - 4
GameClient/Assets/Game/HotUpdate/Views/Studio/StudioPropertyView.cs

@@ -24,10 +24,19 @@ namespace GFGGame
 
 
         protected override void OnShown()
         protected override void OnShown()
         {
         {
-            _ui.m_c1.selectedIndex = 1;
-            _ui.m_listProperty.numItems = StudioCfgArray.Instance.GetCfgs(typeof(StudioPropertyView).Name).Length;
-            _ui.m_listProperty.selectedIndex = 0;
-            this.studioCfg = StudioCfgArray.Instance.GetCfgs(typeof(StudioPropertyView).Name)[0];
+            StudioCfg[] studioCfgs = StudioCfgArray.Instance.GetCfgs(typeof(StudioPropertyView).Name);
+            this.studioCfg = studioCfgs[0];
+            this.studioData = StudioDataManager.Instance.GetStudioDataById(this.studioCfg.id);
+            this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
+
+            _ui.m_c1.selectedIndex = (int)(this.viewData as object[])[0];
+            StudioDataManager.Instance.TYPE_SELECT_INDEX = _ui.m_c1.selectedIndex;
+
+            _ui.m_listProperty.numItems = studioCfgs.Length;
+            _ui.m_listProperty.selectedIndex = (int)(this.viewData as object[])[1];
+            StudioDataManager.Instance.PROPERTY_SELECT_INDEX = _ui.m_listProperty.selectedIndex;
+
+            _ui.m_list.numItems = this.storyLevelCfgs.Length;
             base.OnShown();
             base.OnShown();
 
 
         }
         }
@@ -53,8 +62,10 @@ namespace GFGGame
             GButton item = (context.data as GObject).asButton;
             GButton item = (context.data as GObject).asButton;
 
 
             this.studioCfg = item.data as StudioCfg;
             this.studioCfg = item.data as StudioCfg;
+            this.studioData = StudioDataManager.Instance.GetStudioDataById(this.studioCfg.id);
             this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
             this.storyLevelCfgs = StoryLevelCfgArray.Instance.GetCfgs(this.studioCfg.type, this.studioCfg.subType, this.studioCfg.id);
             _ui.m_list.numItems = this.storyLevelCfgs.Length;
             _ui.m_list.numItems = this.storyLevelCfgs.Length;
+            StudioDataManager.Instance.PROPERTY_SELECT_INDEX = _ui.m_listProperty.selectedIndex;
 
 
         }
         }
     }
     }

+ 8 - 7
GameClient/Assets/Game/HotUpdate/Views/Studio/StudioView.cs

@@ -34,12 +34,13 @@ namespace GFGGame
 
 
         protected override void OnShown()
         protected override void OnShown()
         {
         {
-            base.OnShown();
-            int isopen = 1;// FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioMetalView).FullName) ? 1 : 0;
+            base.OnShown();//1;//
+            // StudioProxy.ReqStudioInfos().Coroutine();
+            int isopen = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioMetalView).FullName, false) ? 1 : 0;
             _ui.m_comMetal.m_c1.selectedIndex = isopen;
             _ui.m_comMetal.m_c1.selectedIndex = isopen;
-            //isopen = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioFabricView).FullName) ? 1 : 0; ;
+            isopen = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioFabricView).FullName, false) ? 1 : 0; ;
             _ui.m_comFabric.m_c1.selectedIndex = isopen;
             _ui.m_comFabric.m_c1.selectedIndex = isopen;
-            // isopen = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioPropertyView).FullName) ? 1 : 0;
+            isopen = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioPropertyView).FullName, false) ? 1 : 0;
             _ui.m_comProperty.m_c1.selectedIndex = isopen;
             _ui.m_comProperty.m_c1.selectedIndex = isopen;
         }
         }
 
 
@@ -55,15 +56,15 @@ namespace GFGGame
 
 
         private void OnClickComMetal()
         private void OnClickComMetal()
         {
         {
-            ViewManager.Show<StudioMetalView>(null, new object[] { typeof(StudioView).Name, this.viewData });
+            ViewManager.Show<StudioMetalView>(new object[] { 0, 0 }, new object[] { typeof(StudioView).Name, this.viewData });
         }
         }
         private void OnCliclComFabric()
         private void OnCliclComFabric()
         {
         {
-            ViewManager.Show<StudioFabricView>(null, new object[] { typeof(StudioView).Name, this.viewData });
+            ViewManager.Show<StudioFabricView>(new object[] { 0, 0 }, new object[] { typeof(StudioView).Name, this.viewData });
         }
         }
         private void OnComProperty()
         private void OnComProperty()
         {
         {
-            ViewManager.Show<StudioPropertyView>(null, new object[] { typeof(StudioView).Name, this.viewData });
+            ViewManager.Show<StudioPropertyView>(new object[] { 0, 1 }, new object[] { typeof(StudioView).Name, this.viewData });
         }
         }
         private void OnClickComFilling()
         private void OnClickComFilling()
         {
         {

+ 4 - 2
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -51,7 +51,8 @@ namespace GFGGame
         /// <param name="hideOthers">�Ƿ�ر�������ͼ</param>
         /// <param name="hideOthers">�Ƿ�ر�������ͼ</param>
         public static void Show(string viewName, object viewData = null, object[] goBackParams = null, bool hideOthers = false, bool resetGobackParams = false)
         public static void Show(string viewName, object viewData = null, object[] goBackParams = null, bool hideOthers = false, bool resetGobackParams = false)
         {
         {
-            // if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(viewName.Split('.')[1]))
+            string[] names = viewName.Split('.');
+            // if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(names[names.Length - 1]))
             // {
             // {
             //     return;
             //     return;
             // }
             // }
@@ -116,7 +117,8 @@ namespace GFGGame
         public static bool Show<T>(object viewData = null, object[] goBackParams = null, bool hideOthers = false, bool resetGobackParams = false) where T : class, new()
         public static bool Show<T>(object viewData = null, object[] goBackParams = null, bool hideOthers = false, bool resetGobackParams = false) where T : class, new()
         {
         {
             string viewName = typeof(T).FullName;
             string viewName = typeof(T).FullName;
-            // if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(viewName))
+            string[] names = viewName.Split('.');
+            // if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(names[names.Length - 1]))
             // {
             // {
             //     return false;
             //     return false;
             // }
             // }

二进制
GameClient/Assets/ResIn/Config/excelConfig.sqlite.bytes


二进制
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0!a.png


二进制
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0.png


二进制
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_fui.bytes


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0!a.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_1!a.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_1.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_3!a.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_3.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_4!a.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_4.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_5!a.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_atlas0_5.png


二进制
GameClient/Assets/ResIn/UI/Main/Main_fui.bytes


二进制
GameClient/Assets/ResIn/UI/Studio/Studio_atlas0.png


二进制
GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhd1a.png


+ 96 - 0
GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhd1a.png.meta

@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 4bcfcfc65ecec984eb30826cfc6b9140
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

二进制
GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhdp.png


+ 96 - 0
GameClient/Assets/ResIn/UI/Studio/Studio_atlas_kqhdp.png.meta

@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 3ef20342acda61e4d92c4cbceb81f8a8
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

二进制
GameClient/Assets/ResIn/UI/Studio/Studio_fui.bytes