Переглянути джерело

Merge remote-tracking branch 'remotes/origin/xiaojie' into GFG

# Conflicts:
#	GameClient/Assets/Game/HotUpdate/Platform/AliPay.meta
#	GameClient/Assets/Game/Launcher/Platform/Pay.meta
#	GameClient/Assets/ThirdParty/AliPay.meta
hexiaojie 8 місяців тому
батько
коміт
addef3884f
100 змінених файлів з 2689 додано та 168 видалено
  1. 4 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs
  2. 3 3
      GameClient/Assets/Game/HotUpdate/Controller/LogServerHelper.cs
  3. 66 29
      GameClient/Assets/Game/HotUpdate/Controller/LoginController.cs
  4. 5 0
      GameClient/Assets/Game/HotUpdate/Data/ActivityDataManager.cs
  5. 12 0
      GameClient/Assets/Game/HotUpdate/Data/LuckyBoxDataManager.cs
  6. 28 0
      GameClient/Assets/Game/HotUpdate/ETCodes/Hotfix/App/Login/LoginHelper.cs
  7. 8 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox.meta
  8. 83 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxBuyTipsUI.cs
  9. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxBuyTipsUI.cs.meta
  10. 77 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxRewardUI.cs
  11. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxRewardUI.cs.meta
  12. 111 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxUI.cs
  13. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxUI.cs.meta
  14. 74 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Button1.cs
  15. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Button1.cs.meta
  16. 74 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Itemitem.cs
  17. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Itemitem.cs.meta
  18. 74 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_RuleTipsUI.cs
  19. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_RuleTipsUI.cs.meta
  20. 80 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_boxItem.cs
  21. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_boxItem.cs.meta
  22. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_rewardItem.cs
  23. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_rewardItem.cs.meta
  24. 92 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Login/UI_RoleInfoRegisterUI.cs
  25. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Login/UI_RoleInfoRegisterUI.cs.meta
  26. 4 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_MainUI.cs
  27. 86 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Store/UI_StorePayPropUI.cs
  28. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Store/UI_StorePayPropUI.cs.meta
  29. 1 1
      GameClient/Assets/Game/HotUpdate/GameConfig.cs
  30. 7 2
      GameClient/Assets/Game/HotUpdate/Platform/AliPay.meta
  31. 2 0
      GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs
  32. 44 10
      GameClient/Assets/Game/HotUpdate/ServerProxy/LuckyBoxSProxy.cs
  33. 50 16
      GameClient/Assets/Game/HotUpdate/ServerProxy/RoleInfoSProxy.cs
  34. 7 1
      GameClient/Assets/Game/HotUpdate/ServerProxy/ShopSProxy.cs
  35. 71 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxBuyTipView.cs
  36. 11 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxBuyTipView.cs.meta
  37. 95 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRewardView.cs
  38. 11 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRewardView.cs.meta
  39. 44 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRuleView.cs
  40. 11 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRuleView.cs.meta
  41. 272 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxView.cs
  42. 11 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxView.cs.meta
  43. 254 102
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  44. 3 0
      GameClient/Assets/Game/HotUpdate/Views/RoleInfoRegister.meta
  45. 139 0
      GameClient/Assets/Game/HotUpdate/Views/RoleInfoRegister/RoleInfoRegisterView.cs
  46. 3 0
      GameClient/Assets/Game/HotUpdate/Views/RoleInfoRegister/RoleInfoRegisterView.cs.meta
  47. 84 0
      GameClient/Assets/Game/HotUpdate/Views/Store/StorePayPropView.cs
  48. 3 0
      GameClient/Assets/Game/HotUpdate/Views/Store/StorePayPropView.cs.meta
  49. 1 1
      GameClient/Assets/Game/Launcher/Log/LogServerHelperHttp.cs
  50. 8 3
      GameClient/Assets/Game/Launcher/Platform/Pay.meta
  51. BIN
      GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_fui.bytes
  52. 8 0
      GameClient/Assets/ResIn/UI/BlindBox.meta
  53. BIN
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0!a.png
  54. 120 0
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0!a.png.meta
  55. BIN
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0.png
  56. 120 0
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0.png.meta
  57. BIN
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1!a.png
  58. 120 0
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1!a.png.meta
  59. BIN
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1.png
  60. 120 0
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1.png.meta
  61. BIN
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_fui.bytes
  62. 7 0
      GameClient/Assets/ResIn/UI/BlindBox/BlindBox_fui.bytes.meta
  63. BIN
      GameClient/Assets/ResIn/UI/Login/Login_fui.bytes
  64. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0!a.png
  65. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0.png
  66. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_1!a.png
  67. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_1.png
  68. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_10!a.png
  69. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_10.png
  70. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_11!a.png
  71. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_11.png
  72. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_2!a.png
  73. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_2.png
  74. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_3!a.png
  75. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_3.png
  76. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_4!a.png
  77. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_4.png
  78. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_5!a.png
  79. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_5.png
  80. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_6!a.png
  81. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_6.png
  82. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_7!a.png
  83. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_7.png
  84. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_8!a.png
  85. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_8.png
  86. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_9!a.png
  87. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas0_9.png
  88. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas10!a.png
  89. BIN
      GameClient/Assets/ResIn/UI/Main/Main_atlas10.png
  90. BIN
      GameClient/Assets/ResIn/UI/Main/Main_fui.bytes
  91. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0!a.png
  92. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0.png
  93. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_1!a.png
  94. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_1.png
  95. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_2!a.png
  96. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_2.png
  97. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_3!a.png
  98. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_3.png
  99. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_4!a.png
  100. BIN
      GameClient/Assets/ResIn/UI/Store/Store_atlas0_4.png

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

@@ -268,5 +268,9 @@ namespace GFGGame
         public const string FieldWork_StateCHANGE = "FieldWork_StateCHANGE";
         //转盘数据改变
         public const string TurnTable_DateCHANGE = "TurnTable_DateCHANGE";
+        //盲盒购买单个
+        public const string BlindBox_BuyOne = "BlindBox_BuyOne";
+        //盲盒购买所有
+        public const string BlindBox_BuyAll = "BlindBox_BuyAll";
     }
 }

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Controller/LogServerHelper.cs

@@ -22,7 +22,7 @@ namespace GFGGame
             logData.EventType = node;
             var logStr = zoneScene.GetComponent<LogSplicingComponent>().LogObjectToStr(logData);
             var body = $"?logStr={logStr}";
-            HttpTool.Instance.Get(GameConfig.logApiReportUrl + body, null, false);
+            //HttpTool.Instance.Get(GameConfig.logApiReportUrl + body, null, false);
         }
 
         /// <summary>
@@ -44,7 +44,7 @@ namespace GFGGame
             var logStr = zoneScene.GetComponent<LogSplicingComponent>().LogObjectToStr(logData);
             //HttpTool.Instance.Post(GameConfig.logApiReportUrl, logStr);
             var body = $"?logStr={logStr}";
-            HttpTool.Instance.Get(GameConfig.logApiReportUrl + body, null, false);
+            //HttpTool.Instance.Get(GameConfig.logApiReportUrl + body, null, false);
         }
 
         /// <summary>
@@ -65,7 +65,7 @@ namespace GFGGame
             logData.PlayerName = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRoleName();
             var logStr = zoneScene.GetComponent<LogSplicingComponent>().LogObjectToStr(logData);
             var body = $"?logStr={logStr}";
-            HttpTool.Instance.Get(GameConfig.logApiReportUrl + body, null, false);
+            //HttpTool.Instance.Get(GameConfig.logApiReportUrl + body, null, false);
         }
     }
 }

+ 66 - 29
GameClient/Assets/Game/HotUpdate/Controller/LoginController.cs

@@ -6,7 +6,10 @@ namespace GFGGame
     public class LoginController
     {
         public static string ageTipsTitle = "适龄提示说明";
-        public static string ageTips = "1)本游戏是一款角色扮演类游戏,适用于年满16周岁及以上的用户,建议未成年人在家长监护下使用游戏产品。\n2)本游戏基于架空的故事背景和幻想世界观,剧情简单且积极向上,没有基于真实历史和现实事件的改编内容游戏玩法以收集不同服装进行搭配展开,有较为简单的竞技和对抗玩法,游戏中有基于文字的陌生人社交系统。\n3)本游戏中有用户实名认证系统,认证为未成年人的用户将接受以下管理:游戏中部分玩法和道具需要付费。未满8周岁的用户不能付费; 8周岁以上未满16周岁的未成年人用户,单次充值金额不得超过50元人民币,每月充值金额累计不得超过200元人民币; 16周岁以上的未成年人用户,单次充值金额不得超过100元人民币,每月充值金额累计不得超过400元人民币。\n4)本游戏以服装收集及搭配为主要玩法,有助于玩家开阔眼界、进一步提升审美能力。游戏中很多服装融入了中华传统元素,可以有助于中华传统文化的传播,体验中国的古典美。";
+
+        public static string ageTips =
+            "1)本游戏是一款角色扮演类游戏,适用于年满16周岁及以上的用户,建议未成年人在家长监护下使用游戏产品。\n2)本游戏基于架空的故事背景和幻想世界观,剧情简单且积极向上,没有基于真实历史和现实事件的改编内容游戏玩法以收集不同服装进行搭配展开,有较为简单的竞技和对抗玩法,游戏中有基于文字的陌生人社交系统。\n3)本游戏中有用户实名认证系统,认证为未成年人的用户将接受以下管理:游戏中部分玩法和道具需要付费。未满8周岁的用户不能付费; 8周岁以上未满16周岁的未成年人用户,单次充值金额不得超过50元人民币,每月充值金额累计不得超过200元人民币; 16周岁以上的未成年人用户,单次充值金额不得超过100元人民币,每月充值金额累计不得超过400元人民币。\n4)本游戏以服装收集及搭配为主要玩法,有助于玩家开阔眼界、进一步提升审美能力。游戏中很多服装融入了中华传统元素,可以有助于中华传统文化的传播,体验中国的古典美。";
+
         public static void ShowLogin()
         {
             ViewManager.Show<LoginView>();
@@ -15,7 +18,8 @@ namespace GFGGame
         public static async ET.ETTask LoginTest(string account, bool cancelDelete = false)
         {
             ViewManager.Show<ModalStatusView>("登录中...");
-            (int errorCode, long deleteTime) = await ET.LoginHelper.LoginTest(GameGlobal.zoneScene, GameConfig.LoginAddress, account, cancelDelete);
+            (int errorCode, long deleteTime) = await ET.LoginHelper.LoginTest(GameGlobal.zoneScene,
+                GameConfig.LoginAddress, account, cancelDelete);
 
             if (errorCode == ET.ErrorCode.ERR_Success)
             {
@@ -34,6 +38,7 @@ namespace GFGGame
                     PlayerPrefs.SetString(GameConst.ACCOUNT_LAST_LOGIN_KEY, account);
                     PlayerPrefs.SetString(GameConst.PASSWORD_LAST_LOGIN_KEY, "");
                 }
+
                 GameController.CheckSpecialAccount("sygfg");
                 LocalCache.SetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, GameGlobal.isVisitor);
                 PlayerPrefs.Save();
@@ -47,10 +52,12 @@ namespace GFGGame
         }
 
 
-        public static async ET.ETTask Login(string account, string password, bool isMD5 = false, bool cancelDelete = false)
+        public static async ET.ETTask Login(string account, string password, bool isMD5 = false,
+            bool cancelDelete = false)
         {
             ViewManager.Show<ModalStatusView>("登录中...");
-            (int errorCode, long deleteTime) = await ET.LoginHelper.Login(GameGlobal.zoneScene, GameConfig.LoginAddress, account, password, isMD5, cancelDelete);
+            (int errorCode, long deleteTime) = await ET.LoginHelper.Login(GameGlobal.zoneScene, GameConfig.LoginAddress,
+                account, password, isMD5, cancelDelete);
 
             if (errorCode == ET.ErrorCode.ERR_Success)
             {
@@ -72,9 +79,11 @@ namespace GFGGame
                     {
                         passwordMD5 = MD5Helper.stringMD5(password);
                     }
+
                     PlayerPrefs.SetString(GameConst.ACCOUNT_LAST_LOGIN_KEY, account);
                     PlayerPrefs.SetString(GameConst.PASSWORD_LAST_LOGIN_KEY, passwordMD5);
                 }
+
                 GameController.CheckSpecialAccount(account);
                 LocalCache.SetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, GameGlobal.isVisitor);
                 PlayerPrefs.Save();
@@ -97,25 +106,27 @@ namespace GFGGame
                 ViewManager.Hide<ModalStatusView>();
                 return;
             }
+
             await ReqNoticeInfo();
 
             ViewManager.Hide<ModalStatusView>();
         }
+
         private static void OnLoginFail(int errorCode, string account, long deleteTime, string password, bool isMD5)
         {
             ViewManager.Hide<ModalStatusView>();
-            if(errorCode == ErrorCode.ERR_LoginIsLimit && deleteTime > 0)
+            if (errorCode == ErrorCode.ERR_LoginIsLimit && deleteTime > 0)
             {
                 //删除账号提示
                 AlertSystem.Show("账号注销处理中,若确定登录将取消账号注销,是否确定登录游戏?")
-                    .SetLeftButton(true, "取消", (o)=>
+                    .SetLeftButton(true, "取消", (o) =>
                     {
                         GameController.QuitToLoginView(true);
                         EventAgent.DispatchEvent(ConstMessage.LOGIN_FAIL, account);
                     })
-                    .SetRightButton(true, "确定", (o)=>
+                    .SetRightButton(true, "确定", (o) =>
                     {
-                        if(string.IsNullOrEmpty(password))
+                        if (string.IsNullOrEmpty(password))
                         {
                             LoginTest(account, true).Coroutine();
                         }
@@ -126,10 +137,12 @@ namespace GFGGame
                     });
                 return;
             }
+
             if (ErrorCodeController.Handler(errorCode))
             {
                 GameController.QuitToLoginView(true);
             }
+
             EventAgent.DispatchEvent(ConstMessage.LOGIN_FAIL, account);
         }
 
@@ -142,24 +155,32 @@ namespace GFGGame
                 // Debug.Log("noticeTime:" + noticeInfo.time + "  currentTime:" + (TimeInfo.Instance.ServerNow() / 1000));
 
                 long noticeTime = TimeUtil.GetDayTimeBySec(noticeInfo.time, GlobalCfgArray.globalCfg.refreshTime);
-                long currentTime = TimeUtil.GetDayTimeBySec(TimeInfo.Instance.ServerNow(), GlobalCfgArray.globalCfg.refreshTime);
+                long currentTime =
+                    TimeUtil.GetDayTimeBySec(TimeInfo.Instance.ServerNow(), GlobalCfgArray.globalCfg.refreshTime);
                 // Debug.Log("noticeTime:" + noticeTime + "  currentTime:" + currentTime);
                 if ((currentTime - noticeTime) / 1000 / TimeUtil.SECOND_PER_DAY < 3)
                 {
-                    ViewManager.Show<SystemNoticeView>(new object[] { NoticeDataManager.Instance.LastNoticeInfo.title, NoticeDataManager.Instance.LastNoticeInfo.content });
+                    ViewManager.Show<SystemNoticeView>(new object[]
+                    {
+                        NoticeDataManager.Instance.LastNoticeInfo.title,
+                        NoticeDataManager.Instance.LastNoticeInfo.content
+                    });
                 }
             }
             else
             {
                 ErrorCodeController.Handler(result);
             }
+
             return;
         }
 
-        public static async ETTask Register(string account, string password, string name, string identityNum, string code)
+        public static async ETTask Register(string account, string password, string name, string identityNum,
+            string code)
         {
             ViewManager.Show<ModalStatusView>("注册中...");
-            int errorCode = await LoginHelper.Register(GameGlobal.zoneScene, GameConfig.LoginAddress, account, password, name, identityNum, code);
+            int errorCode = await LoginHelper.Register(GameGlobal.zoneScene, GameConfig.LoginAddress, account, password,
+                name, identityNum, code);
 
             if (errorCode == ErrorCode.ERR_Success)
             {
@@ -183,17 +204,16 @@ namespace GFGGame
                 await ETTask.Create();
                 return;
             }
+
             var serverInfosComponent = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>();
             if (serverInfosComponent.ServerInfoList.Count <= 0)
             {
                 AlertSystem.Show("服务器列表为空:\n请检查网络和服务器状态")
-                    .SetRightButton(true, "知道啦", (object data) =>
-                    {
-                        Application.Quit();
-                    });
+                    .SetRightButton(true, "知道啦", (object data) => { Application.Quit(); });
                 await ETTask.Create();
                 return;
             }
+
             if (serverInfosComponent.CurrentServerId <= 0)
             {
                 var serverInfo = serverInfosComponent.ServerInfoList[0];
@@ -203,7 +223,8 @@ namespace GFGGame
 
         public static async ETTask GetRoles()
         {
-            GameGlobal.OpenServerTime = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>().GetCurrentServerInfo().OpenServerTime;
+            GameGlobal.OpenServerTime = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>().GetCurrentServerInfo()
+                .OpenServerTime;
             ViewManager.Show<ModalStatusView>("获取角色信息...");
             int errorCode = await LoginHelper.GetRoles(GameGlobal.zoneScene);
             if (errorCode != ErrorCode.ERR_Success)
@@ -211,6 +232,7 @@ namespace GFGGame
                 ErrorCodeController.Handler(errorCode);
                 await ETTask.Create();
             }
+
             var roleInfosComponent = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>();
             if (roleInfosComponent.RoleInfos != null && roleInfosComponent.RoleInfos.Count > 0)
             {
@@ -233,16 +255,18 @@ namespace GFGGame
             {
                 return name;
             }
+
             ErrorCodeController.Handler(result);
             return "";
         }
 
         public static async ETTask ReqCreateRole(string roleName = null)
         {
-            if(string.IsNullOrEmpty(roleName))
+            if (string.IsNullOrEmpty(roleName))
             {
                 roleName = await ReqRandomRoleName();
             }
+
             ViewManager.Show<ModalStatusView>("创建角色中...");
             int errorCode = await ET.LoginHelper.CreateRole(GameGlobal.zoneScene, roleName);
             if (errorCode != ErrorCode.ERR_Success)
@@ -251,6 +275,7 @@ namespace GFGGame
                 ErrorCodeController.Handler(errorCode);
                 return;
             }
+
             ViewManager.Hide<CreateRoleView>();
             var roleInfosComponent = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>();
             var roleInfo = roleInfosComponent.RoleInfos[0];
@@ -270,12 +295,14 @@ namespace GFGGame
                 ErrorCodeController.Handler(errorCode);
                 return;
             }
+
             errorCode = await LoginHelper.EnterGame(GameGlobal.zoneScene);
             if (errorCode != ErrorCode.ERR_Success)
             {
                 ErrorCodeController.Handler(errorCode);
                 return;
             }
+
             ViewManager.Hide<ModalStatusView>();
             ViewManager.Hide<LoginView>();
             ViewManager.Show<LoadingView>(0.01f);
@@ -297,27 +324,23 @@ namespace GFGGame
             {
                 string errMessage = "与服务器连接失败。";
                 Log.Error($"Reconnect fail, errorCode {errorCode}!");
-                if(errorCode == ErrorCode.ERR_TokenError)
+                if (errorCode == ErrorCode.ERR_TokenError)
                 {
                     errMessage = "登录已过期,请重新登录";
                     AlertSystem.Show(errMessage)
-                            .SetRightButton(true, "好的", (object data) =>
-                            {
-                                GameController.QuitToLoginView(false);
-                            });
+                        .SetRightButton(true, "好的", (object data) => { GameController.QuitToLoginView(false); });
                     return;
                 }
-                else if(errorCode == ErrorCode.ERR_NetWorkError)
+                else if (errorCode == ErrorCode.ERR_NetWorkError)
                 {
                     errMessage = "网络异常,与服务器连接失败。";
                 }
+
                 AlertSystem.Show(errMessage)
-                        .SetRightButton(true, "重新连接", (object data) =>
-                        {
-                            ReqReConnectGate().Coroutine();
-                        });
+                    .SetRightButton(true, "重新连接", (object data) => { ReqReConnectGate().Coroutine(); });
                 return;
             }
+
             await GameGlobal.zoneScene.GetComponent<ObjectWait>().Wait<ET.WaitType.Wait_SceneChangeFinish>();
             EventAgent.DispatchEvent(ConstMessage.NUMERIC_CHANGE, NumericType.All);
             GameController.OnReconnected();
@@ -325,5 +348,19 @@ namespace GFGGame
             ViewManager.Hide<ModalStatusView>();
             GameController.CheckUpdateVersion();
         }
+
+        //玩家账号信息登记
+        public static async ETTask RegisterRoleInfo(string account, string password, string name, string identityNum,
+            string code, string phoneNumber)
+        {
+            int errorCode =
+                await LoginHelper.RegisterRoleInfo(GameGlobal.zoneScene, account, password, name, identityNum, code,
+                    phoneNumber);
+
+            if (errorCode == ErrorCode.ERR_Success)
+            {
+                ViewManager.Hide<RoleInfoRegisterView>();
+            }
+        }
     }
-}
+}

+ 5 - 0
GameClient/Assets/Game/HotUpdate/Data/ActivityDataManager.cs

@@ -440,6 +440,11 @@ namespace GFGGame
             return false;
         }
         /*****************************************************************/
+        /***************************盲盒活动*******************************/
+        public int BlindBoxType = 0;
+        public BlindBoxType typeOne = new BlindBoxType { type = 1, check = false };
+        public BlindBoxType typeAll = new BlindBoxType { type = 6, check = false };
+        /*****************************************************************/
         public string PhoneNum = "";
     }
 }

+ 12 - 0
GameClient/Assets/Game/HotUpdate/Data/LuckyBoxDataManager.cs

@@ -1,6 +1,12 @@
 using System;
 using System.Collections.Generic;
 using ET;
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.Video;
+using YooAsset;
+using GFGGame.Launcher;
+using System.Collections;
 
 namespace GFGGame
 {
@@ -39,6 +45,12 @@ namespace GFGGame
 
 
         public int luckyBoxIndex;
+
+        public GameObject _ui = null;
+        public AssetOperationHandle handle = null;
+        public RawFileOperationHandle videoHandle = null;
+
+        public List<ItemInfoProto> BlindBoxReward = new List<ItemInfoProto>();
         public List<ItemData> RewardList
         {
             get { return _rewardsList; }

+ 28 - 0
GameClient/Assets/Game/HotUpdate/ETCodes/Hotfix/App/Login/LoginHelper.cs

@@ -492,5 +492,33 @@ namespace ET
 
             return (ErrorCode.ERR_Success, response.Name);
         }
+
+        //玩家信息登记
+        public static async ETTask<int> RegisterRoleInfo(Scene zoneScene, string account,
+            string password,
+            string name, string identityNum, string code, string phoneNumber)
+        {
+            var passwordMD5 = MD5Helper.stringMD5(password);
+            M2C_RegisterRoleInfo response = (M2C_RegisterRoleInfo)await MessageHelper.SendToServer(
+                new C2M_RegisterRoleInfo
+                {
+                    PhoneNumber = phoneNumber,
+                    VerificationCode = code,
+                    Account = account,
+                    Password = passwordMD5,
+                    IdCard = identityNum,
+                    CardName = name
+                });
+            if (response.Error != ErrorCode.ERR_Success)
+            {
+                return response.Error;
+            }
+            else
+            {
+                BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.RewardList));
+            }
+
+            return ErrorCode.ERR_Success;
+        }
     }
 }

+ 8 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a69d3b3aff97ca944a1ff23decf89623
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 83 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxBuyTipsUI.cs

@@ -0,0 +1,83 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_BlindBoxBuyTipsUI
+    {
+        public GComponent target;
+        public GTextField m_desc;
+        public GButton m_cancelBtn;
+        public GButton m_sureBtn;
+        public GButton m_checkBtn;
+        public Transition m_t0;
+        public const string URL = "ui://zxtyrwszl4br15";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "BlindBoxBuyTipsUI";
+        private static UI_BlindBoxBuyTipsUI _proxy;
+
+        public static UI_BlindBoxBuyTipsUI Create(GObject gObject = null)
+        {
+            var ui = new UI_BlindBoxBuyTipsUI();
+            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_BlindBoxBuyTipsUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_BlindBoxBuyTipsUI();
+            }
+            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_desc = (GTextField)comp.GetChild("desc");
+            m_cancelBtn = (GButton)comp.GetChild("cancelBtn");
+            m_sureBtn = (GButton)comp.GetChild("sureBtn");
+            m_checkBtn = (GButton)comp.GetChild("checkBtn");
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_desc = null;
+            m_cancelBtn = null;
+            m_sureBtn = null;
+            m_checkBtn = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxBuyTipsUI.cs.meta

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

+ 77 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxRewardUI.cs

@@ -0,0 +1,77 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_BlindBoxRewardUI
+    {
+        public GComponent target;
+        public GList m_specialList;
+        public GList m_normalList;
+        public Transition m_t0;
+        public const string URL = "ui://zxtyrwszcf1aj";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "BlindBoxRewardUI";
+        private static UI_BlindBoxRewardUI _proxy;
+
+        public static UI_BlindBoxRewardUI Create(GObject gObject = null)
+        {
+            var ui = new UI_BlindBoxRewardUI();
+            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_BlindBoxRewardUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_BlindBoxRewardUI();
+            }
+            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_specialList = (GList)comp.GetChild("specialList");
+            m_normalList = (GList)comp.GetChild("normalList");
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_specialList = null;
+            m_normalList = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxRewardUI.cs.meta

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

+ 111 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxUI.cs

@@ -0,0 +1,111 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_BlindBoxUI
+    {
+        public GComponent target;
+        public GGraph m_effect;
+        public GGroup m_bg;
+        public GButton m_ruleBtn;
+        public GTextField m_txtTime;
+        public GTextField m_txtDesc;
+        public GList m_boxList;
+        public GList m_rewardList;
+        public GLoader m_hiddenItem;
+        public GGroup m_reward;
+        public UI_Button1 m_buyBtn;
+        public GButton m_backBtn;
+        public GGroup m_show;
+        public Transition m_t0;
+        public Transition m_t1;
+        public const string URL = "ui://zxtyrwszcf1a0";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "BlindBoxUI";
+        private static UI_BlindBoxUI _proxy;
+
+        public static UI_BlindBoxUI Create(GObject gObject = null)
+        {
+            var ui = new UI_BlindBoxUI();
+            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_BlindBoxUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_BlindBoxUI();
+            }
+            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_effect = (GGraph)comp.GetChild("effect");
+            m_bg = (GGroup)comp.GetChild("bg");
+            m_ruleBtn = (GButton)comp.GetChild("ruleBtn");
+            m_txtTime = (GTextField)comp.GetChild("txtTime");
+            m_txtDesc = (GTextField)comp.GetChild("txtDesc");
+            m_boxList = (GList)comp.GetChild("boxList");
+            m_rewardList = (GList)comp.GetChild("rewardList");
+            m_hiddenItem = (GLoader)comp.GetChild("hiddenItem");
+            m_reward = (GGroup)comp.GetChild("reward");
+            m_buyBtn = (UI_Button1)UI_Button1.Create(comp.GetChild("buyBtn"));
+            m_backBtn = (GButton)comp.GetChild("backBtn");
+            m_show = (GGroup)comp.GetChild("show");
+            m_t0 = comp.GetTransition("t0");
+            m_t1 = comp.GetTransition("t1");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_effect = null;
+            m_bg = null;
+            m_ruleBtn = null;
+            m_txtTime = null;
+            m_txtDesc = null;
+            m_boxList = null;
+            m_rewardList = null;
+            m_hiddenItem = null;
+            m_reward = null;
+            m_buyBtn.Dispose();
+            m_buyBtn = null;
+            m_backBtn = null;
+            m_show = null;
+            m_t0 = null;
+            m_t1 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_BlindBoxUI.cs.meta

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

+ 74 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Button1.cs

@@ -0,0 +1,74 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_Button1
+    {
+        public GButton target;
+        public GLoader m_img;
+        public GTextField m_num;
+        public const string URL = "ui://zxtyrwszcf1ai";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "Button1";
+        private static UI_Button1 _proxy;
+
+        public static UI_Button1 Create(GObject gObject = null)
+        {
+            var ui = new UI_Button1();
+            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_Button1 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Button1();
+            }
+            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_img = (GLoader)comp.GetChild("img");
+            m_num = (GTextField)comp.GetChild("num");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_img = null;
+            m_num = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Button1.cs.meta

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

+ 74 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Itemitem.cs

@@ -0,0 +1,74 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_Itemitem
+    {
+        public GComponent target;
+        public GLoader m_icon;
+        public GTextField m_name;
+        public const string URL = "ui://zxtyrwszl4br11";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "Itemitem";
+        private static UI_Itemitem _proxy;
+
+        public static UI_Itemitem Create(GObject gObject = null)
+        {
+            var ui = new UI_Itemitem();
+            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_Itemitem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Itemitem();
+            }
+            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_icon = (GLoader)comp.GetChild("icon");
+            m_name = (GTextField)comp.GetChild("name");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_icon = null;
+            m_name = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_Itemitem.cs.meta

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

+ 74 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_RuleTipsUI.cs

@@ -0,0 +1,74 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_RuleTipsUI
+    {
+        public GComponent target;
+        public GTextField m_desc;
+        public Transition m_t0;
+        public const string URL = "ui://zxtyrwszl4br13";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "RuleTipsUI";
+        private static UI_RuleTipsUI _proxy;
+
+        public static UI_RuleTipsUI Create(GObject gObject = null)
+        {
+            var ui = new UI_RuleTipsUI();
+            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_RuleTipsUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_RuleTipsUI();
+            }
+            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_desc = (GTextField)comp.GetChild("desc");
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_desc = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_RuleTipsUI.cs.meta

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

+ 80 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_boxItem.cs

@@ -0,0 +1,80 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.BlindBox
+{
+    public partial class UI_boxItem
+    {
+        public GComponent target;
+        public GLoader m_icon;
+        public GGraph m_effect;
+        public GGraph m_effectOpen;
+        public Transition m_t0;
+        public const string URL = "ui://zxtyrwszcf1ae";
+        public const string PACKAGE_NAME = "BlindBox";
+        public const string RES_NAME = "boxItem";
+        private static UI_boxItem _proxy;
+
+        public static UI_boxItem Create(GObject gObject = null)
+        {
+            var ui = new UI_boxItem();
+            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_boxItem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_boxItem();
+            }
+            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_icon = (GLoader)comp.GetChild("icon");
+            m_effect = (GGraph)comp.GetChild("effect");
+            m_effectOpen = (GGraph)comp.GetChild("effectOpen");
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_icon = null;
+            m_effect = null;
+            m_effectOpen = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_boxItem.cs.meta

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

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_rewardItem.cs

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

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/BlindBox/UI_rewardItem.cs.meta

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

+ 92 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Login/UI_RoleInfoRegisterUI.cs

@@ -0,0 +1,92 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.Login
+{
+    public partial class UI_RoleInfoRegisterUI
+    {
+        public GComponent target;
+        public GComponent m_bg;
+        public GButton m_btnSubmit;
+        public GTextInput m_inputPhone;
+        public GTextInput m_inputAccount;
+        public GTextInput m_inputIDNumber;
+        public GTextInput m_inputName;
+        public GTextInput m_inputPassword;
+        public GTextInput m_inputPassword2;
+        public const string URL = "ui://myoktu7pq5ri5u";
+        public const string PACKAGE_NAME = "Login";
+        public const string RES_NAME = "RoleInfoRegisterUI";
+        private static UI_RoleInfoRegisterUI _proxy;
+
+        public static UI_RoleInfoRegisterUI Create(GObject gObject = null)
+        {
+            var ui = new UI_RoleInfoRegisterUI();
+            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_RoleInfoRegisterUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_RoleInfoRegisterUI();
+            }
+            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_bg = (GComponent)comp.GetChild("bg");
+            m_btnSubmit = (GButton)comp.GetChild("btnSubmit");
+            m_inputPhone = (GTextInput)comp.GetChild("inputPhone");
+            m_inputAccount = (GTextInput)comp.GetChild("inputAccount");
+            m_inputIDNumber = (GTextInput)comp.GetChild("inputIDNumber");
+            m_inputName = (GTextInput)comp.GetChild("inputName");
+            m_inputPassword = (GTextInput)comp.GetChild("inputPassword");
+            m_inputPassword2 = (GTextInput)comp.GetChild("inputPassword2");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_bg = null;
+            m_btnSubmit = null;
+            m_inputPhone = null;
+            m_inputAccount = null;
+            m_inputIDNumber = null;
+            m_inputName = null;
+            m_inputPassword = null;
+            m_inputPassword2 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Login/UI_RoleInfoRegisterUI.cs.meta

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

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

@@ -32,6 +32,7 @@ namespace UI.Main
         public UI_BtnModle2 m_btnGetYuanXiao;
         public UI_BtnModle2 m_btnActivityFYJY;
         public UI_BtnModle2 m_btnActivityZQ;
+        public UI_BtnModle2 m_btnActivityXDMH;
         public GTextField m_serverTime;
         public GLoader m_loaGuidestudio;
         public UI_ComAd m_comListAd;
@@ -131,6 +132,7 @@ namespace UI.Main
             m_btnGetYuanXiao = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnGetYuanXiao"));
             m_btnActivityFYJY = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnActivityFYJY"));
             m_btnActivityZQ = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnActivityZQ"));
+            m_btnActivityXDMH = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnActivityXDMH"));
             m_serverTime = (GTextField)comp.GetChild("serverTime");
             m_loaGuidestudio = (GLoader)comp.GetChild("loaGuidestudio");
             m_comListAd = (UI_ComAd)UI_ComAd.Create(comp.GetChild("comListAd"));
@@ -200,6 +202,8 @@ namespace UI.Main
             m_btnActivityFYJY = null;
             m_btnActivityZQ.Dispose();
             m_btnActivityZQ = null;
+            m_btnActivityXDMH.Dispose();
+            m_btnActivityXDMH = null;
             m_serverTime = null;
             m_loaGuidestudio = null;
             m_comListAd.Dispose();

+ 86 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Store/UI_StorePayPropUI.cs

@@ -0,0 +1,86 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.Store
+{
+    public partial class UI_StorePayPropUI
+    {
+        public GComponent target;
+        public GImage m_payClose;
+        public GButton m_payVxBtn;
+        public GButton m_payAliBtn;
+        public GTextField m_txtXzf;
+        public GTextField m_txtTotal;
+        public GTextField m_txtShopName;
+        public const string URL = "ui://p9mtgheoq5ritfi";
+        public const string PACKAGE_NAME = "Store";
+        public const string RES_NAME = "StorePayPropUI";
+        private static UI_StorePayPropUI _proxy;
+
+        public static UI_StorePayPropUI Create(GObject gObject = null)
+        {
+            var ui = new UI_StorePayPropUI();
+            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_StorePayPropUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_StorePayPropUI();
+            }
+            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_payClose = (GImage)comp.GetChild("payClose");
+            m_payVxBtn = (GButton)comp.GetChild("payVxBtn");
+            m_payAliBtn = (GButton)comp.GetChild("payAliBtn");
+            m_txtXzf = (GTextField)comp.GetChild("txtXzf");
+            m_txtTotal = (GTextField)comp.GetChild("txtTotal");
+            m_txtShopName = (GTextField)comp.GetChild("txtShopName");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_payClose = null;
+            m_payVxBtn = null;
+            m_payAliBtn = null;
+            m_txtXzf = null;
+            m_txtTotal = null;
+            m_txtShopName = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Store/UI_StorePayPropUI.cs.meta

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

+ 1 - 1
GameClient/Assets/Game/HotUpdate/GameConfig.cs

@@ -32,7 +32,7 @@ namespace GFGGame
             var result = JsonMapper.ToObject<Result>(json);
             LoginAddress = result.loginApiUrl;
             // LoginAddress = "http://login.gfg.com:10005";
-             //LoginAddress = "1.95.32.13:10003";//测试地址
+            //LoginAddress = "175.178.189.228:10013";//测试地址
             showGM = int.Parse(result.showGM);
             if(!string.IsNullOrEmpty(result.openTime))
             {

+ 7 - 2
GameClient/Assets/Game/HotUpdate/Platform/AliPay.meta

@@ -1,3 +1,8 @@
 fileFormatVersion: 2
-guid: 743800c78085474c95327f162ab84ac4
-timeCreated: 1732531098
+guid: 69fb72229f3626146b2a1f93866ac946
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs

@@ -132,6 +132,8 @@ namespace GFGGame
                     break;
                 case (int)ChannelID.DouYou:
                     QDDouYouManager.Instance.Pay(buyID, count, orderID, price);
+                    //TODO gfg支付跳转
+                    ViewManager.Show<StorePayPropView>(new object[] { buyID, orderID, price });
                     break;
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.Pay(buyID, count, orderID, price);

+ 44 - 10
GameClient/Assets/Game/HotUpdate/ServerProxy/LuckyBoxSProxy.cs

@@ -26,14 +26,14 @@ namespace ET
 
 namespace GFGGame
 {
-
     public class LuckyBoxSProxy
     {
         //抽奖
-        public static async ETTask<bool> ReqGetBonus(int luckyBoxId, int times, bool free = false,int activityId = 0)
+        public static async ETTask<bool> ReqGetBonus(int luckyBoxId, int times, bool free = false, int activityId = 0)
         {
             M2C_DrawLuckyBox response = null;
-            response = (M2C_DrawLuckyBox)await MessageHelper.SendToServer(new C2M_DrawLuckyBox() { LuckyBoxId = luckyBoxId, Times = times, Free = free, ActivityId = activityId });
+            response = (M2C_DrawLuckyBox)await MessageHelper.SendToServer(new C2M_DrawLuckyBox()
+                { LuckyBoxId = luckyBoxId, Times = times, Free = free, ActivityId = activityId });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -41,7 +41,6 @@ namespace GFGGame
                     ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(response.ActivityId);
                     if (activityOpenCfg != null && activityOpenCfg.paramsArr[0] == luckyBoxId)
                     {
-                        
                         var activityCfg = ActivityOpenCfgArray.Instance.GetCfg(response.ActivityId);
                         if (activityCfg.type == ConstLimitTimeActivityType.ActLimitLuckyBox)
                             ActivityDataManager.Instance.allPlayTimes += response.Times;
@@ -49,26 +48,32 @@ namespace GFGGame
                             ActivityDataManager.Instance.allTsyPlayTimes += response.Times;
                         else if (activityCfg.type == ConstLimitTimeActivityType.ActLimitStlyc)
                         {
-                            if (ActivityDataManager.Instance.allLimitStlycTimes < 20 && (ActivityDataManager.Instance.allLimitStlycTimes + response.Times) >= 20)
+                            if (ActivityDataManager.Instance.allLimitStlycTimes < 20 &&
+                                (ActivityDataManager.Instance.allLimitStlycTimes + response.Times) >= 20)
                             {
                                 LuckyBoxDataManager.Instance.OPEN_LUCKY_DISCONT = true;
                             }
+
                             ActivityDataManager.Instance.allLimitStlycTimes += response.Times;
                         }
                     }
+
                     LuckyBoxDataManager.Instance.UpdatePlayTimes(response.LuckyBoxId, response.Times);
                     // LuckyBoxDataManager.Instance.luckyBoxIndex = response.LuckyBoxId;
                     LuckyBoxDataManager.Instance.RewardList = ItemUtil.CreateItemDataList(response.bonusList);
                     return true;
                 }
             }
+
             return false;
         }
+
         //请求轮换抽奖活动信息
         public static async ETTask<int> ReqGetLuckyBoxRotatingInfo()
         {
             S2C_GetLuckyBoxRotatingInfo response = null;
-            response = (S2C_GetLuckyBoxRotatingInfo)await MessageHelper.SendToServer(new C2S_GetLuckyBoxRotatingInfo() { });
+            response = (S2C_GetLuckyBoxRotatingInfo)await MessageHelper.SendToServer(new C2S_GetLuckyBoxRotatingInfo()
+                { });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -77,6 +82,7 @@ namespace GFGGame
                     return response.RotatingId;
                 }
             }
+
             return 0;
         }
 
@@ -85,7 +91,7 @@ namespace GFGGame
         {
             S2C_GetLuckyBoxInfo response = null;
             response = (S2C_GetLuckyBoxInfo)await MessageHelper.SendToServer(new C2S_GetLuckyBoxInfo() { });
-            if(response != null)
+            if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
                 {
@@ -95,11 +101,12 @@ namespace GFGGame
         }
 
         //许愿池许愿记录
-        public static async ETTask<bool> ReqAddWishingPoolInfo(int suitId,int activityId)
+        public static async ETTask<bool> ReqAddWishingPoolInfo(int suitId, int activityId)
         {
             S2C_AddWishingPoolInfo response = null;
 
-            response = (S2C_AddWishingPoolInfo)await MessageHelper.SendToServer(new C2S_AddWishingPoolInfo() { SuitId = suitId , ActivityId  = activityId });
+            response = (S2C_AddWishingPoolInfo)await MessageHelper.SendToServer(new C2S_AddWishingPoolInfo()
+                { SuitId = suitId, ActivityId = activityId });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -109,9 +116,10 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
-        
+
         ////获取许愿池许愿记录
         public static async ETTask<bool> ReqGetWishingPoolInfo()
         {
@@ -126,6 +134,32 @@ namespace GFGGame
                     return true;
                 }
             }
+
+            return false;
+        }
+
+        ////抽奖盲盒
+        public static async ETTask<bool> ReqGetBlindBox(int id, int times)
+        {
+            M2C_BlindBox response = null;
+            int activtyId = ActivityDataManager.Instance.GetCurOpenActiveByType(102);
+            response = (M2C_BlindBox)await MessageHelper.SendToServer(new C2M_BlindBox()
+                { BlindBoxId = id, Times = times, ActivityId = activtyId });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    LuckyBoxDataManager.Instance.BlindBoxReward = response.bonusList;
+                    return true;
+                }
+                
+                //ErrorCodeController.Handler(response.Error);
+            }
+            else
+            {
+                ErrorCodeController.Handler(ErrorCode.ERR_NetWorkError);
+            }
+            
             return false;
         }
     }

+ 50 - 16
GameClient/Assets/Game/HotUpdate/ServerProxy/RoleInfoSProxy.cs

@@ -35,6 +35,7 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
 
@@ -42,7 +43,8 @@ namespace GFGGame
         public static async ETTask<OtherRoleInfoDetailData> ReqOtherRoleDetailInfo(long otherRoleId)
         {
             S2C_GetOtherRoleDetailInfo response = null;
-            response = (S2C_GetOtherRoleDetailInfo)await MessageHelper.SendToServer(new C2S_GetOtherRoleDetailInfo() { OtherRoleId = otherRoleId });
+            response = (S2C_GetOtherRoleDetailInfo)await MessageHelper.SendToServer(new C2S_GetOtherRoleDetailInfo()
+                { OtherRoleId = otherRoleId });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -91,7 +93,7 @@ namespace GFGGame
                     }
 
                     roleInfoDetail.roleInfo.itemList.Clear();
-                    for(int i = 0; i < response.RoleInfo.ItemList.Count; i++)
+                    for (int i = 0; i < response.RoleInfo.ItemList.Count; i++)
                     {
                         roleInfoDetail.roleInfo.itemList.Add(response.RoleInfo.ItemList[i]);
                     }
@@ -99,6 +101,7 @@ namespace GFGGame
                     return roleInfoDetail;
                 }
             }
+
             return null;
         }
 
@@ -107,7 +110,8 @@ namespace GFGGame
         public static async ETTask<string> ReqModifySlogan(string slogan)
         {
             S2C_ModifySignature response = null;
-            response = (S2C_ModifySignature)await MessageHelper.SendToServer(new C2S_ModifySignature() { Signature = slogan });
+            response = (S2C_ModifySignature)await MessageHelper.SendToServer(new C2S_ModifySignature()
+                { Signature = slogan });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -116,6 +120,7 @@ namespace GFGGame
                     return RoleDataManager.slogan;
                 }
             }
+
             return RoleDataManager.slogan;
         }
 
@@ -135,8 +140,10 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
+
         //修改角色头像
         public static async ETTask<bool> ReqModifyRoleHead(int headId)
         {
@@ -149,20 +156,24 @@ namespace GFGGame
                     RoleDataManager.headId = response.HeadItemId;
                     if (LeagueDataManager.Instance.Type == LeagueJoinType.Join)
                     {
-                        LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[RoleDataManager.roleId].RoleInfo.headId = RoleDataManager.headId;
+                        LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[RoleDataManager.roleId].RoleInfo
+                            .headId = RoleDataManager.headId;
                     }
 
                     EventAgent.DispatchEvent(ConstMessage.CHANGE_ROLE_HEAD);
                     return true;
                 }
             }
+
             return false;
         }
+
         //修改角色头像框
         public static async ETTask<bool> ReqModifyRoleHeadBorder(int HeadBorder)
         {
             S2C_AuHeadBorder response = null;
-            response = (S2C_AuHeadBorder)await MessageHelper.SendToServer(new C2S_AuHeadBorder() { HeadBorderItemId = HeadBorder });
+            response = (S2C_AuHeadBorder)await MessageHelper.SendToServer(new C2S_AuHeadBorder()
+                { HeadBorderItemId = HeadBorder });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -170,12 +181,15 @@ namespace GFGGame
                     RoleDataManager.headBorderId = response.HeadBorderItemId;
                     if (LeagueDataManager.Instance.Type == LeagueJoinType.Join)
                     {
-                        LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[RoleDataManager.roleId].RoleInfo.headBorderId = RoleDataManager.headBorderId;
+                        LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[RoleDataManager.roleId].RoleInfo
+                            .headBorderId = RoleDataManager.headBorderId;
                     }
+
                     EventAgent.DispatchEvent(ConstMessage.CHANGE_ROLE_HEAD);
                     return true;
                 }
             }
+
             return false;
         }
 
@@ -183,7 +197,8 @@ namespace GFGGame
         public static async ETTask<bool> ReqModifyShowPhoto(List<long> photoDatas)
         {
             S2C_AddOpenAlbumInfo response = null;
-            response = (S2C_AddOpenAlbumInfo)await MessageHelper.SendToServer(new C2S_AddOpenAlbumInfo() { PictureIds = photoDatas });
+            response = (S2C_AddOpenAlbumInfo)await MessageHelper.SendToServer(new C2S_AddOpenAlbumInfo()
+                { PictureIds = photoDatas });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -191,13 +206,15 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
 
         public static async ETTask<bool> ReqSaveChangeGearSwitch(int isOn)
         {
             S2C_SaveChangeGearSwitch response;
-            response = (S2C_SaveChangeGearSwitch)await MessageHelper.SendToServer(new C2S_SaveChangeGearSwitch() { Switch = isOn });
+            response = (S2C_SaveChangeGearSwitch)await MessageHelper.SendToServer(new C2S_SaveChangeGearSwitch()
+                { Switch = isOn });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -205,6 +222,7 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
 
@@ -219,13 +237,15 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
 
         public static async ETTask<bool> ReqSaveBadgeList(List<int> itemList)
         {
             S2C_UpWearBadges response;
-            response = (S2C_UpWearBadges)await MessageHelper.SendToServer(new C2S_UpWearBadges() { ItemList = itemList });
+            response = (S2C_UpWearBadges)await MessageHelper.SendToServer(
+                new C2S_UpWearBadges() { ItemList = itemList });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -233,6 +253,7 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
 
@@ -240,7 +261,8 @@ namespace GFGGame
         public static async ETTask<bool> ReqNewRoleGetSuit(int id)
         {
             S2C_GetSuitSelectReward response;
-            response = (S2C_GetSuitSelectReward)await MessageHelper.SendToServer(new C2S_GetSuitSelectReward() { SuitId = id });
+            response = (S2C_GetSuitSelectReward)await MessageHelper.SendToServer(new C2S_GetSuitSelectReward()
+                { SuitId = id });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -251,13 +273,15 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
+
         //新手领取套装状态
         public static async ETTask<bool> ReqNewRoleGetSuitStatus()
         {
             S2C_GetSuitSelectStatus response;
-            response = (S2C_GetSuitSelectStatus)await MessageHelper.SendToServer(new C2S_GetSuitSelectStatus() {  });
+            response = (S2C_GetSuitSelectStatus)await MessageHelper.SendToServer(new C2S_GetSuitSelectStatus() { });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
@@ -266,13 +290,15 @@ namespace GFGGame
                     return true;
                 }
             }
+
             return false;
         }
 
         //获取主题id
         public static async ETTask<bool> GetThemeID()
         {
-            S2C_GetDataRecord response = (S2C_GetDataRecord)await MessageHelper.SendToServer(new C2S_GetDataRecord() { });
+            S2C_GetDataRecord response =
+                (S2C_GetDataRecord)await MessageHelper.SendToServer(new C2S_GetDataRecord() { });
             for (int i = 0; i < response.AllKs.Count; i++)
             {
                 if (response.AllKs[i] == MainDataManager.Instance.CardBgKey)
@@ -281,21 +307,29 @@ namespace GFGGame
                     return true;
                 }
             }
+
             MainDataManager.Instance.CardBgID = 0;
             return true;
         }
+
         //绑定获取验证码
         public static async ETTask<bool> GetMobileVerification(string phoneNumber)
         {
-            S2C_GetMobileVerificationCodeUnit response = (S2C_GetMobileVerificationCodeUnit)await MessageHelper.SendToServer(new C2S_GetMobileVerificationCodeUnit() { PhoneNumber = phoneNumber});
+            S2C_GetMobileVerificationCodeUnit response =
+                (S2C_GetMobileVerificationCodeUnit)await MessageHelper.SendToServer(
+                    new C2S_GetMobileVerificationCodeUnit() { PhoneNumber = phoneNumber });
+
             return true;
         }
+
         //绑定手机
-        public static async ETTask<bool> BindMobilePhoneNumber(string phoneNumber,string code)
+        public static async ETTask<bool> BindMobilePhoneNumber(string phoneNumber, string code)
         {
-            S2C_BindMobilePhoneNumber response = (S2C_BindMobilePhoneNumber)await MessageHelper.SendToServer(new C2S_BindMobilePhoneNumber() { PhoneNumber = phoneNumber ,VerCode = code});
+            S2C_BindMobilePhoneNumber response =
+                (S2C_BindMobilePhoneNumber)await MessageHelper.SendToServer(new C2S_BindMobilePhoneNumber()
+                    { PhoneNumber = phoneNumber, VerCode = code });
             BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.RewardList));
             return true;
         }
     }
-}
+}

+ 7 - 1
GameClient/Assets/Game/HotUpdate/ServerProxy/ShopSProxy.cs

@@ -64,7 +64,6 @@ namespace GFGGame
                 if (response.Error == ErrorCode.ERR_Success)
                 {
                     ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(response.BuyId);
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
                     if (shopCfg.CostTypeReal == CostType.RMB)
                     {
                         QDManager.Pay(response.BuyId, response.Times, response.OrderId, response.Price);
@@ -223,5 +222,12 @@ namespace GFGGame
             return false;
         }
 
+        //创建支付宝订单
+        public static async ETTask<S2C_CreateAliOrder> ReqCreateAliOrder(long tempOrderId)
+        {
+            var response = (S2C_CreateAliOrder)await MessageHelper.SendToServer(new C2S_CreateAliOrder()
+                { OrderTempId = tempOrderId });
+            return response;
+        }
     }
 }

+ 71 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxBuyTipView.cs

@@ -0,0 +1,71 @@
+using FairyGUI;
+using UI.BlindBox;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+
+namespace GFGGame
+{
+    public class BlindBoxBuyTIpView : BaseWindow
+    {
+        private UI_BlindBoxBuyTipsUI _ui;
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_BlindBoxBuyTipsUI.PACKAGE_NAME;
+            _ui = UI_BlindBoxBuyTipsUI.Create();
+            this.viewCom = _ui.target;
+            modal = true;
+            this.viewCom.Center();
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_cancelBtn.onClick.Add(OnClickCancelBtn);
+            _ui.m_sureBtn.onClick.Add(OnClickSureBtn);
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            string desc = (string)this.viewData;
+            _ui.m_desc.text = desc;
+            _ui.m_checkBtn.selected = false;
+        }
+        private void OnClickCancelBtn()
+        {
+            this.Hide();
+        }
+        private void OnClickSureBtn()
+        {
+            this.Hide();
+            if (ActivityDataManager.Instance.BlindBoxType == ActivityDataManager.Instance.typeOne.type)
+            {
+                EventAgent.DispatchEvent(ConstMessage.BlindBox_BuyOne);
+            }
+            else if (ActivityDataManager.Instance.BlindBoxType == ActivityDataManager.Instance.typeAll.type)
+            {
+                EventAgent.DispatchEvent(ConstMessage.BlindBox_BuyAll);
+            }
+            
+        }
+        protected override void OnHide()
+        {
+            if (ActivityDataManager.Instance.BlindBoxType == ActivityDataManager.Instance.typeOne.type)
+            {
+                ActivityDataManager.Instance.typeOne.check = _ui.m_checkBtn.selected;
+            }
+            else if (ActivityDataManager.Instance.BlindBoxType == ActivityDataManager.Instance.typeAll.type)
+            {
+                ActivityDataManager.Instance.typeAll.check = _ui.m_checkBtn.selected;
+            }
+            base.OnHide();
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxBuyTipView.cs.meta

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

+ 95 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRewardView.cs

@@ -0,0 +1,95 @@
+using FairyGUI;
+using UI.BlindBox;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+
+namespace GFGGame
+{
+    public class BlindBoxRewardView : BaseWindow
+    {
+        private UI_BlindBoxRewardUI _ui;
+        private List<DropOutCfg> _rewardNormal = null;
+        private List<DropOutCfg> _rewardSpecial = null;
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_BlindBoxRewardUI.PACKAGE_NAME;
+            _ui = UI_BlindBoxRewardUI.Create();
+            this.viewCom = _ui.target;
+            modal = true;
+            this.viewCom.Center();
+
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+            _ui.m_normalList.itemRenderer = NormalRewardList;
+            _ui.m_specialList.itemRenderer = SpecialRewardList;
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            BlindBoxCfg blindBoxCfg = BlindBoxCfgArray.Instance.GetCfg(1);
+            int id1 = blindBoxCfg.OrdinaryDropDisplay; //(int)(this.viewData as object[])[0];
+            int id2 = blindBoxCfg.HideDropDisplay; //(int)(this.viewData as object[])[1];
+            _rewardNormal = DropOutCfgArray.Instance.GetCfgsByid(id1);
+            _ui.m_normalList.numItems = _rewardNormal.Count;
+            _rewardSpecial = DropOutCfgArray.Instance.GetCfgsByid(id2);
+            _ui.m_specialList.numItems = _rewardSpecial.Count;
+        }
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+        }
+
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+        }
+        private void NormalRewardList(int index, GObject obj)
+        {
+            UI_Itemitem item = UI_Itemitem.Proxy(obj);
+            int id = _rewardNormal[index].item;
+            ItemCfg itemcfg = ItemCfgArray.Instance.GetCfg(id);
+            item.m_icon.url = ResPathUtil.GetIconPath(itemcfg);
+            item.m_name.text = itemcfg.name;
+            if (item.target.data == null)
+            {
+                item.target.onClick.Add(OnClickItem);
+            }
+            item.target.data = id;
+            UI_Itemitem.ProxyEnd();
+        }
+        private void SpecialRewardList(int index, GObject obj)
+        {
+            UI_Itemitem item = UI_Itemitem.Proxy(obj);
+            int id = _rewardSpecial[index].item;
+            ItemCfg itemcfg = ItemCfgArray.Instance.GetCfg(id);
+            item.m_icon.url = ResPathUtil.GetIconPath(itemcfg);
+            item.m_name.text = itemcfg.name;
+            if (item.target.data == null)
+            {
+                item.target.onClick.Add(OnClickItem);
+            }
+            item.target.data = id;
+            UI_Itemitem.ProxyEnd();      
+        }
+        private void OnClickItem(EventContext context)
+        {
+            GObject obj = context.sender as GObject;
+            int id = (int)obj.data;
+            GoodsItemTipsController.ShowItemTips(id);
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRewardView.cs.meta

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

+ 44 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRuleView.cs

@@ -0,0 +1,44 @@
+using FairyGUI;
+using UI.BlindBox;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+
+namespace GFGGame
+{
+    public class BlindBoxRuleView : BaseWindow
+    {
+        private UI_RuleTipsUI _ui;
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_RuleTipsUI.PACKAGE_NAME;
+            _ui = UI_RuleTipsUI.Create();
+            this.viewCom = _ui.target;
+            modal = true;
+            this.viewCom.Center();
+
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            int id = (int)this.viewData;
+            string content = TextDescCfgArray.Instance.GetCfg(id).text;
+            _ui.m_desc.text = content;
+        }
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxRuleView.cs.meta

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

+ 272 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxView.cs

@@ -0,0 +1,272 @@
+using FairyGUI;
+using UI.BlindBox;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+using System.Threading.Tasks;
+using System.Linq;
+using System.Text.RegularExpressions;
+
+namespace GFGGame
+{
+    public struct BlindBoxType
+    {
+        public int type;
+        public bool check;
+    }
+
+    public class BlindBoxView : BaseWindow
+    {
+        private UI_BlindBoxUI _ui;
+        private EffectUI _effectUI1;
+        private Dictionary<string, EffectUI> _effectUIDic = new Dictionary<string, EffectUI>();
+        private ItemCfg itemcfg;
+        private int listIndex = 0;
+        BlindBoxCfg blindBoxCfg = BlindBoxCfgArray.Instance.GetCfg(1);
+        public override void Dispose()
+        {
+            EffectUIPool.Recycle(_effectUI1);
+            _effectUI1 = null;
+            foreach (var v in _effectUIDic)
+            {
+                EffectUIPool.Recycle(v.Value);
+            }
+
+            _effectUIDic.Clear();
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_BlindBoxUI.PACKAGE_NAME;
+            _ui = UI_BlindBoxUI.Create();
+            this.viewCom = _ui.target;
+            modal = true;
+            this.viewCom.Center();
+            //viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_backBtn.onClick.Add(this.Hide);
+            _ui.m_buyBtn.target.onClick.Add(OnClickBuyAll);
+            _ui.m_hiddenItem.onClick.Add(OnClickRewardBtn);
+            _ui.m_rewardList.onClick.Add(OnClickRewardBtn);
+            _ui.m_ruleBtn.onClick.Add(OnClickRuleBtn);
+            _ui.m_rewardList.itemRenderer = RenderRewardList;
+            
+            List<DropOutCfg> dropOutCfgList = DropOutCfgArray.Instance.GetCfgsByid(blindBoxCfg.OrdinaryDropDisplay);
+            List<DropOutCfg> hidDropOutCfgList = DropOutCfgArray.Instance.GetCfgsByid(blindBoxCfg.HideDropDisplay);
+            ItemCfg hidItemCfg = ItemCfgArray.Instance.GetCfg(hidDropOutCfgList[0].item);
+            _ui.m_rewardList.numItems = dropOutCfgList.Count;
+            _ui.m_hiddenItem.url =  ResPathUtil.GetIconPath(hidItemCfg);
+            _ui.m_buyBtn.m_num.text = blindBoxCfg.CostIDNumArr[1].ToString();
+
+            _ui.m_boxList.itemRenderer = RenderBoxList;
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_effect, "ui_Activity", "WSJ_UI_DX/WSJ_UI_DX");
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _ui.m_bg.visible = false;
+            _ui.m_t1.Play();
+            clickBlankToClose = false;
+            itemcfg = ItemCfgArray.Instance.GetCfg(blindBoxCfg.CostID);
+            if (itemcfg == null)
+            {
+                Log.Error(string.Format("没有{0}物品"));
+            }
+
+            //_ui.m_buyBtn.m_img.url = ResPathUtil.GetIconPath(itemcfg);
+            _ui.m_boxList.numItems = 6;
+            _ui.m_rewardList.numItems = 6;
+            UpdateTime(null);
+            Timers.inst.Add(1, 0, UpdateTime);
+            Timers.inst.Add(0.75f, 1, TimeUpdateShow);
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+            ActivityDataManager.Instance.BlindBoxType = 0;
+            Timers.inst.Remove(UpdateTime);
+            Timers.inst.Remove(TimeUpdateShow);
+        }
+
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.BlindBox_BuyOne, ReqBuyOne);
+            EventAgent.AddEventListener(ConstMessage.BlindBox_BuyAll, ReqBuyAll);
+        }
+
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.BlindBox_BuyOne, ReqBuyOne);
+            EventAgent.RemoveEventListener(ConstMessage.BlindBox_BuyAll, ReqBuyAll);
+        }
+
+        private void OnClickRewardBtn()
+        {
+            ViewManager.Show<BlindBoxRewardView>(new object[] { 30000066, 30000078 });
+        }
+
+        private void OnClickRuleBtn()
+        {
+            ViewManager.Show<BlindBoxRuleView>(300037);
+        }
+
+        private void RenderRewardList(int index, GObject obj)
+        {
+            UI_rewardItem uiItemChild = UI_rewardItem.Proxy(obj);
+            List<DropOutCfg> dropOutCfgList = DropOutCfgArray.Instance.GetCfgsByid(blindBoxCfg.OrdinaryDropDisplay);
+            ItemCfg itemCfgChild = ItemCfgArray.Instance.GetCfg(dropOutCfgList[index].item);
+            
+            uiItemChild.target.data = itemCfgChild;
+            uiItemChild.m_reward.url = ResPathUtil.GetIconPath(itemCfgChild);
+            
+            UI_rewardItem.ProxyEnd();
+        }
+
+        private void RenderBoxList(int index, GObject obj)
+        {
+            UI_boxItem item = UI_boxItem.Proxy(obj);
+            item.target.onClick.Add(OnClickBuyOne);
+            if (!_effectUIDic.ContainsKey("WSJ_Box" + index.ToString()))
+            {
+                _effectUIDic.Add("WSJ_Box" + index.ToString(),
+                    EffectUIPool.CreateEffectUI(item.m_effect, "ui_Activity", "WSJ_Box/WSJ_Box"));
+            }
+
+            if (!_effectUIDic.ContainsKey("WSJ_OpenBox" + index.ToString()))
+            {
+                _effectUIDic.Add("WSJ_OpenBox" + index.ToString(),
+                    EffectUIPool.CreateEffectUI(item.m_effectOpen, "ui_Activity", "WSJ_OpenBox/WSJ_OpenBox"));
+                item.m_effectOpen.visible = false;
+            }
+
+            UI_boxItem.ProxyEnd();
+        }
+
+        private void OnClickBuyAll()
+        {
+            ActivityDataManager.Instance.BlindBoxType = 6;
+            int costNum = blindBoxCfg.CostIDNumArr[1];
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemcfg.id);
+            if (ActivityDataManager.Instance.typeAll.check == false)
+            {
+                string desc = string.Format("确认是否消耗{0}{1}打开{2}个盲盒?", costNum, itemCfg.name, _ui.m_boxList.numItems);
+                ViewManager.Show<BlindBoxBuyTIpView>(desc);
+            }
+            else
+            {
+                ReqBuyAll();
+            }
+        }
+
+        private async void ReqBuyAll()
+        {
+            bool result;
+            result = await LuckyBoxSProxy.ReqGetBlindBox(1, 6);
+            if (result)
+            {
+                UpdateAllBoxAni();
+            }
+        }
+
+        private async void ReqBuyOne()
+        {
+            bool result;
+            result = await LuckyBoxSProxy.ReqGetBlindBox(1, 1);
+            if (result)
+            {
+                UI_boxItem listItem = UI_boxItem.Proxy(_ui.m_boxList.GetChildAt(listIndex));
+                _ui.m_backBtn.touchable = false;
+                _ui.m_buyBtn.target.touchable = false;
+                _ui.m_boxList.touchable = false;
+                clickBlankToClose = false;
+                listItem.m_t0.Play(() =>
+                {
+                    BonusController.TryShowBonusList(
+                        ItemUtil.CreateItemDataList(LuckyBoxDataManager.Instance.BlindBoxReward));
+                    _ui.m_backBtn.touchable = true;
+                    _ui.m_buyBtn.target.touchable = true;
+                    _ui.m_boxList.touchable = true;
+                    clickBlankToClose = true;
+                });
+                UI_boxItem.ProxyEnd();
+            }
+        }
+
+        private void OnClickBuyOne(EventContext context)
+        {
+            GObject sender = context.sender as GObject;
+            GObject obj = sender.parent;
+            listIndex = _ui.m_boxList.GetChildIndex(sender);
+            ActivityDataManager.Instance.BlindBoxType = 1;
+            int costNum = blindBoxCfg.CostIDNumArr[0];
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemcfg.id);
+            if (ActivityDataManager.Instance.typeOne.check == false)
+            {
+                string desc = string.Format("确认是否消耗{0}{1}打开一个盲盒?", costNum, itemCfg.name);
+                ViewManager.Show<BlindBoxBuyTIpView>(desc);
+            }
+            else
+            {
+                ReqBuyOne();
+            }
+        }
+
+        private async void UpdateAllBoxAni()
+        {
+            _ui.m_backBtn.touchable = false;
+            _ui.m_buyBtn.target.touchable = false;
+            _ui.m_boxList.touchable = false;
+            clickBlankToClose = false;
+            for (int i = 0; i < _ui.m_boxList.numItems; i++)
+            {
+                UI_boxItem item = UI_boxItem.Proxy(_ui.m_boxList.GetChildAt(i));
+                item.m_effect.visible = false;
+                item.m_effectOpen.visible = true;
+                await Task.Delay(200);
+                UI_boxItem.ProxyEnd();
+            }
+
+            BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(LuckyBoxDataManager.Instance.BlindBoxReward));
+            for (int i = 0; i < _ui.m_boxList.numItems; i++)
+            {
+                UI_boxItem item = UI_boxItem.Proxy(_ui.m_boxList.GetChildAt(i));
+                item.m_effect.visible = true;
+                item.m_effectOpen.visible = false;
+                UI_boxItem.ProxyEnd();
+            }
+
+            _ui.m_backBtn.touchable = true;
+            _ui.m_buyBtn.target.touchable = true;
+            _ui.m_boxList.touchable = true;
+            clickBlankToClose = true;
+        }
+
+        private void TimeUpdateShow(object param)
+        {
+            clickBlankToClose = true;
+        }
+
+        private void UpdateTime(object param)
+        {
+            long curTime = TimeHelper.ServerNow();
+            var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(10301);
+            if (activityInfo != null)
+            {
+                long endTime = activityInfo.EndTime;
+                _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
+            }
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/BlindBoxView.cs.meta

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

Різницю між файлами не показано, бо вона завелика
+ 254 - 102
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs


+ 3 - 0
GameClient/Assets/Game/HotUpdate/Views/RoleInfoRegister.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 368516d0b12043249004e6efdd913a65
+timeCreated: 1733483725

+ 139 - 0
GameClient/Assets/Game/HotUpdate/Views/RoleInfoRegister/RoleInfoRegisterView.cs

@@ -0,0 +1,139 @@
+using UI.Login;
+using UnityEngine;
+using FairyGUI;
+
+namespace GFGGame
+{
+    public class RoleInfoRegisterView : BaseWindow
+    {
+        private UI_RoleInfoRegisterUI _ui;
+
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_RoleInfoRegisterUI.PACKAGE_NAME;
+            _ui = UI_RoleInfoRegisterUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+
+            _ui.m_btnSubmit.onClick.Add(OnClickBtnSubmit);
+            //_ui.m_btnSendCode.onClick.Add(OnBtnGetCode);
+
+            //输入限制
+            _ui.m_inputAccount.restrict = "[0-9A-Za-z_]";
+            _ui.m_inputPassword2.restrict = _ui.m_inputPassword.restrict = "[0-9A-Za-z_]";
+            _ui.m_inputName.restrict = "[\u4e00-\u9fa5a-zA-Z]";
+            _ui.m_inputIDNumber.restrict = "[a-zA-Z0-9]";
+        }
+
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+
+        private void OnClickBtnSubmit()
+        {
+            CheckToSubmit();
+        }
+
+        private async void OnBtnGetCode()
+        {
+            if (_ui.m_inputPhone.text == null || _ui.m_inputPhone.text == "")
+            {
+                PromptController.Instance.ShowFloatTextPrompt("麻烦输入手机号码!");
+                return;
+            }
+
+            bool result = await RoleInfoSProxy.GetMobileVerification(_ui.m_inputPhone.text);
+        }
+
+        private void CheckToSubmit()
+        {
+            //账号
+            string account = _ui.m_inputAccount.text.Trim();
+            //密码
+            string password = _ui.m_inputPassword.text;
+            //确认密码
+            string passwordSure = _ui.m_inputPassword2.text;
+            //玩家姓名
+            string realName = _ui.m_inputName.text;
+            //玩家身份证号码
+            string idNumberStr = _ui.m_inputIDNumber.text;
+            //手机号码
+            string phoneNumber = _ui.m_inputPhone.text;
+            //验证码
+            //string code = _ui.m_inputCode.text;
+            if (string.IsNullOrEmpty(account))
+            {
+                PromptController.Instance.ShowFloatTextPrompt("请输入账号");
+                return;
+            }
+            
+            // if (string.IsNullOrEmpty(code))
+            // {
+            //     PromptController.Instance.ShowFloatTextPrompt("请输入验证码");
+            //     return;
+            // }
+            
+            if (account.Length < 6) //最长输入在UI编辑器中做了限制
+            {
+                PromptController.Instance.ShowFloatTextPrompt("账号长度最少需要6位");
+                return;
+            }
+            
+            if (string.IsNullOrEmpty(password))
+            {
+                PromptController.Instance.ShowFloatTextPrompt("请输入密码");
+                return;
+            }
+            
+            if (password.Length < 6) //最长输入在UI编辑器中做了限制
+            {
+                PromptController.Instance.ShowFloatTextPrompt("密码长度最少需要5位");
+                return;
+            }
+            
+            if (passwordSure != password)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("确认密码不一致");
+                return;
+            }
+
+            GameController.CheckSpecialAccount(account);
+            if (GameGlobal.antiAddiction)
+            {
+                if (realName.Length <= 0)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("请输入真实姓名");
+                    return;
+                }
+            
+                if (idNumberStr.Length <= 0)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("请输入身份证号");
+                    return;
+                }
+            }
+
+            LoginController.RegisterRoleInfo(account, password, realName, idNumberStr, "", phoneNumber).Coroutine();
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Views/RoleInfoRegister/RoleInfoRegisterView.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 727d44635fb845d0b6dcbfd14b2dd4ff
+timeCreated: 1733483740

+ 84 - 0
GameClient/Assets/Game/HotUpdate/Views/Store/StorePayPropView.cs

@@ -0,0 +1,84 @@
+using System.Threading.Tasks;
+using ET;
+using FairyGUI;
+using UI.Store;
+
+namespace GFGGame
+{
+    public class StorePayPropView : BaseWindow
+    {
+        private UI_StorePayPropUI _ui;
+
+        //商品id
+        private int _goodsId;
+
+        //临时订单id
+        private long _tempOrderId;
+
+        //订单金额
+        private long _price;
+
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+            }
+
+            _ui = null;
+            base.Dispose();
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_StorePayPropUI.PACKAGE_NAME;
+            _ui = UI_StorePayPropUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_payVxBtn.onClick.Add(OnVxBtnBuyClick);
+            _ui.m_payAliBtn.onClick.Add(OnAliBtnBuyClick);
+            _ui.m_payClose.onClick.Add(OnCloseClick);
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _goodsId = (int)(this.viewData as object[])[0];
+            _tempOrderId = (int)(this.viewData as object[])[1];
+            _price = (int)(this.viewData as object[])[2];
+            ShopCfg cfg = ShopCfgArray.Instance.GetCfg(_goodsId);
+            _ui.m_txtTotal.text = _price + "元";
+            _ui.m_txtShopName.text = cfg.productName;
+            _ui.m_txtXzf.text = _price + "元";
+        }
+
+        private async void OnVxBtnBuyClick()
+        {
+            S2C_CreateAliOrder response = await ShopSProxy.ReqCreateAliOrder(_tempOrderId);
+            if (response == null || string.IsNullOrEmpty(response.AliOrderStr))
+            {
+                //TODO 提示调起支付宝失败
+                return;
+            }
+
+            AliManagerr.Instance.Pay(response.AliOrderStr);
+        }
+
+        private async void OnAliBtnBuyClick()
+        {
+        }
+
+        private async void OnCloseClick()
+        {
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Views/Store/StorePayPropView.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 737ad6fde790433e8394af1dff873378
+timeCreated: 1733645100

+ 1 - 1
GameClient/Assets/Game/Launcher/Log/LogServerHelperHttp.cs

@@ -13,7 +13,7 @@ namespace GFGGame
         public static void SendNodeLog(int node)
         {
             var body = $"?logStr={LauncherConfig.platformId}|{DeviceUniqueIdHelper.GetDeviceUniqueId()}|{node}|{LauncherConfig.ChannelId}";
-            HttpTool.Instance.Get(LauncherConfig.logApiReportLauncherUrl + body, null,false);
+            //HttpTool.Instance.Get(LauncherConfig.logApiReportLauncherUrl + body, null,false);
         }
     }
 }

+ 8 - 3
GameClient/Assets/Game/Launcher/Platform/Pay.meta

@@ -1,3 +1,8 @@
-fileFormatVersion: 2
-guid: 818323f68f284b66b441de1e0136431e
-timeCreated: 1732521774
+fileFormatVersion: 2
+guid: 63174eaf331a19a4c8595f7904ed60ea
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_fui.bytes


+ 8 - 0
GameClient/Assets/ResIn/UI/BlindBox.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 738e21d86c8b06748808b020fe043781
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0!a.png


+ 120 - 0
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0!a.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 6882f787b2b721e4db866c18dc1122a5
+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
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    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: 

BIN
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0.png


+ 120 - 0
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 474a45e708a11624e87fd06470581543
+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
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    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: 

BIN
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1!a.png


+ 120 - 0
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1!a.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 2dbb6d13f684a794da45fe8e5feaeb3a
+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
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    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: 

BIN
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1.png


+ 120 - 0
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_atlas0_1.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: c93d193d996ba3d419220f128d36ca72
+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
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: 50
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 1
+    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: 

BIN
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_fui.bytes


+ 7 - 0
GameClient/Assets/ResIn/UI/BlindBox/BlindBox_fui.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d248978e432729c4cb4177240a35652f
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
GameClient/Assets/ResIn/UI/Login/Login_fui.bytes


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_10!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_10.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_11!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_11.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_2!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_2.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_3!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_3.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_4!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_4.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_5!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_5.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_6!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_6.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_7!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_7.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_8!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_8.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_9!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas0_9.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas10!a.png


BIN
GameClient/Assets/ResIn/UI/Main/Main_atlas10.png


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


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_2!a.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_2.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_3!a.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_3.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_4!a.png


BIN
GameClient/Assets/ResIn/UI/Store/Store_atlas0_4.png


Деякі файли не було показано, через те що забагато файлів було змінено