瀏覽代碼

Merge branch 'master' of http://192.168.2.10:3000/GFG/Client into yuqian

zhangyuqian 1 年之前
父節點
當前提交
07e8e388b4
共有 38 個文件被更改,包括 667 次插入9 次删除
  1. 6 0
      GameClient/Assets/Editor/ToolsMenu.cs
  2. 12 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ActivityThemeLuckyBoxUI.cs
  3. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/LuckyBox/UI_LuckyBoxWishUI.cs
  4. 243 0
      GameClient/Assets/Game/HotUpdate/Platform/QDAppStoreManager.cs
  5. 3 0
      GameClient/Assets/Game/HotUpdate/Platform/QDAppStoreManager.cs.meta
  6. 26 0
      GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs
  7. 1 1
      GameClient/Assets/Game/HotUpdate/Utils/ResPathUtil.cs
  8. 7 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityThemeLuckyBox/ActivityThemeLuckyBoxView.cs
  9. 3 3
      GameClient/Assets/Game/HotUpdate/Views/Common/Controller/LuckyBoxController.cs
  10. 4 3
      GameClient/Assets/Game/HotUpdate/Views/DailyWelfare/DailyWelfareView.cs
  11. 8 0
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxWishView.cs
  12. 1 1
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  13. 2 0
      GameClient/Assets/Game/HotUpdate/Views/Share/ShareView.cs
  14. 1 1
      GameClient/Assets/Game/HotUpdate/Views/Studio/StudioActivityView.cs
  15. 4 0
      GameClient/Assets/Game/Launcher/LauncherConfig.cs
  16. 48 0
      GameClient/Assets/Game/Launcher/Platform/ATTAuth.cs
  17. 3 0
      GameClient/Assets/Game/Launcher/Platform/ATTAuth.cs.meta
  18. 46 0
      GameClient/Assets/Game/Launcher/Platform/QDAppStoreManagerInit.cs
  19. 3 0
      GameClient/Assets/Game/Launcher/Platform/QDAppStoreManagerInit.cs.meta
  20. 3 0
      GameClient/Assets/Game/Launcher/Platform/QDManagerInit.cs
  21. 二進制
      GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_atlas0!a.png
  22. 二進制
      GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_atlas0.png
  23. 二進制
      GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_fui.bytes
  24. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0!a.png
  25. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0.png
  26. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1!a.png
  27. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1.png
  28. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3!a.png
  29. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3.png
  30. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6!a.png
  31. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6.png
  32. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7!a.png
  33. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7.png
  34. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8!a.png
  35. 120 0
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8!a.png.meta
  36. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8.png
  37. 120 0
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8.png.meta
  38. 二進制
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_fui.bytes

+ 6 - 0
GameClient/Assets/Editor/ToolsMenu.cs

@@ -34,6 +34,12 @@ namespace GFGEditor
         {
             
         }
+#elif PT_DouYouDev
+        [MenuItem("PT_DouYouDev/")]
+        public static void VersionTag()
+        {
+            
+        }
 #elif PT_DOUYOU
         [MenuItem("DouYou/")]
         public static void VersionTag()

+ 12 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ActivityThemeLuckyBoxUI.cs

@@ -19,6 +19,10 @@ namespace UI.ActivityThemeLuckyBox
         public GTextField m_txtTime_4;
         public GButton m_btnLuckyBox_old;
         public UI_Button1 m_btnLuckyBox;
+        public GImage m_mask;
+        public GLoader m_icon_5;
+        public GTextField m_txtTime_5;
+        public GGraph m_textEffect;
         public Transition m_In_2;
         public Transition m_In_4;
         public const string URL = "ui://ubfk2kobmbf1k";
@@ -80,6 +84,10 @@ namespace UI.ActivityThemeLuckyBox
             m_txtTime_4 = (GTextField)comp.GetChild("txtTime_4");
             m_btnLuckyBox_old = (GButton)comp.GetChild("btnLuckyBox_old");
             m_btnLuckyBox = (UI_Button1)UI_Button1.Create(comp.GetChild("btnLuckyBox"));
+            m_mask = (GImage)comp.GetChild("mask");
+            m_icon_5 = (GLoader)comp.GetChild("icon_5");
+            m_txtTime_5 = (GTextField)comp.GetChild("txtTime_5");
+            m_textEffect = (GGraph)comp.GetChild("textEffect");
             m_In_2 = comp.GetTransition("In_2");
             m_In_4 = comp.GetTransition("In_4");
         }
@@ -101,6 +109,10 @@ namespace UI.ActivityThemeLuckyBox
             m_btnLuckyBox_old = null;
             m_btnLuckyBox.Dispose();
             m_btnLuckyBox = null;
+            m_mask = null;
+            m_icon_5 = null;
+            m_txtTime_5 = null;
+            m_textEffect = null;
             m_In_2 = null;
             m_In_4 = null;
             if(disposeTarget && target != null)

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/LuckyBox/UI_LuckyBoxWishUI.cs

@@ -8,6 +8,7 @@ namespace UI.LuckyBox
     {
         public GComponent target;
         public Controller m_showType;
+        public GLoader m_bg;
         public GButton m_btnWish1;
         public GButton m_btnWish2;
         public GButton m_btnRule;
@@ -63,6 +64,7 @@ namespace UI.LuckyBox
         private void Init(GComponent comp)
         {
             m_showType = comp.GetController("showType");
+            m_bg = (GLoader)comp.GetChild("bg");
             m_btnWish1 = (GButton)comp.GetChild("btnWish1");
             m_btnWish2 = (GButton)comp.GetChild("btnWish2");
             m_btnRule = (GButton)comp.GetChild("btnRule");
@@ -74,6 +76,7 @@ namespace UI.LuckyBox
         public void Dispose(bool disposeTarget = false)
         {
             m_showType = null;
+            m_bg = null;
             m_btnWish1 = null;
             m_btnWish2 = null;
             m_btnRule = null;

+ 243 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDAppStoreManager.cs

@@ -0,0 +1,243 @@
+#if !UNITY_EDITOR && UNITY_IOS
+using UnityEngine.Purchasing;
+using UnityEngine;
+using ET;
+
+namespace GFGGame
+{
+    public class QDAppStoreManager
+    {
+        public static void Init()
+        {
+            IAPManager.Instance.InitializePurchasing();
+//#if !UNITY_EDITOR
+//            ReYunSDKManager.Instance.Init();
+//#endif
+        }
+
+        public static void Pay(int buyID, int count, string orderID, long Price)
+        {
+            IAPManager.Instance.Pay(IAPManager.Instance.GetIosProductId(buyID), count, orderID, Price);
+        }
+
+        public static void OnCreateRole()
+        {
+//#if !UNITY_EDITOR
+//            var accountInfoComponent = GameGlobal.zoneScene.GetComponent<AccountInfoComponent>();
+//            ReYunSDKManager.Instance.Register(accountInfoComponent.Account);
+//#endif
+        }
+
+        public static void OnEnterGame()
+        {
+            IAPManager.Instance.CheckOrderToDo();
+
+//#if !UNITY_EDITOR
+//            var accountInfoComponent = GameGlobal.zoneScene.GetComponent<AccountInfoComponent>();
+//            ReYunSDKManager.Instance.Login(accountInfoComponent.Account);
+//#endif
+        }
+    }
+
+    public class IAPManager : SingletonBase<IAPManager>, IStoreListener
+    {
+        IStoreController m_StoreController; // The Unity Purchasing system.
+        private IAppleExtensions m_AppleExtensions;
+        private bool canMakePayments;
+        private string OrderId;
+
+        private string OrderIdLocal
+        {
+            get
+            {
+                return PlayerPrefs.GetString(OrderIdLocalkey, null);
+            }
+            set
+            {
+                PlayerPrefs.SetString(OrderIdLocalkey, value);
+            }
+        }
+        private string TransactionId
+        {
+            get
+            {
+                return PlayerPrefs.GetString(TransactionIdLocalkey, null);
+            }
+            set
+            {
+                PlayerPrefs.SetString(TransactionIdLocalkey, value);
+            }
+        }
+
+        private string OrderIdLocalkey
+        {
+            get { return RoleDataManager.roleId + "OrderId"; }
+        }
+
+        private string TransactionIdLocalkey
+        {
+            get { return RoleDataManager.roleId + "transactionID"; }
+        }
+
+        public void CheckOrderToDo()
+        {
+            if (!string.IsNullOrEmpty(this.OrderIdLocal) && !string.IsNullOrEmpty(this.TransactionId))
+            {
+                IOSRechargeSProxy.IosVerifyOrder(OrderIdLocal, this.TransactionId).Coroutine();
+            }
+        }
+
+        public void Pay(string buyID, int count, string orderID, long Price)
+        {
+            Debug.Log($"Pay {buyID}");
+            if(!canMakePayments)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("应用内购 (IAP) 可能在设备设置中受到限制,请开启后再试。");
+                return;
+            }
+
+            if(!string.IsNullOrEmpty(this.OrderIdLocal))
+            {
+                PromptController.Instance.ShowFloatTextPrompt("有未完成的订单,请稍后再试!");
+                CheckOrderToDo();
+                return;
+
+            }
+            if(!string.IsNullOrEmpty(this.OrderId))
+            {
+                PromptController.Instance.ShowFloatTextPrompt("有未完成的订单,请稍后再试!");
+                return;
+            }
+            ViewManager.Show<ModalStatusView>("");
+            this.OrderId = orderID;
+            m_StoreController.InitiatePurchase(buyID);
+        }
+
+        public void OnServerSuccess(string OrderId, string TransactionId)
+        {
+            this.OrderId = null;
+            this.OrderIdLocal = null;
+            this.TransactionId = null;
+            PlayerPrefs.DeleteKey(OrderIdLocalkey);
+            PlayerPrefs.DeleteKey(TransactionIdLocalkey);
+        }
+
+        public void InitializePurchasing()
+        {
+            Debug.Log("InitializePurchasing");
+
+            var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
+            canMakePayments = builder.Configure<IAppleConfiguration>().canMakePayments;
+            builder.Configure<IAppleConfiguration>().SetApplePromotionalPurchaseInterceptorCallback(OnPromotionalPurchase);
+            var dataArray = ShopCfgArray.Instance.dataArray;
+            foreach(var shopCfg in dataArray)
+            {
+                if(shopCfg.costType == CostType.RMB)
+                {
+                    builder.AddProduct(GetIosProductId(shopCfg.id), ProductType.Consumable);
+                }
+            }
+
+            UnityPurchasing.Initialize(this, builder);
+        }
+
+        public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
+        {
+            Debug.Log("In-App Purchasing successfully initialized");
+            m_StoreController = controller;
+            m_AppleExtensions = extensions.GetExtension<IAppleExtensions>();
+
+            // 在 Apple 平台上,我们需要处理由 Apple 的"购买前先询问"功能导致的延期购买。
+            //在非 Apple 平台上,这将不起作用;永远不会调用 OnDeferred。
+            m_AppleExtensions.RegisterPurchaseDeferredListener(OnDeferred);
+        }
+
+        public void OnInitializeFailed(InitializationFailureReason error)
+        {
+            Debug.Log($"In-App Purchasing initialize failed: {error}");
+        }
+
+        public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
+        {
+            Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}");
+
+            this.OrderId = null;
+            ViewManager.Hide<ModalStatusView>();
+            
+            switch (failureReason)
+            {
+                case PurchaseFailureReason.PurchasingUnavailable:
+                    PromptController.Instance.ShowFloatTextPrompt("应用内购 (IAP) 可能在设备设置中受到限制,请开启后再试。");
+                    break;
+                case PurchaseFailureReason.ExistingPurchasePending:
+                    PromptController.Instance.ShowFloatTextPrompt("现购待定,请稍后再试。");
+                    break;
+                case PurchaseFailureReason.ProductUnavailable:
+                    PromptController.Instance.ShowFloatTextPrompt("该商品不可购买,请稍后再试。");
+                    break;
+                case PurchaseFailureReason.SignatureInvalid:
+                    PromptController.Instance.ShowFloatTextPrompt("验证失败,请稍后再试。");
+                    break;
+                case PurchaseFailureReason.UserCancelled:
+                    
+                    break;
+                case PurchaseFailureReason.PaymentDeclined:
+                    PromptController.Instance.ShowFloatTextPrompt("此次购买被拒绝,请稍后再试。");
+                    break;
+                case PurchaseFailureReason.DuplicateTransaction:
+                    PromptController.Instance.ShowFloatTextPrompt("重复的交易,请稍后再试。");
+                    break;
+                default:
+                    PromptController.Instance.ShowFloatTextPrompt("购买失败,请稍后再试!");
+                    break;
+            }
+        }
+
+        public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
+        {
+            ViewManager.Hide<ModalStatusView>();
+            //Retrieve the purchased product
+            var product = args.purchasedProduct;
+            Debug.Log($"Purchase Complete - Product: {product.definition.id}");
+            this.OrderIdLocal = this.OrderId;
+            this.TransactionId = product.transactionID;
+            GameGlobal.maxShowOrderTime = 300000;
+            IOSRechargeSProxy.IosVerifyOrder(OrderIdLocal, product.transactionID).Coroutine();
+
+            //We return Complete, informing IAP that the processing on our side is done and the transaction can be closed.
+            return PurchaseProcessingResult.Complete;
+        }
+
+        /// &lt;summary>
+        /// 特定于 iOS。
+        /// 未成年人要求购买并提交给家长批准时,
+        /// 此函数将作为 Apple 的"购买前先询问"功能的一部分
+        /// 接受调用。
+        ///
+        /// 购买被批准或拒绝时,将触发正常的购买
+        /// 事件。
+        /// &lt;/summary>
+        /// &lt;param name="item">Item.&lt;/param>
+        private void OnDeferred(Product item)
+        {
+            Debug.Log("Purchase deferred: " + item.definition.id);
+            PromptController.Instance.ShowFloatTextPrompt("未成年人购买需要经过家长批准才能继续!");
+        }
+
+        private void OnPromotionalPurchase(Product item)
+        {
+            Debug.Log("Attempted promotional purchase: " + item.definition.id);
+            // 已检测到推荐性购买。
+            // 通过呈现家长控制门等方式处理此事件。
+            //此处,仅出于演示目的,我们将等待五秒钟
+            // 再继续购买。
+            //StartCoroutine(ContinuePromotionalPurchases());
+        }
+
+        public string GetIosProductId(int cfgId)
+        {
+            return "wsj" + cfgId;
+        }
+    }
+}
+#endif

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDAppStoreManager.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f80db6686bd24e3d9d1dad9298372a45
+timeCreated: 1722951514

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

@@ -24,6 +24,11 @@ namespace GFGGame
                     QDDouYouManager.Instance.Init();
                     QDShareManager.Instance.Init();
                     break;
+                case (int)ChannelID.AppStore:
+#if !UNITY_EDITOR && UNITY_IOS
+                    QDAppStoreManager.Init();
+#endif
+                    break;
                 default:
                     break;
             }
@@ -49,6 +54,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.Login();
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接douyou ios的sdk登录
+                    break;
                 default:
                     break;
             }
@@ -85,6 +93,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.OnEnterGame();
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接入douYou sdk 
+                    break;
                 default:
                     break;
             }
@@ -104,6 +115,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.OnQuitToLoginView();
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接入douYou sdk 
+                    break;
                 default:
                     break;
             }
@@ -122,6 +136,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.Pay(buyID, count, orderID, price);
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接入douYou sdk 
+                    break;
                 default:
                     break;
             }
@@ -148,6 +165,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.Logout();
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接入douYou sdk 
+                    break;
                 default:
                     break;
             }
@@ -166,6 +186,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.Exit();
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接入douYou sdk 
+                    break;
                 default:
                     break;
             }
@@ -224,6 +247,9 @@ namespace GFGGame
                         roleInfoDev.Id.ToString(), lvlDev.ToString(), roleInfoDev.Name, roleInfoDev.ServerId.ToString(),
                         serverNameDev);
                     break;
+                case (int)ChannelID.AppStore:
+                    //TODO 接入douYou sdk 
+                    break;
                 default:
                     break;
             }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Utils/ResPathUtil.cs

@@ -223,7 +223,7 @@ namespace GFGGame
         {
             return $"{ANIMATION_DIR_PATH}/Card/{res}/{res}.{extName}";
         }
-        public static string GetActivityPath(string res, string extName = "jpg")
+        public static string GetActivityPath(string res, string extName = "png")
         {
             return $"{TEXTURE_DIR_PATH}/Activity/Activity/{res}.{extName}";
         }

+ 7 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityThemeLuckyBox/ActivityThemeLuckyBoxView.cs

@@ -209,6 +209,13 @@ namespace GFGGame
                 _effectUIDic.Add("L", EffectUIPool.CreateEffectUI(_ui.m_btnLuckyBox.m_effectHolder, "ui_Activity", "SYJH_icon_tx_L"));
                 _effectUIDic.Add("R", EffectUIPool.CreateEffectUI(_ui.m_btnChapter.m_effectHolder, "ui_Activity", "SYJH_icon_tx_R"));
             }
+            else if (_activityId == 5)
+            {
+                _effectUIDic.Add("All_tx", EffectUIPool.CreateEffectUI(_ui.m_bgEffectHolder, "ui_Activity/JFYL_All_tx", "JFYL_All_tx"));
+                _effectUIDic.Add("L", EffectUIPool.CreateEffectUI(_ui.m_btnLuckyBox.m_effectHolder, "ui_Activity/JFYL_Button_L", "JFYL_Button_L"));
+                _effectUIDic.Add("R", EffectUIPool.CreateEffectUI(_ui.m_btnChapter.m_effectHolder, "ui_Activity/JFYL_Button_R", "JFYL_Button_R"));
+                _effectUIDic.Add("textEff", EffectUIPool.CreateEffectUI(_ui.m_textEffect, "ui_Activity/JFYL_Text", "JFYL_Text"));
+            }
         }
         private void PreloadSuitModel()
         {

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Views/Common/Controller/LuckyBoxController.cs

@@ -130,7 +130,7 @@ namespace GFGGame
                         modelInfos[_index] = new ModelInfo();
                         _dressUpObjUIs[_index].UpdateWrapper(comRes.m_holder);
                         comRes.m_holder.SetPosition(_luckyBoxCfg.posArr[_modelIndex][0], _luckyBoxCfg.posArr[_modelIndex][1], 1);
-                        _dressUpObjUIs[_index].ResetSceneObj(scale, false, false, null, false);
+                        _dressUpObjUIs[_index].ResetSceneObj(scale, false, true, null, false);
                         _dressUpObjUIs[_index].dressUpObj.PutOnSuitCfg(_luckyBoxCfg.suitIdArr[_modelIndex], true, new int[] { ConstDressUpItemType.BEI_JING }, false, false);
                         Timers.inst.StartCoroutine(DelayShowModel(direction));
                     }
@@ -230,7 +230,7 @@ namespace GFGGame
         private void ShowModel()
         {
             ChangeModelAlphaAnim(_index, 0, 1);
-            Transform obj = _dressUpObjUIs[_index].sceneObject.transform.Find("Role");
+            Transform obj = _dressUpObjUIs[_index].sceneObject.transform;
             if(obj != null)
             {
                 obj.gameObject.SetActive(true);
@@ -241,7 +241,7 @@ namespace GFGGame
         {
             InitModel(_index);
             ChangeModelAlphaAnim(_index, 1, 0);
-            Transform obj = _dressUpObjUIs[_index].sceneObject.transform.Find("Role");
+            Transform obj = _dressUpObjUIs[_index].sceneObject.transform;
             if(obj != null)
             {
                 obj.gameObject.SetActive(false);

+ 4 - 3
GameClient/Assets/Game/HotUpdate/Views/DailyWelfare/DailyWelfareView.cs

@@ -126,8 +126,9 @@ namespace GFGGame
             item.m_loaTitle.visible = true;
             if (ActivityDataManager.Instance.actLimitChargeId > 0)
             {
-                item.m_loaIcon.url = "ui://DailyWelfare/hdbn_xslc_" + openCfg.res;
-                item.m_loaTitle.url = "ui://DailyWelfare/hdbn_wz_xslc_" + openCfg.res;
+                string path  = "xslc_" + openCfg.res;
+                item.m_loaIcon.url = ResPathUtil.GetActivityPath(path);//"ui://DailyWelfare/hdbn_xslc_" + openCfg.res;
+                //item.m_loaTitle.url = "ui://DailyWelfare/hdbn_wz_xslc_" + openCfg.res;
                 item.m_loaTitle.visible = false;
             }
             else if (openCfg.id == 501)
@@ -163,7 +164,7 @@ namespace GFGGame
             GObject gObject = context.sender as GObject;
             int id = (int)gObject.data;
             ActivityOpenCfg cfg = ActivityOpenCfgArray.Instance.GetCfg(id);
-            if (id == 501 || id == 502 || cfg.type == 10)
+            if (id == 501 || id == 502 || cfg.type == 10 || cfg.type == 2)
             {
                 ViewManager.Show<NewLimitChargeView>(new object[] { gObject.data });
                 return;

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

@@ -53,9 +53,17 @@ namespace GFGGame
             base.OnShown();
             _actLimitTsy = (int)this.viewData;
             if (_actLimitTsy == ConstLimitTimeActivityType.ActLimitStlyc)
+            {
                 _ui.m_showType.selectedIndex = 1;
+            }
+            else if(_actLimitTsy == 1)
+            {
+                _ui.m_showType.selectedIndex = 2;
+            }
             else
+            {
                 _ui.m_showType.selectedIndex = 0;
+            }
 
             int activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(_actLimitTsy);
             ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityId);

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

@@ -748,7 +748,7 @@ namespace GFGGame
                 ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(actLuckyBoxId);
                 _ui.m_btnActivityLuckyBox.target.title = activityOpenCfg.themeName;
                 string path = "zjm_icon_" + activityOpenCfg.res.Split('_')[1];
-                _ui.m_btnActivityLuckyBox.target.icon = ResPathUtil.GetActivityPath(path); //"ui://Main/zjm_icon_" + activityOpenCfg.res.Split('_')[1];
+                _ui.m_btnActivityLuckyBox.target.icon = ResPathUtil.GetActivityPath(path,"png"); //"ui://Main/zjm_icon_" + activityOpenCfg.res.Split('_')[1];
                 //long time = TimeUtil.DateTimeToTimestamp(activityOpenCfg.endTime) - TimeHelper.ServerNow();
                 //_ui.m_btnActivityLuckyBox.m_txtTime.text = time > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time);
             }

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Views/Share/ShareView.cs

@@ -83,7 +83,9 @@ namespace GFGGame
         private void BtnOnClickShareQQPlatform()
         {
             ShareDataManager.Instance.CaptureCameraToImage(false);
+#if UNITY_ANDROID
             ShareSDKFun(PlatformType.QQPlatform);
+#endif
         }
         private void BtnOnClickShareDouYin()
         {

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

@@ -117,7 +117,7 @@ namespace GFGGame
                 item.m_loaItem.visible = false;
                 item.m_loaIcon.visible = true;
                 item.m_flow.visible = false;
-                item.m_loaIcon.url = string.Format("ui://Studio/{0}", _studioCfg.res);
+                item.m_loaIcon.url = ResPathUtil.GetActivityPath(_studioCfg.res,"png");
             }
             item.m_grpLock.visible = index > 0 && !InstanceZonesDataManager.CheckLevelPass(_storyLevelCfgs[index - 1].id);
             item.m_comFlower.target.visible = false;//.m_c1.selectedIndex = InstanceZonesDataManager.GetStarCountHistory(_storyLevelCfgs[index].id);

+ 4 - 0
GameClient/Assets/Game/Launcher/LauncherConfig.cs

@@ -71,6 +71,10 @@ namespace GFGGame
             //外网dev版本
             netType = EnumNetType.LOCAL;
             cfgName = "cfg_dev";
+            ChannelId = (int)ChannelID.Test;
+#elif PT_DouYouDev
+            netType = EnumNetType.LOCAL;
+            cfgName = "cfg_douYouDev";
             ChannelId = (int)ChannelID.DouYouDev;
 #elif PT_TAPTAP
             netType = EnumNetType.PUBLIC;

+ 48 - 0
GameClient/Assets/Game/Launcher/Platform/ATTAuth.cs

@@ -0,0 +1,48 @@
+using System;
+using UnityEngine;
+
+namespace GFGGame.Launcher
+{
+    public class ATTAuth : MonoBehaviour
+    {
+        [System.Runtime.InteropServices.DllImport("__Internal")]
+        private static extern void _RequestTrackingAuthorizationWithCompletionHandler();
+
+        [System.Runtime.InteropServices.DllImport("__Internal")]
+        private static extern int _GetAppTrackingAuthorizationStatus();
+
+        private static Action<int> getAuthorizationStatusAction;
+
+        /// <summary>
+        /// 请求ATT授权窗口
+        /// </summary>
+        /// <param name="getResult"></param>
+        public static void RequestTrackingAuthorizationWithCompletionHandler(Action<int> getResult)
+        {
+            //-1:"ios版本低于14"
+            //0: "ATT 授权状态待定";
+            //1: "ATT 授权状态受限";
+            //2: "ATT 已拒绝";
+            //3: "ATT 已授权";
+            Debug.Log("RequestTrackingAuthorizationWithCompletionHandler");
+            getAuthorizationStatusAction = getResult;
+            _RequestTrackingAuthorizationWithCompletionHandler();
+        }
+
+        /// <summary>
+        /// 获取当前ATT授权状态
+        /// </summary>
+        /// <returns></returns>
+        public static int GetAppTrackingAuthorizationStatus()
+        {
+            return _GetAppTrackingAuthorizationStatus();
+        }
+
+        public void GetAuthorizationStatus(string status)
+        {
+            getAuthorizationStatusAction?.Invoke(int.Parse(status));
+        }
+
+    }
+}
+

+ 3 - 0
GameClient/Assets/Game/Launcher/Platform/ATTAuth.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 27ce48eca6084671b666830d26548e8c
+timeCreated: 1722951344

+ 46 - 0
GameClient/Assets/Game/Launcher/Platform/QDAppStoreManagerInit.cs

@@ -0,0 +1,46 @@
+using UnityEngine;
+using UniFramework.Event;
+
+namespace GFGGame.Launcher
+{
+
+    public static class QDAppStoreManagerInit
+    {
+        public static int AppTrackingAuthorizationStatus;
+        private const string ATTStatusLocalKey = "ATTStatusLocalKey";
+
+        public static void InitPlatform()
+        {
+#if !UNITY_EDITOR && UNITY_IOS
+            AppTrackingAuthorizationStatus = ATTAuth.GetAppTrackingAuthorizationStatus();
+            if (AppTrackingAuthorizationStatus == 0)
+            {
+                bool requested = LocalCache.GetBool(ATTStatusLocalKey, false);
+                if(!requested)
+                {
+                    AddIOSMethod();
+                    ATTAuth.RequestTrackingAuthorizationWithCompletionHandler((status) =>
+                    {
+                        Debug.Log("ATT status :" + status);
+                        AppTrackingAuthorizationStatus = status;
+                    });
+                }
+            }
+#endif
+            UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true});
+        }
+
+
+        private static void AddIOSMethod()
+        {
+            string objName = "IOSMethod";
+            var obj = GameObject.Find(objName);
+            if(obj == null)
+            {
+                obj = new GameObject(objName);
+                GameObject.DontDestroyOnLoad(obj);
+            }
+            obj.AddComponent<ATTAuth>();
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/Launcher/Platform/QDAppStoreManagerInit.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b1262b0f94484df486b817b6c864e73f
+timeCreated: 1722951338

+ 3 - 0
GameClient/Assets/Game/Launcher/Platform/QDManagerInit.cs

@@ -17,6 +17,9 @@ namespace GFGGame.Launcher
                     QDDouYouManagerInit.Instance.InitSDK(LauncherConfig.douYouAdId);
                     QDShareManagerInit.Instance.InitSDK();
                     break;
+                case (int)ChannelID.AppStore:
+                    QDAppStoreManagerInit.InitPlatform();
+                    break;
                 default:
                     UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });
                     QDShareManagerInit.Instance.InitSDK();

二進制
GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_atlas0!a.png


二進制
GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_atlas0.png


二進制
GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_fui.bytes


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0!a.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1!a.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3!a.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6!a.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7!a.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7.png


二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8!a.png


+ 120 - 0
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8!a.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 9f28c29f9407c1344932c40e14aeb496
+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: 

二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8.png


+ 120 - 0
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 87b44ee28f2a8e743b1bb0ee4f6b44ef
+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: 

二進制
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_fui.bytes