瀏覽代碼

Merge branch 'master' of http://10.108.64.190:3000/gfg/client

zhaoyang 2 年之前
父節點
當前提交
78978e3ea7
共有 100 個文件被更改,包括 2169 次插入73 次删除
  1. 1 1
      FGUIProject/assets/Bag/components/BtnSub.xml
  2. 5 4
      FGUIProject/assets/Bag/components/ListSelectorItem.xml
  3. 2 3
      FGUIProject/assets/EnduringGiftBox/EnduringGiftBoxUI.xml
  4. 24 0
      FGUIProject/assets/EnduringGiftBox/RushSaleGiftBoxUI.xml
  5. 19 0
      FGUIProject/assets/EnduringGiftBox/SpecialOfferGiftBoxUI.xml
  6. 3 5
      FGUIProject/assets/EnduringGiftBox/components/BtnBuy.xml
  7. 12 0
      FGUIProject/assets/EnduringGiftBox/components/BtnBuyPink.xml
  8. 1 3
      FGUIProject/assets/EnduringGiftBox/components/BtnBuyWeek.xml
  9. 1 1
      FGUIProject/assets/EnduringGiftBox/components/BtnCancel.xml
  10. 6 0
      FGUIProject/assets/EnduringGiftBox/components/BtnNext.xml
  11. 1 3
      FGUIProject/assets/EnduringGiftBox/components/BtnReceive.xml
  12. 2 4
      FGUIProject/assets/EnduringGiftBox/components/BtnSub.xml
  13. 6 0
      FGUIProject/assets/EnduringGiftBox/components/BtnUp.xml
  14. 3 3
      FGUIProject/assets/EnduringGiftBox/components/ComCurSupplyItem.xml
  15. 2 2
      FGUIProject/assets/EnduringGiftBox/components/ComDiscount.xml
  16. 8 0
      FGUIProject/assets/EnduringGiftBox/components/ComDiscount2.xml
  17. 7 0
      FGUIProject/assets/EnduringGiftBox/components/ComRsGifBoxIconItem.xml
  18. 19 0
      FGUIProject/assets/EnduringGiftBox/components/ComSpecialOfferGiftBoxItem.xml
  19. 二進制
      FGUIProject/assets/EnduringGiftBox/images/an_pink.png
  20. 二進制
      FGUIProject/assets/EnduringGiftBox/images/back2.png
  21. 二進制
      FGUIProject/assets/EnduringGiftBox/images/bg01.png
  22. 二進制
      FGUIProject/assets/EnduringGiftBox/images/bg02.png
  23. 二進制
      FGUIProject/assets/EnduringGiftBox/images/biao.png
  24. 二進制
      FGUIProject/assets/EnduringGiftBox/images/but_Zhekou.png
  25. 二進制
      FGUIProject/assets/EnduringGiftBox/images/button.png
  26. 二進制
      FGUIProject/assets/EnduringGiftBox/images/daizi.png
  27. 二進制
      FGUIProject/assets/EnduringGiftBox/images/kuang.png
  28. 二進制
      FGUIProject/assets/EnduringGiftBox/images/samll_text.png
  29. 二進制
      FGUIProject/assets/EnduringGiftBox/images/text.png
  30. 二進制
      FGUIProject/assets/EnduringGiftBox/images/thing.png
  31. 二進制
      FGUIProject/assets/EnduringGiftBox/images/thlb_db.png
  32. 二進制
      FGUIProject/assets/EnduringGiftBox/images/thlb_lihui.png
  33. 二進制
      FGUIProject/assets/EnduringGiftBox/images/thlb_sj_db.png
  34. 二進制
      FGUIProject/assets/EnduringGiftBox/images/time_kuang.png
  35. 二進制
      FGUIProject/assets/EnduringGiftBox/images/wpk_db_1_da.png
  36. 二進制
      FGUIProject/assets/EnduringGiftBox/images/wpk_sz_db_1.png
  37. 二進制
      FGUIProject/assets/EnduringGiftBox/images/wz_thlb.png
  38. 二進制
      FGUIProject/assets/EnduringGiftBox/images/wz_tlxslb.png
  39. 二進制
      FGUIProject/assets/EnduringGiftBox/images/wz_xsqg.png
  40. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_db.png
  41. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_fy_an.png
  42. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_fy_an_2.png
  43. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_lihui.png
  44. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_nr_db.png
  45. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_sj_db.png
  46. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_zk_db.png
  47. 二進制
      FGUIProject/assets/EnduringGiftBox/images/xsqg_zsx.png
  48. 37 0
      FGUIProject/assets/EnduringGiftBox/package.xml
  49. 14 1
      FGUIProject/assets/Main/MainUI.xml
  50. 12 0
      FGUIProject/assets/Main/components/Button5.xml
  51. 二進制
      FGUIProject/assets/Main/images/cj_meirith.png
  52. 二進制
      FGUIProject/assets/Main/images/cj_sj_db.png
  53. 二進制
      FGUIProject/assets/Main/images/cj_yulan.png
  54. 4 0
      FGUIProject/assets/Main/package.xml
  55. 8 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs
  56. 5 4
      GameClient/Assets/Game/HotUpdate/Controller/EnduringGiftBoxController.cs
  57. 3 0
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  58. 11 4
      GameClient/Assets/Game/HotUpdate/Data/ActivityGlobalDataManager.cs
  59. 1 1
      GameClient/Assets/Game/HotUpdate/Data/EnduringGiftBoxDataManager.cs
  60. 169 0
      GameClient/Assets/Game/HotUpdate/Data/LimitedTimeGiftBoxDataManager.cs
  61. 3 0
      GameClient/Assets/Game/HotUpdate/Data/LimitedTimeGiftBoxDataManager.cs.meta
  62. 40 0
      GameClient/Assets/Game/HotUpdate/Data/VO/GiftBoxData.cs
  63. 3 0
      GameClient/Assets/Game/HotUpdate/Data/VO/GiftBoxData.cs.meta
  64. 83 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_BtnBuyPink.cs
  65. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_BtnBuyPink.cs.meta
  66. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComDiscount2.cs
  67. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComDiscount2.cs.meta
  68. 75 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComRsGifBoxIconItem.cs
  69. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComRsGifBoxIconItem.cs.meta
  70. 91 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComSpecialOfferGiftBoxItem.cs
  71. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComSpecialOfferGiftBoxItem.cs.meta
  72. 100 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_RushSaleGiftBoxUI.cs
  73. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_RushSaleGiftBoxUI.cs.meta
  74. 83 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_SpecialOfferGiftBoxUI.cs
  75. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_SpecialOfferGiftBoxUI.cs.meta
  76. 12 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_MainUI.cs
  77. 3 3
      GameClient/Assets/Game/HotUpdate/ServerProxy/BattlePassTaskSProxy.cs
  78. 1 1
      GameClient/Assets/Game/HotUpdate/ServerProxy/EnduringGiftBoxSProxy.cs
  79. 4 5
      GameClient/Assets/Game/HotUpdate/Utils/ItemUtil.cs
  80. 90 0
      GameClient/Assets/Game/HotUpdate/Utils/ListUtil.cs
  81. 3 0
      GameClient/Assets/Game/HotUpdate/Utils/ListUtil.cs.meta
  82. 38 1
      GameClient/Assets/Game/HotUpdate/Utils/TimeUtil.cs
  83. 2 2
      GameClient/Assets/Game/HotUpdate/Views/Common/Controller/ValueBarController.cs
  84. 19 4
      GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/EnduringGiftBoxView.cs
  85. 307 0
      GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/RushSaleGiftBoxView.cs
  86. 3 0
      GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/RushSaleGiftBoxView.cs.meta
  87. 321 0
      GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/SpecialOfferGiftBoxView.cs
  88. 3 0
      GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/SpecialOfferGiftBoxView.cs.meta
  89. 44 2
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxActivityView.cs
  90. 10 10
      GameClient/Assets/Game/HotUpdate/Views/Mail/MailView.cs
  91. 91 1
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  92. 1 0
      GameClient/Assets/Game/HotUpdate/Views/Task/BattlePassTaskView.cs
  93. 5 1
      GameClient/Assets/Game/HotUpdate/Views/Task/BuyBattlePassLevelView.cs
  94. 19 4
      GameClient/Assets/Game/HotUpdate/Views/Task/OpenBattlePassView.cs
  95. 二進制
      GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0!a.png
  96. 二進制
      GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0.png
  97. 二進制
      GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1!a.png
  98. 96 0
      GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1!a.png.meta
  99. 二進制
      GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1.png
  100. 96 0
      GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1.png.meta

+ 1 - 1
FGUIProject/assets/Bag/components/BtnSub.xml

@@ -5,7 +5,7 @@
     <image id="n0_cu9w" name="n0" src="v5notlz" fileName="images/lm_an__xuanzhong_1.png" xy="0,0">
       <relation target="" sidePair="width-width,height-height"/>
     </image>
-    <text id="n1_cu9w" name="title" xy="0,0" size="265,82" font="SourceHanSerifCN-Regular" fontSize="32" color="#683c28" align="center" vAlign="middle" autoSize="none" singleLine="true" text="使用">
+    <text id="n1_cu9w" name="title" xy="0,0" size="265,82" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#683c28" align="center" vAlign="middle" autoSize="none" singleLine="true" text="使用">
       <relation target="" sidePair="width-width,height-height"/>
     </text>
   </displayList>

+ 5 - 4
FGUIProject/assets/Bag/components/ListSelectorItem.xml

@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component size="172,241" overflow="hidden">
   <displayList>
-    <image id="n0_v5no" name="n0" src="v5notm7" fileName="images/wpk_db_1_da.png" xy="0,1"/>
     <image id="n2_v5no" name="n2" src="v5notmc" fileName="images/db_jiajian_1.png" xy="23,189"/>
     <text id="n17_cu9w" name="txtSelNum" xy="56,184" size="60,53" fontSize="39" color="#915e15" align="center" autoSize="none" text="0"/>
-    <loader id="n11_v5no" name="loaIcon" xy="87,84" pivot="0.5,0.5" anchor="true" size="100,88" fill="scale"/>
-    <image id="n18_qqhz" name="n18" src="v5notm8" fileName="images/wpk_sz_db_1.png" xy="8,120" size="155,45"/>
-    <text id="n19_qqhz" name="txtNum" xy="58,122" size="54,42" fontSize="30" color="#ffffff" align="center" vAlign="middle" autoSize="none" text="120"/>
     <component id="n15_cu9w" name="btnReduce" src="cu9wtmf" fileName="components/BtnReduce.xml" xy="-1,188"/>
     <component id="n16_cu9w" name="btnAdd" src="cu9wtmg" fileName="components/BtnAdd.xml" xy="121,189"/>
+    <image id="n0_v5no" name="n0" src="v5notm7" fileName="images/wpk_db_1_da.png" xy="0,1" group="n20_yjmk"/>
+    <loader id="n11_v5no" name="loaIcon" xy="87,84" pivot="0.5,0.5" anchor="true" size="100,88" group="n20_yjmk" fill="scale"/>
+    <image id="n18_qqhz" name="n18" src="v5notm8" fileName="images/wpk_sz_db_1.png" xy="8,120" size="155,45" group="n20_yjmk"/>
+    <text id="n19_qqhz" name="txtNum" xy="58,122" size="54,42" group="n20_yjmk" fontSize="30" color="#ffffff" align="center" vAlign="middle" autoSize="none" text="120"/>
+    <group id="n20_yjmk" name="n20" xy="0,1" size="172,172"/>
   </displayList>
 </component>

+ 2 - 3
FGUIProject/assets/EnduringGiftBox/EnduringGiftBoxUI.xml

@@ -37,18 +37,17 @@
     <item time="0" type="Alpha" target="n2_qqhz" tween="true" startValue="0" endValue="1" duration="15"/>
     <item time="0" type="Alpha" target="n33_qqhz" value="0"/>
     <item time="0" type="Alpha" target="n34_qqhz" value="0"/>
+    <item time="0" type="Alpha" target="n35_qqhz" value="0"/>
     <item time="0" type="Alpha" target="n3_qqhz" value="0"/>
     <item time="0" type="Alpha" target="n5_qqhz" value="0"/>
     <item time="0" type="Alpha" target="n6_qqhz" value="0"/>
     <item time="0" type="Alpha" target="n9_qqhz" value="0"/>
     <item time="0" type="Rotation" target="n0_qqhz" tween="true" startValue="-2" endValue="0" duration="15"/>
     <item time="0" type="Visible" target="n29_qqhz" value="false"/>
-    <item time="0" type="Visible" target="n35_qqhz" value="false"/>
     <item time="0" type="XY" target="n1_qqhz" tween="true" startValue="6,96" endValue="37,61" duration="12"/>
     <item time="0" type="XY" target="n2_qqhz" tween="true" startValue="-25,400" endValue="30,365" duration="15"/>
     <item time="5" type="Alpha" target="n29_qqhz" value="0"/>
     <item time="5" type="Alpha" target="n3_qqhz" tween="true" startValue="0.2" endValue="1" duration="10"/>
-    <item time="8" type="Alpha" target="n35_qqhz" tween="true" startValue="0.4" endValue="1" duration="11"/>
     <item time="9" type="Alpha" target="n33_qqhz" tween="true" startValue="0.7" endValue="1" duration="9"/>
     <item time="12" type="Alpha" target="n1_qqhz" tween="true" startValue="0.2" endValue="1" duration="11"/>
     <item time="12" type="Alpha" target="n29_qqhz" tween="true" startValue="0.4" endValue="1" duration="13"/>
@@ -58,9 +57,9 @@
     <item time="13" type="Alpha" target="n5_qqhz" tween="true" startValue="0.5" endValue="1" duration="8"/>
     <item time="14" type="Alpha" target="n34_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
     <item time="14" type="Alpha" target="n9_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
-    <item time="14" type="Visible" target="n35_qqhz" value="true"/>
     <item time="15" type="Alpha" target="n12_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
     <item time="15" type="Alpha" target="n14_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
+    <item time="15" type="Alpha" target="n35_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
     <item time="18" type="Alpha" target="n15_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
     <item time="18" type="Alpha" target="n27_qqhz" tween="true" startValue="0.7" endValue="1" duration="8"/>
     <item time="18" type="Alpha" target="n33_qqhz" tween="true" startValue="1" endValue="0.028" duration="15"/>

+ 24 - 0
FGUIProject/assets/EnduringGiftBox/RushSaleGiftBoxUI.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="1080,958">
+  <displayList>
+    <image id="n1_yjmk" name="n1" src="yjmk2j" fileName="images/xsqg_db.png" xy="1,-72"/>
+    <image id="n0_yjmk" name="n0" src="yjmk2l" fileName="images/xsqg_lihui.png" xy="44,23"/>
+    <image id="n2_yjmk" name="n2" src="yjmk2i" fileName="images/wz_xsqg.png" xy="335,26"/>
+    <image id="n5_yjmk" name="n5" src="yjmk2m" fileName="images/xsqg_nr_db.png" xy="193,215"/>
+    <text id="n4_yjmk" name="txtBoxItemName" xy="363,207" size="283,65" fontSize="40" color="#fffbf5" align="center" autoSize="none" strokeColor="#d69546" text="体力限时礼包"/>
+    <image id="n6_yjmk" name="n6" src="yjmk2n" fileName="images/xsqg_sj_db.png" xy="639,216"/>
+    <text id="n8_yjmk" name="txtBoxResidueTime" xy="683,214" size="207,48" fontSize="35" color="#fffbf5" align="center" autoSize="none" text="6天23分23秒"/>
+    <list id="n11_yjmk" name="list" xy="344,377" size="425,203" layout="flow_vt" overflow="scroll" scroll="horizontal" colGap="50" defaultItem="ui://bdi1qe15yjmk2p" align="center">
+      <item/>
+      <item/>
+    </list>
+    <image id="n12_yjmk" name="n12" src="yjmk2b" fileName="images/xsqg_zsx.png" xy="302,602"/>
+    <text id="n13_yjmk" name="txtUrc" xy="453,623" size="224,68" fontSize="34" color="#b8857b" align="center" vAlign="middle" autoSize="shrink" text="今日限购0/1"/>
+    <component id="n15_yjmk" name="btnBuyPink" src="yjmk2q" fileName="components/BtnBuyPink.xml" xy="408,693"/>
+    <component id="n14_yjmk" name="comDiscount" src="yjmk2r" fileName="components/ComDiscount2.xml" xy="333,642"/>
+    <text id="n16_yjmk" name="txtLrc" xy="379,787" size="380,46" fontSize="34" color="#b8857b" align="center" autoSize="shrink" text="可获得60充值经验"/>
+    <component id="n19_droi" name="btnUp" src="droi3c" fileName="components/BtnUp.xml" xy="63,380"/>
+    <component id="n20_droi" name="btnNext" src="droi3d" fileName="components/BtnNext.xml" xy="877,386"/>
+    <component id="n21_droi" name="btnBack" src="qqhz26" fileName="components/BnBack.xml" xy="498,940"/>
+  </displayList>
+</component>

+ 19 - 0
FGUIProject/assets/EnduringGiftBox/SpecialOfferGiftBoxUI.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="1080,1116">
+  <displayList>
+    <image id="n0_yjmk" name="n0" src="yjmk2v" fileName="images/bg02.png" xy="-9,142"/>
+    <image id="n1_yjmk" name="n1" src="yjmk2u" fileName="images/bg01.png" xy="29,15"/>
+    <image id="n3_yjmk" name="n3" src="yjmk2e" fileName="images/thlb_lihui.png" xy="51,-5"/>
+    <image id="n2_yjmk" name="n2" src="yjmk2g" fileName="images/wz_thlb.png" xy="76,39"/>
+    <image id="n5_yjmk" name="n5" src="yjmk2f" fileName="images/thlb_sj_db.png" xy="699,233"/>
+    <text id="n6_yjmk" name="txtBoxResidueTime" xy="701,229" size="251,42" fontSize="28" color="#fffcf9" align="center" autoSize="none" text="剩余6天23时13分"/>
+    <list id="n18_yjmk" name="list" xy="68,270" size="957,690" layout="flow_vt" scroll="both" lineGap="15" defaultItem="ui://bdi1qe15yjmk37">
+      <item/>
+      <item/>
+      <item/>
+    </list>
+    <component id="n22_droi" name="btnUp" src="droi3c" fileName="components/BtnUp.xml" xy="-22,488"/>
+    <component id="n23_droi" name="btnNext" src="droi3d" fileName="components/BtnNext.xml" xy="933,488"/>
+    <component id="n24_droi" name="back" src="qqhz26" fileName="components/BnBack.xml" xy="494,1098"/>
+  </displayList>
+</component>

+ 3 - 5
FGUIProject/assets/EnduringGiftBox/components/BtnBuy.xml

@@ -3,11 +3,9 @@
   <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
   <displayList>
     <image id="n3_qqhz" name="bagGrey" src="qqhzm" fileName="images/cz_an_grey.png" xy="0,0"/>
-    <image id="n0_qqhz" name="bagYellow" src="qqhzk" fileName="images/cz_an_yellow.png" xy="0,0" pkg="eg2y0ldp">
-      <relation target="" sidePair="width-width,height-height"/>
-    </image>
-    <text id="n1_qqhz" name="txtNewPrice" xy="146,2" size="104,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" vAlign="middle" autoSize="shrink" text="12元"/>
-    <text id="n2_qqhz" name="txtOldPrice" xy="21,2" size="84,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="shrink" strike="true" text="86"/>
+    <image id="n6_yjmk" name="bagYellow" src="yjmk2y" fileName="images/button.png" xy="0,0"/>
+    <text id="n1_qqhz" name="txtNewPrice" xy="146,2" size="104,69" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#fffdf4" vAlign="middle" autoSize="shrink" text="12元"/>
+    <text id="n2_qqhz" name="txtOldPrice" xy="21,2" size="84,69" font="ui://eg2y0ldpa0cftky" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="shrink" strike="true" text="86"/>
     <loader id="n5_yjmk" name="loaIcon" xy="104,22" size="38,34" fill="scale" shrinkOnly="true"/>
   </displayList>
   <Button/>

+ 12 - 0
FGUIProject/assets/EnduringGiftBox/components/BtnBuyPink.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="316,83" extention="Button">
+  <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
+  <displayList>
+    <image id="n7_yjmk" name="bagGrey" src="qqhzm" fileName="images/cz_an_grey.png" xy="0,7" size="316,75" aspect="true"/>
+    <image id="n6_yjmk" name="bagPink" src="yjmk3b" fileName="images/an_pink.png" xy="0,7" size="316,75" aspect="true"/>
+    <text id="n1_qqhz" name="txtNewPrice" xy="166,5" size="104,69" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#fffdf4" vAlign="middle" autoSize="shrink" text="300元"/>
+    <text id="n2_qqhz" name="txtOldPrice" xy="37,5" size="84,69" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#fffdf4" vAlign="middle" autoSize="shrink" strike="true" text="2000"/>
+    <loader id="n5_yjmk" name="loaIcon" xy="122,22" size="33,31" fill="scale" shrinkOnly="true"/>
+  </displayList>
+  <Button/>
+</component>

+ 1 - 3
FGUIProject/assets/EnduringGiftBox/components/BtnBuyWeek.xml

@@ -2,9 +2,7 @@
 <component size="260,74" extention="Button">
   <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
   <displayList>
-    <image id="n0_qqhz" name="n0" src="qqhzk" fileName="images/cz_an_yellow.png" xy="0,0" pkg="eg2y0ldp">
-      <relation target="" sidePair="width-width,height-height"/>
-    </image>
+    <image id="n4_yjmk" name="n4" src="yjmk2y" fileName="images/button.png" xy="0,0"/>
     <text id="n1_qqhz" name="txtNewPrice" xy="135,0" size="106,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" vAlign="middle" autoSize="shrink" text="300"/>
     <text id="n2_qqhz" name="txtOldPrice" xy="21,1" size="84,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" vAlign="middle" autoSize="shrink" strike="true" text="2000"/>
     <image id="n3_qqhz" name="n3" src="qqhz10" fileName="images/lm_tb.png" xy="103,21"/>

+ 1 - 1
FGUIProject/assets/EnduringGiftBox/components/BtnCancel.xml

@@ -5,7 +5,7 @@
     <image id="n0_qqhz" name="n0" src="qqhzn" fileName="images/cz_an_blue.png" xy="0,0">
       <relation target="" sidePair="width-width,height-height"/>
     </image>
-    <text id="n1_qqhz" name="n1" xy="0,0" size="260,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="none" text="取消"/>
+    <text id="n1_qqhz" name="n1" xy="0,0" size="260,69" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="none" text="取消"/>
   </displayList>
   <Button/>
 </component>

+ 6 - 0
FGUIProject/assets/EnduringGiftBox/components/BtnNext.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="166,182">
+  <displayList>
+    <image id="n0_droi" name="n0" src="yjmk2k" fileName="images/xsqg_fy_an.png" xy="0,0"/>
+  </displayList>
+</component>

+ 1 - 3
FGUIProject/assets/EnduringGiftBox/components/BtnReceive.xml

@@ -3,9 +3,7 @@
   <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
   <displayList>
     <image id="n2_qqhz" name="received" src="qqhzm" fileName="images/cz_an_grey.png" xy="0,0"/>
-    <image id="n0_qqhz" name="receive" src="qqhzk" fileName="images/cz_an_yellow.png" xy="0,0" pkg="eg2y0ldp">
-      <relation target="" sidePair="width-width,height-height"/>
-    </image>
+    <image id="n3_yjmk" name="receive" src="yjmk2y" fileName="images/button.png" xy="0,0"/>
     <text id="n1_qqhz" name="txtRec" xy="0,0" size="260,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="none" text="领取"/>
   </displayList>
   <Button/>

+ 2 - 4
FGUIProject/assets/EnduringGiftBox/components/BtnSub.xml

@@ -2,10 +2,8 @@
 <component size="260,75" extention="Button">
   <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
   <displayList>
-    <image id="n0_qqhz" name="n0" src="qqhzl" fileName="images/cz_an_pink.png" xy="0,0" pkg="eg2y0ldp">
-      <relation target="" sidePair="width-width,height-height"/>
-    </image>
-    <text id="n1_qqhz" name="n1" xy="0,0" size="260,69" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="none" text="确定"/>
+    <image id="n2_yjmk" name="n2" src="yjmk3b" fileName="images/an_pink.png" xy="0,0"/>
+    <text id="n1_qqhz" name="n1" xy="0,0" size="260,69" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#fffdf4" align="center" vAlign="middle" autoSize="none" text="确定"/>
   </displayList>
   <Button/>
 </component>

+ 6 - 0
FGUIProject/assets/EnduringGiftBox/components/BtnUp.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="166,182">
+  <displayList>
+    <image id="n0_droi" name="n0" src="yjmk2o" fileName="images/xsqg_fy_an_2.png" xy="0,0"/>
+  </displayList>
+</component>

+ 3 - 3
FGUIProject/assets/EnduringGiftBox/components/ComCurSupplyItem.xml

@@ -8,10 +8,10 @@
     <component id="n4_qqhz" name="btnBuy" src="qqhzy" fileName="components/BtnBuy.xml" xy="656,90"/>
     <component id="n5_qqhz" name="btnCurReceive" src="qqhzv" fileName="components/BtnReceive.xml" xy="656,90"/>
     <component id="n28_qqhz" name="comLeftGiftBox" src="qqhz1q" fileName="components/ComLeftGiftBox.xml" xy="25,22"/>
-    <text id="n15_qqhz" name="txtTitle" xy="290,15" size="275,47" font="SourceHanSerifCN-SemiBold" fontSize="28" color="#cc9974" align="center" autoSize="none" text="体力超值返利包"/>
-    <text id="n22_qqhz" name="txtWeekPrompt" xy="294,46" size="266,39" font="FZKTJW--GB1-0" fontSize="26" color="#bda5a8" align="center" autoSize="none" text="连续七天每日获得"/>
+    <text id="n15_qqhz" name="txtTitle" xy="290,15" size="275,47" font="ui://eg2y0ldpa0cftkz" fontSize="28" color="#cc9974" align="center" autoSize="none" text="体力超值返利包"/>
+    <text id="n22_qqhz" name="txtWeekPrompt" xy="294,46" size="266,39" font="ui://eg2y0ldpa0cftks" fontSize="26" color="#bda5a8" align="center" autoSize="none" text="连续七天每日获得"/>
     <image id="n23_qqhz" name="icoWeekPromptTag" src="qqhz1p" fileName="images/lm_tb_tishi.png" xy="530,48"/>
-    <list id="n18_qqhz" name="list" xy="231,83" size="402,132" layout="flow_vt" overflow="scroll" scroll="horizontal" scrollBarFlags="32" colGap="35" defaultItem="ui://bdi1qe15qqhz1g" align="center">
+    <list id="n18_qqhz" name="list" xy="231,83" size="402,132" layout="flow_vt" overflow="scroll" scroll="horizontal" scrollBarFlags="32" colGap="35" defaultItem="ui://bdi1qe15qqhz1g" align="center" autoClearItems="true">
       <item/>
     </list>
   </displayList>

+ 2 - 2
FGUIProject/assets/EnduringGiftBox/components/ComDiscount.xml

@@ -2,7 +2,7 @@
 <component size="78,77">
   <displayList>
     <image id="n3_yjmk" name="n3" src="yjmk27" fileName="images/tb_zk_red.png" xy="-3,-2"/>
-    <text id="n1_qqhz" name="txtDiscountNum" xy="8,6" size="57,44" font="SourceHanSerifCN-SemiBold" fontSize="32" color="#fffceb" align="center" autoSize="none" text="1.5"/>
-    <text id="n2_qqhz" name="n2" xy="18,36" size="38,34" font="SourceHanSerifCN-SemiBold" fontSize="24" color="#fffceb" align="center" autoSize="none" text="折"/>
+    <text id="n1_qqhz" name="txtDiscountNum" xy="8,6" size="57,44" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#fffceb" align="center" autoSize="none" text="1.5"/>
+    <text id="n2_qqhz" name="n2" xy="18,36" size="38,34" font="ui://eg2y0ldpa0cftkz" fontSize="24" color="#fffceb" align="center" autoSize="none" text="折"/>
   </displayList>
 </component>

+ 8 - 0
FGUIProject/assets/EnduringGiftBox/components/ComDiscount2.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="120,109">
+  <displayList>
+    <image id="n4_yjmk" name="n4" src="yjmk2a" fileName="images/xsqg_zk_db.png" xy="0,0" size="120,109" aspect="true"/>
+    <text id="n1_qqhz" name="txtDiscountNum" xy="17,14" size="78,59" fontSize="44" color="#fffbf3" leading="0" letterSpacing="-2" autoSize="none" bold="true" text="1.3"/>
+    <text id="n2_qqhz" name="n2" xy="65,32" size="35,56" font="ui://eg2y0ldpa0cftks" fontSize="37" color="#fffceb" align="center" autoSize="none" shadowColor="#ffffff" shadowOffset="1,1" text="折"/>
+  </displayList>
+</component>

+ 7 - 0
FGUIProject/assets/EnduringGiftBox/components/ComRsGifBoxIconItem.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="150,203">
+  <displayList>
+    <component id="n3_yjmk" name="comRewardIconItem" src="qqhz1g" fileName="components/ComRewardIconItem.xml" xy="3,2" size="132,132" aspect="true" scale="1.09,1.09"/>
+    <text id="n1_yjmk" name="txtItemName" xy="6,138" size="143,56" fontSize="39" color="#a47e49" align="center" autoSize="none" text="体力"/>
+  </displayList>
+</component>

+ 19 - 0
FGUIProject/assets/EnduringGiftBox/components/ComSpecialOfferGiftBoxItem.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="940,213">
+  <displayList>
+    <image id="n0_yjmk" name="nczlb" src="qqhzg" fileName="images/cz_lb_db.png" xy="0,0" size="940,220" group="n8_yjmk"/>
+    <text id="n2_yjmk" name="txtBoxItemName" xy="55,7" size="459,44" group="n8_yjmk" font="ui://eg2y0ldpa0cftkz" fontSize="32" color="#cc9974" autoSize="none" text="体力补给礼包"/>
+    <component id="n3_yjmk" name="btnBuy" src="qqhzy" fileName="components/BtnBuy.xml" xy="660,85" size="261,73" group="n8_yjmk"/>
+    <image id="n4_yjmk" name="n4" src="qqhz8" fileName="images/lm_dt_tsdb_2.png" xy="679,8" group="n8_yjmk"/>
+    <text id="n5_yjmk" name="txtUrc" xy="714,13" size="216,42" group="n8_yjmk" rotation="-0.6" fontSize="28" color="#cc6960" align="center" leading="0" autoSize="none" text="今日限购1/1"/>
+    <text id="n6_yjmk" name="txtGetJf" xy="660,165" size="269,33" group="n8_yjmk" fontSize="28" color="#c69652" align="center" autoSize="none" text="可获得120会员积分"/>
+    <component id="n7_yjmk" name="comDiscount" src="qqhz1o" fileName="components/ComDiscount.xml" xy="629,59" size="78,66" group="n8_yjmk"/>
+    <list id="n9_yjmk" name="list" xy="57,58" size="439,133" group="n8_yjmk" scale="1.05,1.05" layout="flow_vt" overflow="scroll" scroll="horizontal" scrollBarFlags="32" colGap="16" defaultItem="ui://bdi1qe15qqhz1g" align="center" autoClearItems="true">
+      <item/>
+      <item/>
+      <item/>
+    </list>
+    <group id="n8_yjmk" name="n8" xy="0,0" size="940,220"/>
+    <image id="n1_yjmk" name="n1" src="yjmk2b" fileName="images/xsqg_zsx.png" xy="46,48"/>
+  </displayList>
+</component>

二進制
FGUIProject/assets/EnduringGiftBox/images/an_pink.png


二進制
FGUIProject/assets/EnduringGiftBox/images/back2.png


二進制
FGUIProject/assets/EnduringGiftBox/images/bg01.png


二進制
FGUIProject/assets/EnduringGiftBox/images/bg02.png


二進制
FGUIProject/assets/EnduringGiftBox/images/biao.png


二進制
FGUIProject/assets/EnduringGiftBox/images/but_Zhekou.png


二進制
FGUIProject/assets/EnduringGiftBox/images/button.png


二進制
FGUIProject/assets/EnduringGiftBox/images/daizi.png


二進制
FGUIProject/assets/EnduringGiftBox/images/kuang.png


二進制
FGUIProject/assets/EnduringGiftBox/images/samll_text.png


二進制
FGUIProject/assets/EnduringGiftBox/images/text.png


二進制
FGUIProject/assets/EnduringGiftBox/images/thing.png


二進制
FGUIProject/assets/EnduringGiftBox/images/thlb_db.png


二進制
FGUIProject/assets/EnduringGiftBox/images/thlb_lihui.png


二進制
FGUIProject/assets/EnduringGiftBox/images/thlb_sj_db.png


二進制
FGUIProject/assets/EnduringGiftBox/images/time_kuang.png


二進制
FGUIProject/assets/EnduringGiftBox/images/wpk_db_1_da.png


二進制
FGUIProject/assets/EnduringGiftBox/images/wpk_sz_db_1.png


二進制
FGUIProject/assets/EnduringGiftBox/images/wz_thlb.png


二進制
FGUIProject/assets/EnduringGiftBox/images/wz_tlxslb.png


二進制
FGUIProject/assets/EnduringGiftBox/images/wz_xsqg.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_db.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_fy_an.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_fy_an_2.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_lihui.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_nr_db.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_sj_db.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_zk_db.png


二進制
FGUIProject/assets/EnduringGiftBox/images/xsqg_zsx.png


+ 37 - 0
FGUIProject/assets/EnduringGiftBox/package.xml

@@ -46,6 +46,43 @@
     <image id="qqhz25" name="tili.png" path="/images/"/>
     <component id="qqhz26" name="BnBack.xml" path="/components/" exported="true"/>
     <image id="yjmk27" name="tb_zk_red.png" path="/images/"/>
+    <component id="yjmk28" name="SpecialOfferGiftBoxUI.xml" path="/" exported="true"/>
+    <component id="yjmk29" name="RushSaleGiftBoxUI.xml" path="/" exported="true"/>
+    <image id="yjmk2a" name="xsqg_zk_db.png" path="/images/"/>
+    <image id="yjmk2b" name="xsqg_zsx.png" path="/images/"/>
+    <image id="yjmk2d" name="thlb_db.png" path="/images/"/>
+    <image id="yjmk2e" name="thlb_lihui.png" path="/images/"/>
+    <image id="yjmk2f" name="thlb_sj_db.png" path="/images/"/>
+    <image id="yjmk2g" name="wz_thlb.png" path="/images/"/>
+    <image id="yjmk2h" name="wz_tlxslb.png" path="/images/"/>
+    <image id="yjmk2i" name="wz_xsqg.png" path="/images/"/>
+    <image id="yjmk2j" name="xsqg_db.png" path="/images/"/>
+    <image id="yjmk2k" name="xsqg_fy_an.png" path="/images/"/>
+    <image id="yjmk2l" name="xsqg_lihui.png" path="/images/"/>
+    <image id="yjmk2m" name="xsqg_nr_db.png" path="/images/"/>
+    <image id="yjmk2n" name="xsqg_sj_db.png" path="/images/"/>
+    <image id="yjmk2o" name="xsqg_fy_an_2.png" path="/images/"/>
+    <component id="yjmk2p" name="ComRsGifBoxIconItem.xml" path="/components/" exported="true"/>
+    <component id="yjmk2q" name="BtnBuyPink.xml" path="/components/" exported="true"/>
+    <component id="yjmk2r" name="ComDiscount2.xml" path="/components/" exported="true"/>
+    <image id="yjmk2s" name="back2.png" path="/images/"/>
+    <image id="yjmk2u" name="bg01.png" path="/images/"/>
+    <image id="yjmk2v" name="bg02.png" path="/images/"/>
+    <image id="yjmk2w" name="biao.png" path="/images/"/>
+    <image id="yjmk2x" name="but_Zhekou.png" path="/images/"/>
+    <image id="yjmk2y" name="button.png" path="/images/"/>
+    <image id="yjmk2z" name="daizi.png" path="/images/"/>
+    <image id="yjmk30" name="kuang.png" path="/images/"/>
+    <image id="yjmk33" name="samll_text.png" path="/images/"/>
+    <image id="yjmk34" name="text.png" path="/images/"/>
+    <image id="yjmk35" name="thing.png" path="/images/"/>
+    <image id="yjmk36" name="time_kuang.png" path="/images/"/>
+    <component id="yjmk37" name="ComSpecialOfferGiftBoxItem.xml" path="/components/" exported="true"/>
+    <image id="yjmk39" name="wpk_db_1_da.png" path="/images/"/>
+    <image id="yjmk3a" name="wpk_sz_db_1.png" path="/images/"/>
+    <image id="yjmk3b" name="an_pink.png" path="/images/"/>
+    <component id="droi3c" name="BtnUp.xml" path="/components/" exported="true"/>
+    <component id="droi3d" name="BtnNext.xml" path="/components/" exported="true"/>
   </resources>
   <publish name="" path="../GameClient/Assets/ResIn/UI/EnduringGiftBox" packageCount="2" genCode="true" extractAlpha="true"/>
 </packageDescription>

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

@@ -100,9 +100,22 @@
     <graph id="n71_mzf8" name="n71" xy="0,0" size="1080,1920" alpha="0" touchable="false" type="rect" lineSize="0">
       <relation target="" sidePair="width-width,height-height"/>
     </graph>
-    <component id="n79_g1yr" name="btnFirstRecharge" src="qik1tm1" fileName="components/BtnStyle000.xml" pkg="eg2y0ldp" xy="423,223">
+    <component id="n79_g1yr" name="btnFirstRecharge" src="qik1tm1" fileName="components/BtnStyle000.xml" pkg="eg2y0ldp" xy="423,223" group="n88_ktf2">
       <Button title="首充"/>
     </component>
+    <component id="n80_ktf2" name="btnGiftBag1" src="ktf2o5" fileName="components/Button5.xml" xy="806,205" group="n83_ktf2">
+      <Button icon="ui://mfvz4q8kktf2o7"/>
+    </component>
+    <image id="n81_ktf2" name="n81" src="ktf2o8" fileName="images/cj_sj_db.png" xy="789,285" size="128,32" group="n83_ktf2"/>
+    <text id="n82_ktf2" name="txtGiftBagTime1" xy="803,280" pivot="0.5,0" size="100,39" group="n83_ktf2" fontSize="28" color="#fffbf9" align="center" text="03:23:45"/>
+    <group id="n83_ktf2" name="n83" xy="789,205" size="128,114" group="n88_ktf2" advanced="true"/>
+    <component id="n84_ktf2" name="btnGiftBag2" src="ktf2o5" fileName="components/Button5.xml" xy="667,207" group="n87_ktf2">
+      <Button icon="ui://mfvz4q8kktf2o7"/>
+    </component>
+    <image id="n85_ktf2" name="n85" src="ktf2o8" fileName="images/cj_sj_db.png" xy="650,287" size="128,32" group="n87_ktf2"/>
+    <text id="n86_ktf2" name="txtGiftBagTime2" xy="664,282" pivot="0.5,0" size="100,39" group="n87_ktf2" fontSize="28" color="#fffbf9" align="center" text="03:23:45"/>
+    <group id="n87_ktf2" name="n87" xy="650,207" size="128,114" group="n88_ktf2" advanced="true"/>
+    <group id="n88_ktf2" name="n88" xy="423,205" size="494,116"/>
   </displayList>
   <transition name="t1">
     <item time="0" type="Alpha" target="n71_mzf8" tween="true" startValue="0" endValue="1" duration="10" ease="Linear"/>

+ 12 - 0
FGUIProject/assets/Main/components/Button5.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="94,95" extention="Button">
+  <controller name="button" pages="0,up,1,down" selected="0"/>
+  <displayList>
+    <loader id="n1_vek8" name="icon" xy="0,0" size="94,95" url="ui://mfvz4q8kktf2o6" autoSize="true"/>
+    <text id="n4_mbf1" name="title" xy="27,26" pivot="0.5,0.5" size="40,42" fontSize="30" align="center" vAlign="middle" text="">
+      <relation target="" sidePair="center-center,middle-middle"/>
+    </text>
+  </displayList>
+  <Button/>
+  <relation target="n1_vek8" sidePair="width-width,height-height"/>
+</component>

二進制
FGUIProject/assets/Main/images/cj_meirith.png


二進制
FGUIProject/assets/Main/images/cj_sj_db.png


二進制
FGUIProject/assets/Main/images/cj_yulan.png


+ 4 - 0
FGUIProject/assets/Main/package.xml

@@ -617,6 +617,10 @@
     <image id="9jv6o2" name="3Second.png" path="/imagesNew/"/>
     <component id="fqoro3" name="ComResultProMask.xml" path="/components/"/>
     <component id="mbf1o4" name="Button4.xml" path="/components/"/>
+    <component id="ktf2o5" name="Button5.xml" path="/components/"/>
+    <image id="ktf2o6" name="cj_yulan.png" path="/images/"/>
+    <image id="ktf2o7" name="cj_meirith.png" path="/images/"/>
+    <image id="ktf2o8" name="cj_sj_db.png" path="/images/"/>
   </resources>
   <publish name="" path="../GameClient/Assets/ResIn/UI/Main" packageCount="2" genCode="true" extractAlpha="true"/>
 </packageDescription>

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

@@ -131,5 +131,13 @@ namespace GFGGame
         public const string ACTIVITY_ADD = "ACTIVITY_ADD";
         // ACTIVITY_REWARD_ADD
         public const string ACTIVITY_REWARD_ADD = "ACTIVITY_REWARD_ADD";
+        
+        //通知开启通行证
+        public const string NOTICE_PASSPORT_OPEN = "NOTICE_PASSPORT_OPEN";
+        //通知通行证等级变化
+        public const string NOTICE_PASSPORT_LEVEL_CHANGE = "NOTICE_PASSPORT_LEVEL_CHANGE";
+        //通知通行证赛季变更
+        public const string NOTICE_PASSPORT_SEASON_CHANGE = "NOTICE_PASSPORT_SEASON_CHANGE";
+        
     }
 }

+ 5 - 4
GameClient/Assets/Game/HotUpdate/Controller/EnduringGiftBoxController.cs

@@ -2,21 +2,21 @@
 
 namespace GFGGame
 {
-
     public class EnduringGiftBoxController : SingletonBase<EnduringGiftBoxController>
     {
         private static EnduringGiftBoxView _enduringGiftBoxView;
 
-        public static void Show(int itemId, int count, Action onSuccess = null, string message = "")
+        public static void Show(int itemId, int count, Action onSuccess = null, string message = "", int type = 0)
         {
             if (_enduringGiftBoxView == null)
             {
                 _enduringGiftBoxView = new EnduringGiftBoxView();
             }
-            _enduringGiftBoxView.SetParams(itemId, count, onSuccess, message);
+
+            _enduringGiftBoxView.SetParams(itemId, count, onSuccess, message, type);
             _enduringGiftBoxView.Show();
         }
-        
+
         public static void hide()
         {
             if (_enduringGiftBoxView != null)
@@ -24,6 +24,7 @@ namespace GFGGame
                 _enduringGiftBoxView.Hide();
             }
         }
+
         public static void Dispose()
         {
             _enduringGiftBoxView = null;

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

@@ -177,6 +177,9 @@ namespace GFGGame
             ArenaDataManager.Instance.Clear();
             ChatDataManager.Instance.Clear();
             ActivityDataManager.Instance.Clear();
+            ActivityGlobalDataManager.Instance.Clear();
+            EnduringGiftBoxDataManager.Instance.Clear();
+            LimitedTimeGiftBoxDataManager.Instance.Clear();
             GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();
             GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
             GameGlobal.zoneScene.GetComponent<AccountInfoComponent>()?.Clear();

+ 11 - 4
GameClient/Assets/Game/HotUpdate/Data/ActivityGlobalDataManager.cs

@@ -23,20 +23,27 @@ namespace GFGGame
 
         private Dictionary<int, List<int>> activityInfosByType = new Dictionary<int, List<int>>();
 
+        public void Clear()
+        {
+            activityInfos.Clear();
+            activityInfosByType.Clear();
+        }
+        
         //添加活动数据
         public void AddActivityInfo(ActivityInfo activityInfo)
         {
             if (activityInfo == null) return;
             if (activityInfos.ContainsKey(activityInfo.activityId)) return;
             activityInfos.Add(activityInfo.activityId, activityInfo);
-            if (!activityInfosByType.ContainsKey(activityInfo.activityId))
+
+            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+            if (!activityInfosByType.ContainsKey(activityOpenCfg.type))
             {
-                activityInfosByType.Add(activityInfo.activityId, new List<int>());
+                activityInfosByType.Add(activityOpenCfg.type, new List<int>());
             }
-            activityInfosByType[activityInfo.activityId].Add(activityInfo.activityId);
+            activityInfosByType[activityOpenCfg.type].Add(activityInfo.activityId);
             //ACTIVITY_ADD
             EventAgent.DispatchEvent(ConstMessage.ACTIVITY_ADD, activityInfo.activityId);
-            //TODO 判断下时间非法情况
             var remainTime = activityInfo.endTime - TimeHelper.ServerNow();
             if (remainTime > 0)
             {

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

@@ -16,7 +16,7 @@ namespace GFGGame
         private static Dictionary<int, int> _dayAllRebateItemDic = new Dictionary<int, int>();
         public Dictionary<int, int> DayAllRebateItemDic => _dayAllRebateItemDic;
 
-        public void InitData()
+        public void Clear()
         {
             _dayRebateItemIds.Clear();
             _dayAllRebateItemDic.Clear();

+ 169 - 0
GameClient/Assets/Game/HotUpdate/Data/LimitedTimeGiftBoxDataManager.cs

@@ -0,0 +1,169 @@
+using System;
+using System.Collections;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using ET;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using UI.DressUp;
+
+namespace GFGGame
+{
+    public class LimitedTimeGiftBoxDataManager : SingletonBase<LimitedTimeGiftBoxDataManager>
+    {
+        //列表数据3--等级条件的数据
+        private List<LimitedTimeGiftBoxItemData> _ltgGbItemData3 = new List<LimitedTimeGiftBoxItemData>();
+        public List<LimitedTimeGiftBoxItemData> LtgGbItemData3 => _ltgGbItemData3;
+
+        //圆形样式数据4--等级条件的数据 
+        private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemYxData>();
+        public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData4 => _ltgGbItemData4;
+
+        //圆形样式数据5--时间条件的数据
+        private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemYxData>();
+        public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData5 => _ltgGbItemData5;
+
+        public void Clear()
+        {
+            _ltgGbItemData3.Clear();
+            _ltgGbItemData4.Clear();
+            _ltgGbItemData5.Clear();
+        }
+        
+        public void UpLtgGbItemData3()
+        {
+            _ltgGbItemData3.Clear();
+            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
+                         ActivityType.XSLB1))
+            {
+                if (activityInfo.endTime >= TimeInfo.Instance.ServerNow())
+                {
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+                    var paramsArr = activityOpenCfg.paramsArr;
+                    Array.Sort(paramsArr);
+                    foreach (var shopCfgId in paramsArr)
+                    {
+                        ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
+
+                        if (shopCfg == null)
+                        {
+                            Log.Error("shopCfg is null");
+                            continue;
+                        }
+
+                        LimitedTimeGiftBoxItemData ltgGbItemData =
+                            _ltgGbItemData3.FirstOrDefault(a => a.IndexType == shopCfg.menu2);
+                        if (ltgGbItemData != null)
+                        {
+                            if (ltgGbItemData.ShopCfgIds != null)
+                            {
+                                if (ltgGbItemData.ShopCfgIds.Count < 3)
+                                {
+                                    ltgGbItemData.ShopCfgIds.Add(shopCfgId);
+                                }
+                            }
+                            else
+                            {
+                                ltgGbItemData.ShopCfgIds = new List<int> { shopCfgId };
+                            }
+
+                            ltgGbItemData.EndTime = activityInfo.endTime;
+                            _ltgGbItemData3.Add(ltgGbItemData);
+                        }
+                        else
+                        {
+                            ltgGbItemData = new LimitedTimeGiftBoxItemData
+                            {
+                                IndexType = shopCfg.menu2,
+                                ShopCfgIds = new List<int> { shopCfgId },
+                                EndTime = activityInfo.endTime
+                            };
+
+                            _ltgGbItemData3.Add(ltgGbItemData);
+                        }
+                    }
+                }
+            }
+
+            //排序
+            foreach (var item in _ltgGbItemData3)
+            {
+                item.ShopCfgIds = item.ShopCfgIds.OrderBy(id => id).ToList();
+            }
+
+            _ltgGbItemData3 = _ltgGbItemData3.OrderBy(a => a.IndexType).ToList();
+        }
+
+        public void UpLtgGbItemData4()
+        {
+            _ltgGbItemData4.Clear();
+            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
+                         ActivityType.XSLB2))
+            {
+                if (activityInfo.endTime >= TimeInfo.Instance.ServerNow())
+                {
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+                    //判断是否是类型4的数据
+                    if (activityOpenCfg.type == ActivityType.XSLB2)
+                    {
+                        foreach (var shopCfgId in activityOpenCfg.paramsArr)
+                        {
+                            FillData(_ltgGbItemData4, shopCfgId, activityInfo.endTime);
+                        }
+                    }
+                }
+            }
+
+            _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();
+        }
+
+        public void UpLtgGbItemData5()
+        {
+            _ltgGbItemData5.Clear();
+            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
+                         ActivityType.XSLB3))
+            {
+                if (activityInfo.endTime >= TimeInfo.Instance.ServerNow())
+                {
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+                    //判断是否是类型4的数据
+                    if (activityOpenCfg.type == ActivityType.XSLB3)
+                    {
+                        FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.endTime);
+                    }
+                }
+            }
+
+            _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();
+        }
+
+        private void FillData(List<LimitedTimeGiftBoxItemYxData> listData, int shopCfgId, long endTime)
+        {
+            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
+
+            if (shopCfg == null)
+            {
+                Log.Error("shopCfg is null");
+                return;
+            }
+
+            var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);
+            if (ltgGbItemData == null)
+            {
+                listData.Add(new LimitedTimeGiftBoxItemYxData
+                {
+                    EndTime = endTime,
+                    ShopCfgId = shopCfg.id,
+                    IndexType = shopCfg.menu2
+                });
+            }
+            else
+            {
+                var index = listData.IndexOf(ltgGbItemData);
+                ltgGbItemData.IndexType = shopCfg.menu2;
+                ltgGbItemData.EndTime = endTime;
+                listData[index] = ltgGbItemData;
+            }
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Data/LimitedTimeGiftBoxDataManager.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3a50db5ef259460dbde7cd6c1dd74ec4
+timeCreated: 1685696577

+ 40 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/GiftBoxData.cs

@@ -0,0 +1,40 @@
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class ActivityOpenData
+    {
+        //活动开启配置
+        public ActivityOpenCfg ActivityOpenCfgData;
+
+        //活动结束时间戳
+        public long ActivityEndTime;
+    }
+
+    /// <summary>
+    /// 限时礼包列表数据模型
+    /// </summary>
+    public class LimitedTimeGiftBoxItemData
+    {
+        //限时礼包_ShopCfg的menu2
+        public int IndexType;
+
+        //只存同一个menu2的3条数据,超出忽略
+        public List<int> ShopCfgIds;
+
+        public long EndTime;
+    }
+
+    /// <summary>
+    /// 圆形样式数据模型
+    /// </summary>
+    public class LimitedTimeGiftBoxItemYxData
+    {
+        public int ShopCfgId;
+
+        //限时礼包_ShopCfg的menu2
+        public int IndexType;
+
+        public long EndTime;
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/GiftBoxData.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 371bcaa6079b44e48cc3197e0a51d0c9
+timeCreated: 1685758053

+ 83 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_BtnBuyPink.cs

@@ -0,0 +1,83 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.EnduringGiftBox
+{
+    public partial class UI_BtnBuyPink
+    {
+        public GButton target;
+        public GImage m_bagGrey;
+        public GImage m_bagPink;
+        public GTextField m_txtNewPrice;
+        public GTextField m_txtOldPrice;
+        public GLoader m_loaIcon;
+        public const string URL = "ui://bdi1qe15yjmk2q";
+        public const string PACKAGE_NAME = "EnduringGiftBox";
+        public const string RES_NAME = "BtnBuyPink";
+        private static UI_BtnBuyPink _proxy;
+
+        public static UI_BtnBuyPink Create(GObject gObject = null)
+        {
+            var ui = new UI_BtnBuyPink();
+            if(gObject == null)
+            	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GButton)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_BtnBuyPink Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_BtnBuyPink();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GButton)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_bagGrey = (GImage)comp.GetChild("bagGrey");
+            m_bagPink = (GImage)comp.GetChild("bagPink");
+            m_txtNewPrice = (GTextField)comp.GetChild("txtNewPrice");
+            m_txtOldPrice = (GTextField)comp.GetChild("txtOldPrice");
+            m_loaIcon = (GLoader)comp.GetChild("loaIcon");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_bagGrey = null;
+            m_bagPink = null;
+            m_txtNewPrice = null;
+            m_txtOldPrice = null;
+            m_loaIcon = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_BtnBuyPink.cs.meta

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

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComDiscount2.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.EnduringGiftBox
+{
+    public partial class UI_ComDiscount2
+    {
+        public GComponent target;
+        public GTextField m_txtDiscountNum;
+        public const string URL = "ui://bdi1qe15yjmk2r";
+        public const string PACKAGE_NAME = "EnduringGiftBox";
+        public const string RES_NAME = "ComDiscount2";
+        private static UI_ComDiscount2 _proxy;
+
+        public static UI_ComDiscount2 Create(GObject gObject = null)
+        {
+            var ui = new UI_ComDiscount2();
+            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_ComDiscount2 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComDiscount2();
+            }
+            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_txtDiscountNum = (GTextField)comp.GetChild("txtDiscountNum");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_txtDiscountNum = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComDiscount2.cs.meta

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

+ 75 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComRsGifBoxIconItem.cs

@@ -0,0 +1,75 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.EnduringGiftBox
+{
+    public partial class UI_ComRsGifBoxIconItem
+    {
+        public GComponent target;
+        public UI_ComRewardIconItem m_comRewardIconItem;
+        public GTextField m_txtItemName;
+        public const string URL = "ui://bdi1qe15yjmk2p";
+        public const string PACKAGE_NAME = "EnduringGiftBox";
+        public const string RES_NAME = "ComRsGifBoxIconItem";
+        private static UI_ComRsGifBoxIconItem _proxy;
+
+        public static UI_ComRsGifBoxIconItem Create(GObject gObject = null)
+        {
+            var ui = new UI_ComRsGifBoxIconItem();
+            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_ComRsGifBoxIconItem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComRsGifBoxIconItem();
+            }
+            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_comRewardIconItem = (UI_ComRewardIconItem)UI_ComRewardIconItem.Create(comp.GetChild("comRewardIconItem"));
+            m_txtItemName = (GTextField)comp.GetChild("txtItemName");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_comRewardIconItem.Dispose();
+            m_comRewardIconItem = null;
+            m_txtItemName = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComRsGifBoxIconItem.cs.meta

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

+ 91 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComSpecialOfferGiftBoxItem.cs

@@ -0,0 +1,91 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.EnduringGiftBox
+{
+    public partial class UI_ComSpecialOfferGiftBoxItem
+    {
+        public GComponent target;
+        public GImage m_nczlb;
+        public GTextField m_txtBoxItemName;
+        public UI_BtnBuy m_btnBuy;
+        public GTextField m_txtUrc;
+        public GTextField m_txtGetJf;
+        public UI_ComDiscount m_comDiscount;
+        public GList m_list;
+        public const string URL = "ui://bdi1qe15yjmk37";
+        public const string PACKAGE_NAME = "EnduringGiftBox";
+        public const string RES_NAME = "ComSpecialOfferGiftBoxItem";
+        private static UI_ComSpecialOfferGiftBoxItem _proxy;
+
+        public static UI_ComSpecialOfferGiftBoxItem Create(GObject gObject = null)
+        {
+            var ui = new UI_ComSpecialOfferGiftBoxItem();
+            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_ComSpecialOfferGiftBoxItem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComSpecialOfferGiftBoxItem();
+            }
+            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_nczlb = (GImage)comp.GetChild("nczlb");
+            m_txtBoxItemName = (GTextField)comp.GetChild("txtBoxItemName");
+            m_btnBuy = (UI_BtnBuy)UI_BtnBuy.Create(comp.GetChild("btnBuy"));
+            m_txtUrc = (GTextField)comp.GetChild("txtUrc");
+            m_txtGetJf = (GTextField)comp.GetChild("txtGetJf");
+            m_comDiscount = (UI_ComDiscount)UI_ComDiscount.Create(comp.GetChild("comDiscount"));
+            m_list = (GList)comp.GetChild("list");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_nczlb = null;
+            m_txtBoxItemName = null;
+            m_btnBuy.Dispose();
+            m_btnBuy = null;
+            m_txtUrc = null;
+            m_txtGetJf = null;
+            m_comDiscount.Dispose();
+            m_comDiscount = null;
+            m_list = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_ComSpecialOfferGiftBoxItem.cs.meta

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

+ 100 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_RushSaleGiftBoxUI.cs

@@ -0,0 +1,100 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.EnduringGiftBox
+{
+    public partial class UI_RushSaleGiftBoxUI
+    {
+        public GComponent target;
+        public GTextField m_txtBoxItemName;
+        public GTextField m_txtBoxResidueTime;
+        public GList m_list;
+        public GTextField m_txtUrc;
+        public UI_BtnBuyPink m_btnBuyPink;
+        public UI_ComDiscount2 m_comDiscount;
+        public GTextField m_txtLrc;
+        public GComponent m_btnUp;
+        public GComponent m_btnNext;
+        public GComponent m_btnBack;
+        public const string URL = "ui://bdi1qe15yjmk29";
+        public const string PACKAGE_NAME = "EnduringGiftBox";
+        public const string RES_NAME = "RushSaleGiftBoxUI";
+        private static UI_RushSaleGiftBoxUI _proxy;
+
+        public static UI_RushSaleGiftBoxUI Create(GObject gObject = null)
+        {
+            var ui = new UI_RushSaleGiftBoxUI();
+            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_RushSaleGiftBoxUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_RushSaleGiftBoxUI();
+            }
+            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_txtBoxItemName = (GTextField)comp.GetChild("txtBoxItemName");
+            m_txtBoxResidueTime = (GTextField)comp.GetChild("txtBoxResidueTime");
+            m_list = (GList)comp.GetChild("list");
+            m_txtUrc = (GTextField)comp.GetChild("txtUrc");
+            m_btnBuyPink = (UI_BtnBuyPink)UI_BtnBuyPink.Create(comp.GetChild("btnBuyPink"));
+            m_comDiscount = (UI_ComDiscount2)UI_ComDiscount2.Create(comp.GetChild("comDiscount"));
+            m_txtLrc = (GTextField)comp.GetChild("txtLrc");
+            m_btnUp = (GComponent)comp.GetChild("btnUp");
+            m_btnNext = (GComponent)comp.GetChild("btnNext");
+            m_btnBack = (GComponent)comp.GetChild("btnBack");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_txtBoxItemName = null;
+            m_txtBoxResidueTime = null;
+            m_list = null;
+            m_txtUrc = null;
+            m_btnBuyPink.Dispose();
+            m_btnBuyPink = null;
+            m_comDiscount.Dispose();
+            m_comDiscount = null;
+            m_txtLrc = null;
+            m_btnUp = null;
+            m_btnNext = null;
+            m_btnBack = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_RushSaleGiftBoxUI.cs.meta

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

+ 83 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_SpecialOfferGiftBoxUI.cs

@@ -0,0 +1,83 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.EnduringGiftBox
+{
+    public partial class UI_SpecialOfferGiftBoxUI
+    {
+        public GComponent target;
+        public GTextField m_txtBoxResidueTime;
+        public GList m_list;
+        public GComponent m_btnUp;
+        public GComponent m_btnNext;
+        public GComponent m_back;
+        public const string URL = "ui://bdi1qe15yjmk28";
+        public const string PACKAGE_NAME = "EnduringGiftBox";
+        public const string RES_NAME = "SpecialOfferGiftBoxUI";
+        private static UI_SpecialOfferGiftBoxUI _proxy;
+
+        public static UI_SpecialOfferGiftBoxUI Create(GObject gObject = null)
+        {
+            var ui = new UI_SpecialOfferGiftBoxUI();
+            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_SpecialOfferGiftBoxUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_SpecialOfferGiftBoxUI();
+            }
+            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_txtBoxResidueTime = (GTextField)comp.GetChild("txtBoxResidueTime");
+            m_list = (GList)comp.GetChild("list");
+            m_btnUp = (GComponent)comp.GetChild("btnUp");
+            m_btnNext = (GComponent)comp.GetChild("btnNext");
+            m_back = (GComponent)comp.GetChild("back");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_txtBoxResidueTime = null;
+            m_list = null;
+            m_btnUp = null;
+            m_btnNext = null;
+            m_back = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/EnduringGiftBox/UI_SpecialOfferGiftBoxUI.cs.meta

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

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

@@ -33,6 +33,10 @@ namespace UI.Main
         public GGroup m_grpMove;
         public GLoader m_loaGuidestudio;
         public GButton m_btnFirstRecharge;
+        public GButton m_btnGiftBag1;
+        public GTextField m_txtGiftBagTime1;
+        public GButton m_btnGiftBag2;
+        public GTextField m_txtGiftBagTime2;
         public Transition m_t1;
         public Transition m_t2;
         public Transition m_t3;
@@ -110,6 +114,10 @@ namespace UI.Main
             m_grpMove = (GGroup)comp.GetChild("grpMove");
             m_loaGuidestudio = (GLoader)comp.GetChild("loaGuidestudio");
             m_btnFirstRecharge = (GButton)comp.GetChild("btnFirstRecharge");
+            m_btnGiftBag1 = (GButton)comp.GetChild("btnGiftBag1");
+            m_txtGiftBagTime1 = (GTextField)comp.GetChild("txtGiftBagTime1");
+            m_btnGiftBag2 = (GButton)comp.GetChild("btnGiftBag2");
+            m_txtGiftBagTime2 = (GTextField)comp.GetChild("txtGiftBagTime2");
             m_t1 = comp.GetTransition("t1");
             m_t2 = comp.GetTransition("t2");
             m_t3 = comp.GetTransition("t3");
@@ -160,6 +168,10 @@ namespace UI.Main
             m_grpMove = null;
             m_loaGuidestudio = null;
             m_btnFirstRecharge = null;
+            m_btnGiftBag1 = null;
+            m_txtGiftBagTime1 = null;
+            m_btnGiftBag2 = null;
+            m_txtGiftBagTime2 = null;
             m_t1 = null;
             m_t2 = null;
             m_t3 = null;

+ 3 - 3
GameClient/Assets/Game/HotUpdate/ServerProxy/BattlePassTaskSProxy.cs

@@ -14,7 +14,7 @@ namespace ET
                 return;
             }
             battlePassTaskDataManager.SetIsBuy(message.IsBuy);
-            //TODO 通知UI
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_OPEN);
             await ETTask.CompletedTask;
         }
     }
@@ -32,7 +32,7 @@ namespace ET
             {
                 battlePassTaskDataManager.AddSuperReward(superLevel);
             }
-            //TODO 通知UI
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_LEVEL_CHANGE);
             await ETTask.CompletedTask;
         }
     }
@@ -44,7 +44,7 @@ namespace ET
         {
             var battlePassTaskDataManager = BattlePassTaskDataManager.Instance;
             battlePassTaskDataManager.SetSeasonId(message.SeasonId);
-            //TODO 通知UI
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_SEASON_CHANGE);
             await ETTask.CompletedTask;
         }
     }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/ServerProxy/EnduringGiftBoxSProxy.cs

@@ -15,7 +15,7 @@ namespace GFGGame
             {
                 if (response.Error == ErrorCode.ERR_Success)
                 {
-                    EnduringGiftBoxDataManager.Instance.InitData();
+                    EnduringGiftBoxDataManager.Instance.Clear();
                     foreach (var item in response.DayAllItemResidues)
                     {
                         EnduringGiftBoxDataManager.Instance.UpDayAllRebateItemDic(item.ItemId, item.ResidueNum);

+ 4 - 5
GameClient/Assets/Game/HotUpdate/Utils/ItemUtil.cs

@@ -33,7 +33,7 @@ namespace GFGGame
             }
         }
 
-        public static void AddPower(string prefix = "", Action onSuccess = null)
+        public static void AddPower(string prefix = "", Action onSuccess = null, int type = 0)
         {
             EnduringGiftBoxController.Show(ConstItemID.POWER, 1, () =>
             {
@@ -41,19 +41,18 @@ namespace GFGGame
                 {
                     onSuccess();
                 }
-            });
+            }, "", type);
         }
 
-        public static void AddGold(long value = 0, Action onSuccess = null)
+        public static void AddGold(long value = 0, Action onSuccess = null, int type = 0)
         {
-
             EnduringGiftBoxController.Show(ConstItemID.GOLD, 1, () =>
             {
                 if (onSuccess != null)
                 {
                     onSuccess();
                 }
-            });
+            }, "", type);
         }
 
         public static void AddDiamondPurple()

+ 90 - 0
GameClient/Assets/Game/HotUpdate/Utils/ListUtil.cs

@@ -0,0 +1,90 @@
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class ListUtil
+    {
+        /// <summary>
+        /// 用来做泛型数据切换,上一条,下一条...
+        /// </summary>
+        /// <param name="list"></param>
+        /// <param name="type"></param>
+        /// <param name="currentIndex">当前处于的索引</param>
+        /// <param name="newIndex">操作数据之后返回的数据的索引,也就是最新的索引</param>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T Navigate<T>(List<T> list, NavigateType type, int currentIndex, out int newIndex) where T : new()
+        {
+            if (type == NavigateType.Previous)
+            {
+                //如果已经是最前面的一条数据,则切换到最后一条数据,形成一个切换循环
+                if (currentIndex <= 0)
+                {
+                    currentIndex = list.Count - 1;
+                    newIndex = currentIndex;
+                    return list[currentIndex];
+                }
+            }
+            else if (type == NavigateType.Next)
+            {
+                //如果已经是最后一条数据,则切换到第一条数据,形成一个切换循环
+                if (currentIndex >= list.Count - 1)
+                {
+                    currentIndex = 0;
+                    newIndex = currentIndex;
+                    return list[currentIndex];
+                }
+            }
+            else
+            {
+                newIndex = currentIndex;
+                return list[currentIndex];
+            }
+
+            int previousIndex = currentIndex - 1;
+            int nextIndex = currentIndex + 1;
+
+            if (previousIndex < 0 && nextIndex >= list.Count)
+            {
+                newIndex = currentIndex;
+                return list[currentIndex];
+            }
+
+            if (type == NavigateType.Previous && previousIndex >= 0)
+            {
+                newIndex = previousIndex;
+                return list[previousIndex];
+            }
+
+            if (type == NavigateType.Next && nextIndex < list.Count)
+            {
+                newIndex = nextIndex;
+                return list[nextIndex];
+            }
+
+            newIndex = currentIndex;
+            return list[currentIndex];
+        }
+
+        /// <summary>
+        /// 动作枚举
+        /// </summary>
+        public enum NavigateType
+        {
+            /// <summary>
+            /// 不作切换动作,返回当前索引的数据
+            /// </summary>
+            None = 0,
+
+            /// <summary>
+            /// 上一条
+            /// </summary>
+            Previous = 1,
+
+            /// <summary>
+            /// 下一条
+            /// </summary>
+            Next = 2
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Utils/ListUtil.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 250cd1df042041008c95c9cad474dbcb
+timeCreated: 1685762914

+ 38 - 1
GameClient/Assets/Game/HotUpdate/Utils/TimeUtil.cs

@@ -19,16 +19,19 @@ namespace GFGGame
             {
                 return string.Format("{0}天", days);
             }
+
             int hours = (int)Math.Floor((decimal)time / TimeUtil.SECOND_PER_HOUR);
             if (hours >= 1)
             {
                 return string.Format("{0}小时", hours);
             }
+
             int minutes = (int)Math.Floor((decimal)time / TimeUtil.SECOND_PER_MUNITE);
             if (minutes >= 1)
             {
                 return string.Format("{0}分钟", minutes);
             }
+
             return string.Format("{0}秒", time);
         }
 
@@ -38,6 +41,7 @@ namespace GFGGame
             int days = (int)Math.Ceiling((decimal)time / TimeUtil.SECOND_PER_DAY);
             return days;
         }
+
         /// <summary>
         /// 
         /// </summary>
@@ -55,6 +59,7 @@ namespace GFGGame
                 str = "天";
                 return;
             }
+
             int hours = (int)Math.Floor((decimal)time / TimeUtil.SECOND_PER_HOUR);
             if (hours >= 1)
             {
@@ -62,6 +67,7 @@ namespace GFGGame
                 str = "小时";
                 return;
             }
+
             int minutes = (int)Math.Floor((decimal)time / TimeUtil.SECOND_PER_MUNITE);
             if (minutes >= 1)
             {
@@ -69,6 +75,7 @@ namespace GFGGame
                 str = "分钟";
                 return;
             }
+
             num = minutes;
             str = "秒";
         }
@@ -84,6 +91,7 @@ namespace GFGGame
 
             return str;
         }
+
         /// <summary>
         /// 将时间戳转换成yyyy/MM/dd格式
         /// </summary>
@@ -144,6 +152,7 @@ namespace GFGGame
             string strS = ts.Seconds.ToString().Length == 1 ? "0" + ts.Seconds : ts.Seconds.ToString();
             return string.Format("{0}:{1}:{2}", strH, strM, strS);
         }
+
         /// <summary>
         /// 输入一段时间(毫秒),将时间转换成DD天HH小时mm分格式
         /// </summary>
@@ -156,6 +165,7 @@ namespace GFGGame
             string strM = ts.Minutes.ToString().Length == 1 ? "0" + ts.Minutes : ts.Minutes.ToString();
             return string.Format("{0}天{1}小时{2}分", strD, strH, strM);
         }
+
         /// <summary>
         /// <summary>
         /// 将时间戳转换成HH:mm格式
@@ -168,6 +178,7 @@ namespace GFGGame
 
             return str;
         }
+
         /// <summary>
         /// <summary>
         /// 将时间戳转换成mm:ss格式
@@ -180,5 +191,31 @@ namespace GFGGame
 
             return str;
         }
+
+        /// <summary>
+        /// 计算两个时间戳之间的时间差,返回格式为: 1天1小时1分1秒,如果时间差小于1天,则返回格式为: 03:59:30
+        /// </summary>
+        /// <param name="startTimeStamp">开始时间戳毫秒级,一般是服务器当前时间</param>
+        /// <param name="endTimeStamp">结束时间戳毫秒级</param>
+        /// <returns></returns>
+        public static string GetTimeLeft(long startTimeStamp, long endTimeStamp)
+        {
+            DateTime dtStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(startTimeStamp);
+            DateTime dtEnd = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(endTimeStamp);
+
+            TimeSpan timeLeft = dtEnd.Subtract(DateTime.UtcNow).Add(DateTime.UtcNow.Subtract(dtStart));
+            string timeLeftFormatted;
+
+            if (timeLeft.TotalHours < 24)
+            {
+                timeLeftFormatted = timeLeft.ToString(@"hh\:mm\:ss");
+            }
+            else
+            {
+                timeLeftFormatted = string.Format("{0}天{1}小时{2}分", timeLeft.Days, timeLeft.Hours, timeLeft.Minutes);
+            }
+
+            return timeLeftFormatted;
+        }
     }
-}
+}

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/Common/Controller/ValueBarController.cs

@@ -25,11 +25,11 @@ namespace GFGGame
         }
         private void OnClickGold()
         {
-            ItemUtil.AddGold();
+            ItemUtil.AddGold(0, null, 1);
         }
         private void OnClickPower()
         {
-            ItemUtil.AddPower();
+            ItemUtil.AddPower("", null, 1);
         }
         private void OnClickDiamondPurple()
         {

+ 19 - 4
GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/EnduringGiftBoxView.cs

@@ -15,6 +15,7 @@ namespace GFGGame
         private int _itemId; //道具id,该页面目前只给:体力,金币使用
         private int _count; //本次购买次数
         private int _buyTimes = 0; //已购次数
+        private int _type = 0; //0从别的地方跳转过来. 1从点击TOP菜单栏icon跳转过来
 
         private Action _onSuccess;
         private int _maxTimes = 0;
@@ -117,13 +118,15 @@ namespace GFGGame
                 out _gameObject4, out _wrapper4);
         }
 
-        public void SetParams(int itemId, int count, Action onSuccess, string message = "")
+        public void SetParams(int itemId, int count, Action onSuccess, string message = "", int type = 0)
         {
             _itemId = itemId;
             _count = count;
 
             _onSuccess = onSuccess;
             _message = message;
+
+            _type = type;
         }
 
         private void UpdateView()
@@ -273,8 +276,14 @@ namespace GFGGame
                 item.m_comLeftGiftBox.m_comGouMaiGetText.m_loaIcon.url = ResPathUtil.GetIconPath(getItemCfg);
                 item.m_comLeftGiftBox.m_comGouMaiGetText.m_txtGetGold.text = itemArr[1].ToString();
                 item.m_txtUrc.text = string.Format("每周限购{0}/{1}", remainBuyNum, shopCfg.maxBuyNum);
-                item.m_txtLrc.text = string.Format("剩余{0}天",
-                    EnduringGiftBoxDataManager.Instance.GetItemRebateDay(itemCfg.id));
+                int rebateDay = EnduringGiftBoxDataManager.Instance.GetItemRebateDay(itemCfg.id);
+                string mTxtLrc = string.Empty;
+                if (rebateDay != 0)
+                {
+                    mTxtLrc = string.Format("剩余{0}天", rebateDay);
+                }
+
+                item.m_txtLrc.text = mTxtLrc;
                 item.m_txtWeekPrompt.visible = true;
                 item.m_txtWeekPrompt.text =
                     string.Format("连续{0}天每日获得",
@@ -325,6 +334,8 @@ namespace GFGGame
                 }
             }
 
+            item.m_icoWeekPromptTag.onClick.Add(RuleController.ShowRuleView);
+            item.m_icoWeekPromptTag.data = 300013;
             //领取按钮点击事件
             item.m_btnCurReceive.target.onClick.Add(OnBtnCurReceiveClick);
             //购买按钮点击事件
@@ -485,7 +496,11 @@ namespace GFGGame
             }
 
             UpdateView();
-            //this.Hide();
+            //判断一下是不是从主要界面进来的
+            if (_type == 0)
+            {
+                this.Hide();
+            }
         }
 
         //购买连续礼包之后,更新数据+更新界面

+ 307 - 0
GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/RushSaleGiftBoxView.cs

@@ -0,0 +1,307 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using ET;
+using FairyGUI;
+using UI.EnduringGiftBox;
+using UnityEngine;
+
+
+namespace GFGGame
+{
+    //圆形样式的限时礼包
+    // 4类型-圆形样式:等级条件的数据
+    // 5类型-圆形样式:时间条件的数据
+    public class RushSaleGiftBoxView : BaseWindow
+    {
+        private UI_RushSaleGiftBoxUI _ui;
+
+        private int _type; //决定数据的类型 --等级条件的数据,时间条件的数据
+
+        private int _pageIndex; //当前页码,需要显示的数据的索引
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+
+            packageName = UI_RushSaleGiftBoxUI.PACKAGE_NAME;
+            _ui = UI_RushSaleGiftBoxUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.None;
+
+            _ui.m_btnUp.onClick.Add(OnBtnPreviousClick);
+            _ui.m_btnNext.onClick.Add(OnBtnNextClick);
+            _ui.m_btnBack.onClick.Add(OnBtnCancelClick);
+            _ui.m_btnBuyPink.target.onClick.Add(OnBtnBuyClick);
+        }
+        
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _type = (int)(this.viewData as object[])[0]; //ConstActivityType
+            AddEffect();
+            LimitedTimeGiftBoxDataManager.Instance.UpLtgGbItemData4();
+            LimitedTimeGiftBoxDataManager.Instance.UpLtgGbItemData5();
+            InitPageInex();
+            UpViewNone();
+        }
+
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.ACTIVITY_REMOVE, UpViewNone);
+            EventAgent.AddEventListener(ConstMessage.ACTIVITY_ADD, UpViewNone);
+            EventAgent.AddEventListener(ConstMessage.SHOP_BUY, UpViewNone);
+        }
+
+        protected override void RemoveEventListener()
+        {
+            EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_REMOVE, UpViewNone);
+            EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_ADD, UpViewNone);
+            EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, UpViewNone);
+            base.RemoveEventListener();
+        }
+
+        private void AddEffect()
+        {
+        }
+
+        //实例化索引
+        private void InitPageInex()
+        {
+            if (_type == ActivityType.XSLB2)
+            {
+                //4
+                var data4 = LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData4
+                    .FirstOrDefault(a => a.IndexType == 1);
+                _pageIndex = data4 == null ? 0 : LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData4.IndexOf(data4);
+            }
+            else if (_type == ActivityType.XSLB3)
+            {
+                //5
+                var data5 = LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData5
+                    .FirstOrDefault(a => a.IndexType == 1);
+                _pageIndex = data5 == null ? 0 : LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData5.IndexOf(data5);
+            }
+        }
+
+        public void UpTime()
+        {
+            //筛选一条数据用来界面渲染
+            var list = _type == ActivityType.XSLB2
+                ? LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData4
+                : LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData5;
+
+            list = list.Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+                this.Hide();
+                return;
+            }
+
+            _ui.m_txtBoxResidueTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime);
+        }
+
+        private void UpdateView(ListUtil.NavigateType type)
+        {
+            var list = _type == ActivityType.XSLB2
+                ? LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData4
+                : LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData5;
+
+            list = list.Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+                this.Hide();
+                return;
+            }
+
+            var data = ListUtil.Navigate(list, type, _pageIndex, out int newIndex);
+            _pageIndex = newIndex;
+
+            _ui.m_btnUp.visible = true;
+            _ui.m_btnNext.visible = true;
+            if (list.Count == 1)
+            {
+                _ui.m_btnUp.visible = false;
+                _ui.m_btnNext.visible = false;
+            }
+            else
+            {
+                //翻页翻到了最后一条数据
+                if (list.Count == _pageIndex + 1)
+                {
+                    _ui.m_btnNext.visible = false;
+                }
+
+                if (_pageIndex == 0)
+                {
+                    _ui.m_btnUp.visible = false;
+                }
+            }
+
+            var shopCfg = ShopCfgArray.Instance.GetCfg(data.ShopCfgId);
+            var boxItemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
+            var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
+
+            string mTxtUrc = string.Empty;
+            if (shopCfg.refreshType == RefreshType.DAY)
+            {
+                mTxtUrc = $"今日限购{remainBuyNum}/{shopCfg.maxBuyNum}";
+            }
+            else if (shopCfg.refreshType == RefreshType.WEEK)
+            {
+                mTxtUrc = $"本周限购{remainBuyNum}/{shopCfg.maxBuyNum}";
+            }
+            else if (shopCfg.refreshType == RefreshType.MONTH)
+            {
+                mTxtUrc = $"本月限购{remainBuyNum}/{shopCfg.maxBuyNum}";
+            }
+
+            if (remainBuyNum == 0)
+            {
+                //已售完
+                _ui.m_btnBuyPink.m_bagGrey.visible = true;
+                _ui.m_btnBuyPink.m_bagPink.visible = false;
+            }
+            else
+            {
+                //未售完
+                _ui.m_btnBuyPink.m_bagGrey.visible = false;
+                _ui.m_btnBuyPink.m_bagPink.visible = true;
+            }
+
+            string mTxtNewPrice;
+            _ui.m_txtLrc.text = string.Empty;
+            _ui.m_btnBuyPink.m_loaIcon.visible = false;
+            _ui.m_btnBuyPink.m_txtOldPrice.text = shopCfg.originalPrice.ToString();
+            if (shopCfg.costType == CostType.ITEM)
+            {
+                //货币
+                ItemCfg costCfg = ItemCfgArray.Instance.GetCfg(shopCfg.costId);
+                mTxtNewPrice = shopCfg.price.ToString();
+                _ui.m_btnBuyPink.m_loaIcon.visible = true;
+                _ui.m_btnBuyPink.m_loaIcon.url = ResPathUtil.GetIconPath(costCfg);
+            }
+            else if (shopCfg.costType == CostType.RMB)
+            {
+                //人民币
+                mTxtNewPrice = $"{shopCfg.price}元";
+                _ui.m_btnBuyPink.m_txtNewPrice.align = AlignType.Left;
+                _ui.m_btnBuyPink.m_txtNewPrice.x = 90;
+                _ui.m_txtLrc.text = $"可获得{shopCfg.price * 10}充值经验";
+            }
+            else
+            {
+                //免费
+                mTxtNewPrice = $"免费";
+                _ui.m_btnBuyPink.m_txtOldPrice.text = "";
+                _ui.m_btnBuyPink.m_txtNewPrice.align = AlignType.Left;
+                _ui.m_btnBuyPink.m_txtNewPrice.x = 90;
+            }
+
+            _ui.m_txtBoxItemName.text = shopCfg.itemName;
+            //这个B时间需要在一个地方统一处理,然后广播事件,不然可能会存在不同步的问题,最后做
+            _ui.m_txtBoxResidueTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), data.EndTime);
+            _ui.m_txtUrc.text = mTxtUrc;
+            _ui.m_comDiscount.m_txtDiscountNum.text =
+                NumberUtil.CalculateDiscount(shopCfg.originalPrice, shopCfg.price);
+            _ui.m_btnBuyPink.m_txtNewPrice.text = mTxtNewPrice;
+            _ui.m_btnBuyPink.target.data = shopCfg;
+
+            _ui.m_list.data = boxItemCfg;
+            _ui.m_list.itemRenderer = ListItemRender;
+            _ui.m_list.numItems = boxItemCfg.itemsArr.Length;
+            _ui.m_list.visible = true;
+        }
+
+        private void ListItemRender(int index, GObject obj)
+        {
+            UI_ComRsGifBoxIconItem uiItem = UI_ComRsGifBoxIconItem.Proxy(obj);
+            var boxItemCfg = uiItem.target.parent.data as ItemCfg;
+            var itemKv = boxItemCfg.itemsArr[index];
+
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemKv[0]);
+            uiItem.m_txtItemName.text = itemCfg.name;
+            uiItem.target.data = itemCfg;
+            uiItem.m_comRewardIconItem.m_bagBlue.visible = false;
+            uiItem.m_comRewardIconItem.m_bagBlueEx.visible = false;
+            uiItem.m_comRewardIconItem.m_num.text = itemKv[1].ToString();
+            uiItem.m_comRewardIconItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg);
+            uiItem.m_comRewardIconItem.target.onClick.Add(OnListSelectorItemClick);
+        }
+
+        private void UpViewNone()
+        {
+            UpdateView(ListUtil.NavigateType.None);
+        }
+
+        //上一条
+        private void OnBtnPreviousClick()
+        {
+            UpdateView(ListUtil.NavigateType.Previous);
+        }
+
+        //下一条
+        private void OnBtnNextClick()
+        {
+            UpdateView(ListUtil.NavigateType.Next);
+        }
+
+        //购买按钮点击事件
+        private void OnBtnBuyClick(EventContext context)
+        {
+            GObject sender = context.sender as GObject;
+            //GObject obj = sender.parent;
+            ShopCfg cfg = sender.data as ShopCfg;
+            bool isSellOut = cfg.maxBuyNum > 0 &&
+                             cfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(cfg.id) <= 0;
+
+            if (isSellOut)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("已售罄");
+                return;
+            }
+
+            if (!ShopDataManager.Instance.GetShopGoodsStateById(cfg.id))
+            {
+                PromptController.Instance.ShowFloatTextPrompt(ShopDataManager.Instance.GetShopGoodsStateTips(cfg.id));
+                return;
+            }
+
+            if (cfg.costType == CostType.FREE)
+            {
+                ShopSProxy.ReqShopBuy(cfg.id, 1).Coroutine();
+                LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.SHANG_CHENG, 2);
+            }
+            else
+            {
+                ViewManager.Show<ItemExchangeView>(cfg.id);
+            }
+        }
+
+        protected override void OnHide()
+        {
+            this.RemoveEventListener();
+            //Dispose();
+            base.Hide();
+        }
+
+        private void OnBtnCancelClick()
+        {
+            this.Hide();
+        }
+        
+        //弹出物品详细描述框
+        private void OnListSelectorItemClick(EventContext context)
+        {
+            GObject sender = context.sender as GObject;
+            GObject obj = sender.parent;
+            ItemCfg itemCfg = obj.data as ItemCfg;
+            GoodsItemTipsController.ShowItemTips(itemCfg.id);
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/RushSaleGiftBoxView.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: fdfae065f15e40aa877cc03bac939e1c
+timeCreated: 1685692613

+ 321 - 0
GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/SpecialOfferGiftBoxView.cs

@@ -0,0 +1,321 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using ET;
+using FairyGUI;
+using UI.EnduringGiftBox;
+using UnityEngine;
+
+
+namespace GFGGame
+{
+    //列表样式的限时礼包--3类型-列表样式:等级条件的数据
+    public class SpecialOfferGiftBoxView : BaseWindow
+    {
+        private UI_SpecialOfferGiftBoxUI _ui;
+
+        private int _pageIndex; //当前页码,需要显示的数据的索引
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+
+            packageName = UI_SpecialOfferGiftBoxUI.PACKAGE_NAME;
+            _ui = UI_SpecialOfferGiftBoxUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.None;
+
+            _ui.m_back.onClick.Add(OnBtnCancelClick);
+            _ui.m_btnUp.onClick.Add(OnBtnPreviousClick);
+            _ui.m_btnNext.onClick.Add(OnBtnNextClick);
+        }
+
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+
+            base.Dispose();
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+            AddEffect();
+            InitPageInex();
+
+            UpViewNone();
+        }
+
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.ACTIVITY_REMOVE, UpViewNone);
+            EventAgent.AddEventListener(ConstMessage.ACTIVITY_ADD, UpViewNone);
+            EventAgent.AddEventListener(ConstMessage.SHOP_BUY, UpViewNone);
+        }
+
+        protected override void RemoveEventListener()
+        {
+            EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_REMOVE, UpViewNone);
+            EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_ADD, UpViewNone);
+            EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, UpViewNone);
+            base.RemoveEventListener();
+        }
+
+        private void AddEffect()
+        {
+        }
+
+        public void UpTime()
+        {
+            //筛选一条数据用来界面渲染
+            var list = LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData3;
+
+            list = list.Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+                this.Hide();
+                return;
+            }
+
+            _ui.m_txtBoxResidueTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime);
+        }
+
+        //实例化索引
+        private void InitPageInex()
+        {
+            _pageIndex = 0;
+        }
+
+        private void UpdateView(ListUtil.NavigateType type)
+        {
+            //筛选一条数据用来界面渲染
+            var list = LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData3;
+
+            list = list.Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+                this.Hide();
+                return;
+            }
+
+            var data = ListUtil.Navigate(list, type, _pageIndex, out int newIndex);
+            _pageIndex = newIndex;
+            
+            _ui.m_btnUp.visible = true;
+            _ui.m_btnNext.visible = true;
+            if (list.Count == 1)
+            {
+                _ui.m_btnUp.visible = false;
+                _ui.m_btnNext.visible = false;
+            }
+            else
+            {
+                //翻页翻到了最后一条数据
+                if (list.Count == _pageIndex + 1)
+                {
+                    _ui.m_btnNext.visible = false;
+                }
+
+                if (_pageIndex == 0)
+                {
+                    _ui.m_btnUp.visible = false;
+                }
+            }
+
+            _ui.m_txtBoxResidueTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), data.EndTime);
+            _ui.m_list.data = data.ShopCfgIds;
+            _ui.m_list.itemRenderer = ListItemRender;
+            _ui.m_list.numItems = data.ShopCfgIds.Count;
+            _ui.m_list.visible = true;
+        }
+
+        private void ListItemRender(int index, GObject obj)
+        {
+            UI_ComSpecialOfferGiftBoxItem uiItem = UI_ComSpecialOfferGiftBoxItem.Proxy(obj);
+            var shopCfgIds = uiItem.target.parent.data as List<int>;
+            var shopCfgId = shopCfgIds[index];
+
+            var shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
+            var shopItemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
+
+            var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
+
+            uiItem.m_txtGetJf.text = string.Empty;
+            string mTxtUrc = string.Empty;
+            string mTxtNewPrice;
+            if (shopCfg.refreshType == RefreshType.DAY)
+            {
+                mTxtUrc = $"今日限购{remainBuyNum}/{shopCfg.maxBuyNum}";
+            }
+            else if (shopCfg.refreshType == RefreshType.WEEK)
+            {
+                mTxtUrc = $"本周限购{remainBuyNum}/{shopCfg.maxBuyNum}";
+            }
+            else if (shopCfg.refreshType == RefreshType.MONTH)
+            {
+                mTxtUrc = $"本月限购{remainBuyNum}/{shopCfg.maxBuyNum}";
+            }
+
+            if (remainBuyNum == 0)
+            {
+                //已售完
+                uiItem.m_btnBuy.m_bagGrey.visible = true;
+                uiItem.m_btnBuy.m_bagYellow.visible = false;
+            }
+            else
+            {
+                //未售完
+                uiItem.m_btnBuy.m_bagGrey.visible = false;
+                uiItem.m_btnBuy.m_bagYellow.visible = true;
+            }
+
+            if (shopCfg.costType == CostType.ITEM)
+            {
+                //货币
+                ItemCfg costCfg = ItemCfgArray.Instance.GetCfg(shopCfg.costId);
+                mTxtNewPrice = shopCfg.price.ToString();
+                uiItem.m_btnBuy.m_loaIcon.visible = true;
+                uiItem.m_btnBuy.m_loaIcon.url = ResPathUtil.GetIconPath(costCfg);
+            }
+            else if (shopCfg.costType == CostType.RMB)
+            {
+                //人民币 
+                mTxtNewPrice = $"{shopCfg.price}元";
+                uiItem.m_btnBuy.m_txtNewPrice.align = AlignType.Left;
+                uiItem.m_btnBuy.m_txtNewPrice.x = 90;
+                uiItem.m_txtGetJf.text = $"可获得{shopCfg.price * 10}充值经验";
+            }
+            else
+            {
+                //免费
+                mTxtNewPrice = $"免费";
+                uiItem.m_btnBuy.m_txtOldPrice.text = "";
+                uiItem.m_btnBuy.m_txtNewPrice.align = AlignType.Left;
+                uiItem.m_btnBuy.m_txtNewPrice.x = 90;
+            }
+
+            uiItem.target.data = shopCfg;
+            uiItem.m_btnBuy.m_txtNewPrice.text = mTxtNewPrice;
+            uiItem.m_txtUrc.text = mTxtUrc;
+            uiItem.m_btnBuy.target.onClick.Add(OnBtnBuyClick);
+
+            //子列表
+            uiItem.m_list.itemRenderer = ChildListItemRender;
+            uiItem.m_list.numItems = shopItemCfg.itemsArr.Length;
+            uiItem.m_list.visible = true;
+        }
+
+        private void ChildListItemRender(int index, GObject obj)
+        {
+            UI_ComRewardIconItem uiItemChild = UI_ComRewardIconItem.Proxy(obj);
+            var shopCfg = uiItemChild.target.parent.parent.data as ShopCfg;
+            var itemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
+
+            int[][] result;
+            // if (shopCfg.refreshType == RefreshType.DAY)
+            // {
+            result = itemCfg.itemsArr;
+            uiItemChild.m_bagYellow.visible = false;
+            uiItemChild.m_bagBlue.visible = true;
+            uiItemChild.m_bagYellowEx.visible = false;
+            uiItemChild.m_bagBlueEx.visible = true;
+            // }
+            // else
+            // {
+            //周刷
+            // result = itemCfg.param1Arr;
+            // uiItemChild.m_bagYellow.visible = true;
+            // uiItemChild.m_bagBlue.visible = false;
+            // uiItemChild.m_bagYellowEx.visible = true;
+            // uiItemChild.m_bagBlueEx.visible = false;
+            // }
+
+            var itemArr = result[index];
+            var itemCfgChild = ItemCfgArray.Instance.GetCfg(itemArr[0]);
+            uiItemChild.m_loaIcon.onClick.Add(OnListSelectorItemClick);
+            uiItemChild.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfgChild);
+            uiItemChild.m_num.text = itemArr[1].ToString();
+            uiItemChild.target.data = itemCfgChild;
+            UI_ComRewardIconItem.ProxyEnd();
+        }
+
+        //弹出物品详细描述框
+        private void OnListSelectorItemClick(EventContext context)
+        {
+            GObject sender = context.sender as GObject;
+            GObject obj = sender.parent;
+            ItemCfg itemCfg = obj.data as ItemCfg;
+            GoodsItemTipsController.ShowItemTips(itemCfg.id);
+        }
+
+        private void UpViewNone()
+        {
+            LimitedTimeGiftBoxDataManager.Instance.UpLtgGbItemData3();
+            UpdateView(ListUtil.NavigateType.None);
+        }
+
+        //上一条
+        private void OnBtnPreviousClick()
+        {
+            UpdateView(ListUtil.NavigateType.Previous);
+        }
+
+        //下一条
+        private void OnBtnNextClick()
+        {
+            UpdateView(ListUtil.NavigateType.Next);
+        }
+
+        //购买按钮点击事件
+        private void OnBtnBuyClick(EventContext context)
+        {
+            GObject sender = context.sender as GObject;
+            ShopCfg cfg = sender.parent.data as ShopCfg;
+            bool isSellOut = cfg.maxBuyNum > 0 &&
+                             cfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(cfg.id) <= 0;
+
+            if (isSellOut)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("已售罄");
+                return;
+            }
+
+            if (!ShopDataManager.Instance.GetShopGoodsStateById(cfg.id))
+            {
+                PromptController.Instance.ShowFloatTextPrompt(ShopDataManager.Instance.GetShopGoodsStateTips(cfg.id));
+                return;
+            }
+
+            if (cfg.costType == CostType.FREE)
+            {
+                ShopSProxy.ReqShopBuy(cfg.id, 1).Coroutine();
+                LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.SHANG_CHENG, 2);
+            }
+            else
+            {
+                ViewManager.Show<ItemExchangeView>(cfg.id);
+            }
+        }
+
+        protected override void OnHide()
+        {
+            this.RemoveEventListener();
+            Dispose();
+            base.Hide();
+        }
+
+        private void OnBtnCancelClick()
+        {
+            this.Hide();
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Views/EnduringGiftBox/SpecialOfferGiftBoxView.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: e5ca9539f25f470d8745388ebe5503f3
+timeCreated: 1685692623

+ 44 - 2
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxActivityView.cs

@@ -3,6 +3,7 @@ using UI.LuckyBox;
 using UI.CommonGame;
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using UnityEngine;
 using ET;
 
@@ -69,8 +70,8 @@ namespace GFGGame
             _valueBarController.OnShown();
             _valueBarController.UpdateList(new List<int>() { _luckyBoxCfg.costID });
             _luckyBoxCtrl.OnShown(_luckyBoxCfg.id);
-            UpdateView();
             Timers.inst.Add(1, 0, UpdateTime);
+            UpdateView();
         }
         private void UpdateTime(object param = null)
         {
@@ -85,8 +86,18 @@ namespace GFGGame
             }
             TimeUtil.FormattingTime(curTime, endTime, out int num, out string str);
             _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
-        }
 
+            //=====限时礼包倒计时
+            UpGiftBox();
+            if (ViewManager.isViewOpen(nameof(RushSaleGiftBoxView)))
+            {
+                var rushSaleGiftBoxView =
+                    ViewManager.GetUIView(nameof(RushSaleGiftBoxView)) as RushSaleGiftBoxView;
+                rushSaleGiftBoxView?.UpTime();
+            }
+            //=====限时礼包倒计时END
+        }
+        
         private void UpdateView()
         {
             _ui.m_txtCount.SetVar("value", ActivityDataManager.Instance.lastDrawCount.ToString()).FlushVars();
@@ -129,6 +140,23 @@ namespace GFGGame
 
             UI_ComBox_4.ProxyEnd();
         }
+        
+        private void UpGiftBox()
+        {
+            var activityInfoByTypeList =
+                ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
+
+            var list = activityInfoByTypeList
+                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                _ui.m_txtGiftBagTime.text = "已结束";
+            }
+            else
+            {
+                _ui.m_txtGiftBagTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].endTime);
+            }
+        }
 
         private void OnClickBtnPreview(EventContext context)
         {
@@ -185,9 +213,23 @@ namespace GFGGame
         {
             ViewManager.Show<StoreView>(new object[] { ConstStoreTabId.STORE_GIFT_BAG, ConstStoreSubId.STORE_GIFT_BAG_ACTIVITY });
         }
+        
+        //限时礼包按钮点击执行方法
         private void OnClikcBtnGiftBag()
         {
+            var activityInfoByTypeList =
+                ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
 
+            var list = activityInfoByTypeList
+                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+            }
+            else
+            {
+                ViewManager.Show<RushSaleGiftBoxView>(new object[] { ActivityType.XSLB3, this.viewData });
+            }
         }
 
         protected override void OnHide()

+ 10 - 10
GameClient/Assets/Game/HotUpdate/Views/Mail/MailView.cs

@@ -13,13 +13,13 @@ namespace GFGGame
         private UI_MailUI _ui;
         private MailDataManager mailDataMgr;
         private const int _maxMailCount = 300;
-        private const int _retainDay = 30;//邮件保存时间
+        private const int _retainDay = 30;//閭�欢淇濆瓨鏃堕棿
                                           // private const int _showCount = 5;//??????????
 
-        private int _firstPage = 0;//当前页面
-        private int _endPage = 0;//当前页面
+        private int _firstPage = 0;//褰撳墠椤甸潰
+        private int _endPage = 0;//褰撳墠椤甸潰
 
-        public bool _canShowContent = false;//获取内容数据返回前不可查看
+        public bool _canShowContent = false;//鑾峰彇鍐呭�鏁版嵁杩斿洖鍓嶄笉鍙�煡鐪�
         public List<MailInfo> mailInfos;//= new List<MailInfo>();
 
         public override void Dispose()
@@ -81,8 +81,8 @@ namespace GFGGame
         {
             _ui.m_list.numItems = mailDataMgr.TotolCount;
             _ui.m_txtTips.visible = mailDataMgr.TotolCount == 0 ? true : false;
-            _ui.m_txtCount.text = string.Format("当前邮件:{0}/{1}", StringUtil.GetColorText(mailDataMgr.TotolCount.ToString(), mailDataMgr.TotolCount >= _maxMailCount ? "#B19977" : "#E27D78"), _maxMailCount);
-            _ui.m_txtMaxCount.text = string.Format("最高可储存{0}封邮箱,请及时查看", _maxMailCount);
+            _ui.m_txtCount.text = string.Format("褰撳墠閭�欢锛歿0}/{1}", StringUtil.GetColorText(mailDataMgr.TotolCount.ToString(), mailDataMgr.TotolCount >= _maxMailCount ? "#B19977" : "#E27D78"), _maxMailCount);
+            _ui.m_txtMaxCount.text = string.Format("鏈€楂樺彲鍌ㄥ瓨{0}灏侀偖绠憋紝璇峰強鏃舵煡鐪�", _maxMailCount);
             RefreshMailInfo(true);
         }
 
@@ -97,7 +97,7 @@ namespace GFGGame
             // item.m_btnLook.data = mailId;
             if (mailId < 0)
             {
-                item.m_txtTitle.text = "请稍后...";
+                item.m_txtTitle.text = "璇风◢鍚�...";
                 item.m_txtTime.text = "";
                 return;
             }
@@ -109,7 +109,7 @@ namespace GFGGame
             item.m_txtTitle.text = data.title;
             long endTime = (data.timeSec + _retainDay * TimeUtil.SECOND_PER_DAY * 1000);
             string str = TimeUtil.FormattingTime(TimeHelper.ServerNow(), endTime);
-            item.m_txtTime.text = string.Format("剩余时间:{0}", str);
+            item.m_txtTime.text = string.Format("鍓╀綑鏃堕棿锛歿0}", str);
             if (item.m_btnLook.data == null)
             {
                 item.m_btnLook.onClick.Add(OnClickBtnLook);
@@ -182,10 +182,10 @@ namespace GFGGame
         {
             if (mailDataMgr.TotolCount == 0)
             {
-                PromptController.Instance.ShowFloatTextPrompt("暂无邮件可删除");
+                PromptController.Instance.ShowFloatTextPrompt("鏆傛棤閭�欢鍙�垹闄�");
                 return;
             }
-            AlertUI.Show("是否删除所有已读文件?").SetLeftButton(true).SetRightButton(true, "确认", (object data) =>
+            AlertUI.Show("鏄�惁鍒犻櫎鎵€鏈夊凡璇绘枃浠讹紵").SetLeftButton(true).SetRightButton(true, "纭��", (object data) =>
             {
                 SendDeleteAll();
             });

+ 91 - 1
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -4,6 +4,7 @@ using UnityEngine;
 using System.Collections.Generic;
 using ET;
 using System;
+using System.Linq;
 using UI.CommonGame;
 
 namespace GFGGame
@@ -153,6 +154,8 @@ namespace GFGGame
             // _btnStudio.onClick.Add(OnClickBtnStudio);
             // _btnField.onClick.Add(OnClickBtnField);
             _btnBag.onClick.Add(OnClickBtnBag);
+            _ui.m_btnGiftBag1.onClick.Add(OnClickBtnGiftBag1);
+            _ui.m_btnGiftBag2.onClick.Add(OnClickBtnGiftBag2);
 
             _ui.m_loaRight.target.onClick.Add(MoveLeft);
             _ui.m_loaLeft.target.onClick.Add(MoveRight);
@@ -186,7 +189,7 @@ namespace GFGGame
             MainDataManager.Instance.CanSwipe = false;
             GRoot.inst.touchable = false;
             _ui.m_loaGuidestudio.visible = true;
-
+            
             _ui.m_headBar.m_txtName.text = RoleDataManager.roleName;
             if (_sceneObject == null)
             {
@@ -212,6 +215,7 @@ namespace GFGGame
                 GameGlobal.lastLoginTime = GameGlobal.myNumericComponent.GetAsInt(NumericType.OnlineTimeSecs);
             }
             SetPos();
+
             Timers.inst.AddUpdate(CheckGuide);
             Timers.inst.AddUpdate(Update);
         }
@@ -634,6 +638,76 @@ namespace GFGGame
             ViewManager.Show(ViewName.ROLE_INFO_VIEW);
         }
 
+        //列表
+        private void OnClickBtnGiftBag1()
+        {
+            var activityInfoByTypeList =
+              ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);
+
+          var list = activityInfoByTypeList
+              .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+          if (list.Count == 0)
+          {
+              PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+          }
+          else
+          {
+              ViewManager.Show<SpecialOfferGiftBoxView>();
+          }
+        }
+        
+        //圆形
+        private void OnClickBtnGiftBag2()
+        {
+            var activityInfoByTypeList =
+                ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB2);
+
+            var list = activityInfoByTypeList
+                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+            }
+            else
+            {
+                ViewManager.Show<RushSaleGiftBoxView>(new object[] { ActivityType.XSLB2, this.viewData });
+            }
+        }
+        
+        private void UpGiftBox1()
+        {
+            var activityInfoByTypeList =
+                ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);
+
+            var list = activityInfoByTypeList
+                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                _ui.m_txtGiftBagTime1.text = "已结束";
+            }
+            else
+            {
+                _ui.m_txtGiftBagTime1.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].endTime);
+            }
+        }
+        
+        private void UpGiftBox2()
+        {
+            var activityInfoByTypeList =
+                ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB2);
+
+            var list = activityInfoByTypeList
+                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+            if (list.Count == 0)
+            {
+                _ui.m_txtGiftBagTime2.text = "已结束";
+            }
+            else
+            {
+                _ui.m_txtGiftBagTime2.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].endTime);
+            }
+        }
+
         private void Update(object param)
         {
             ShowExitAlert();
@@ -667,6 +741,22 @@ namespace GFGGame
             {
                 _ui.m_btnActivityDay7.visible = false;
             }
+
+            //特惠礼包/限时礼包窗口内的倒计时
+            UpGiftBox1();
+            UpGiftBox2();
+            if (ViewManager.isViewOpen(nameof(SpecialOfferGiftBoxView)))
+            {
+                var specialOfferGiftBoxView =
+                    ViewManager.GetUIView(nameof(SpecialOfferGiftBoxView)) as SpecialOfferGiftBoxView;
+                specialOfferGiftBoxView?.UpTime();
+            }
+            if (ViewManager.isViewOpen(nameof(RushSaleGiftBoxView)))
+            {
+                var rushSaleGiftBoxView =
+                    ViewManager.GetUIView(nameof(RushSaleGiftBoxView)) as RushSaleGiftBoxView;
+                rushSaleGiftBoxView?.UpTime();
+            }
         }
 
         private void ShowExitAlert()

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/Task/BattlePassTaskView.cs

@@ -71,6 +71,7 @@ namespace GFGGame
             base.AddEventListener();
             //监听通行证等级变化
             EventAgent.AddEventListener(ConstMessage.BATTLEPASS_LEVEL_CHANGE, SetBattlePassLevel);
+            EventAgent.AddEventListener(ConstMessage.NOTICE_PASSPORT_OPEN, SetOpenBattlePassBtnStatus);
         }
 
         protected override void RemoveEventListener()

+ 5 - 1
GameClient/Assets/Game/HotUpdate/Views/Task/BuyBattlePassLevelView.cs

@@ -94,7 +94,11 @@ namespace GFGGame
                 PromptController.Instance.ShowFloatTextPrompt("货币不够!");
                 return;
             }
-            await BattlePassTaskSProxy.BuyBattlePassLevel(addLevel);
+            var isBuy = await BattlePassTaskSProxy.BuyBattlePassLevel(addLevel);
+            if (isBuy)
+            {
+                Hide();
+            }
         }
     }
 }

+ 19 - 4
GameClient/Assets/Game/HotUpdate/Views/Task/OpenBattlePassView.cs

@@ -1,7 +1,7 @@
 using System.Collections.Generic;
 using FairyGUI;
-using UI.CommonGame;
 using UI.Task;
+using static GFGGame.ShopSProxy;
 
 namespace GFGGame
 {
@@ -35,7 +35,7 @@ namespace GFGGame
 
         private void OnBtnOpenClick(EventContext context)
         {
-            //TODO:打开购买界面
+            ReqShopBuy(990003).Coroutine();
         }
 
 
@@ -44,15 +44,30 @@ namespace GFGGame
             base.OnShown();
             SetPrizeData();
         }
+
+        protected override void AddEventListener()
+        {
+            EventAgent.AddEventListener(ConstMessage.NOTICE_PASSPORT_OPEN, OnNoticePassportOpen);
+        }
         
-        
+        protected override void RemoveEventListener()
+        {
+            EventAgent.RemoveEventListener(ConstMessage.NOTICE_PASSPORT_OPEN, OnNoticePassportOpen);
+        }
+
+        private void OnNoticePassportOpen()
+        {
+            Hide();
+        }
+
 
         private static void SpecialRewardRender(int index, GObject obj)
         {
             var itemInfos = (List<KeyValuePair<int, int>>)obj.parent.data;
             var itemInfo = itemInfos[index];
-            ItemUtil.CreateItemView(new[]{itemInfo.Key,itemInfo.Value}, obj as GComponent);
+            ItemUtil.CreateItemView(new[] { itemInfo.Key, itemInfo.Value }, obj as GComponent);
         }
+
         private void SetPrizeData()
         {
             //获取所有特别奖励数据

二進制
GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0!a.png


二進制
GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0.png


二進制
GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1!a.png


+ 96 - 0
GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1!a.png.meta

@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 372f4c8baf59bd3459aa55ce2a33f988
+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/EnduringGiftBox/EnduringGiftBox_atlas0_1.png


+ 96 - 0
GameClient/Assets/ResIn/UI/EnduringGiftBox/EnduringGiftBox_atlas0_1.png.meta

@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 011b5455082d0144d857ee4d024ef84c
+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: 

Some files were not shown because too many files changed in this diff