Browse Source

Merge remote-tracking branch 'remotes/origin/master' into dev

# Conflicts:
#	GameClient/Assets/Game/Launcher/LauncherConfig.cs
hexiaojie 1 year ago
parent
commit
bd7258aa1c
33 changed files with 585 additions and 4 deletions
  1. 12 0
      GameClient/Assets/Editor/ToolsMenu.cs
  2. 7 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ActivityThemeLuckyBoxUI.cs
  3. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComCardImgRes.cs
  4. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComCardImgRes.cs.meta
  5. 72 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComImgCard.cs
  6. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComImgCard.cs.meta
  7. 243 0
      GameClient/Assets/Game/HotUpdate/Platform/QDAppStoreManager.cs
  8. 3 0
      GameClient/Assets/Game/HotUpdate/Platform/QDAppStoreManager.cs.meta
  9. 26 0
      GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs
  10. 17 1
      GameClient/Assets/Game/HotUpdate/Views/ActivityThemeLuckyBox/ActivityThemeLuckyBoxView.cs
  11. 3 3
      GameClient/Assets/Game/HotUpdate/Views/Common/Controller/LuckyBoxController.cs
  12. 2 0
      GameClient/Assets/Game/HotUpdate/Views/Share/ShareView.cs
  13. 4 0
      GameClient/Assets/Game/Launcher/LauncherConfig.cs
  14. 48 0
      GameClient/Assets/Game/Launcher/Platform/ATTAuth.cs
  15. 3 0
      GameClient/Assets/Game/Launcher/Platform/ATTAuth.cs.meta
  16. 46 0
      GameClient/Assets/Game/Launcher/Platform/QDAppStoreManagerInit.cs
  17. 3 0
      GameClient/Assets/Game/Launcher/Platform/QDAppStoreManagerInit.cs.meta
  18. 3 0
      GameClient/Assets/Game/Launcher/Platform/QDManagerInit.cs
  19. BIN
      GameClient/Assets/ResIn/UI/ActivityThemeLuckyBox/ActivityThemeLuckyBox_fui.bytes
  20. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0!a.png
  21. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0.png
  22. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1!a.png
  23. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1.png
  24. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3!a.png
  25. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3.png
  26. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6!a.png
  27. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6.png
  28. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7!a.png
  29. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7.png
  30. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8!a.png
  31. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8.png
  32. BIN
      GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_fui.bytes
  33. BIN
      GameClient/Assets/ResIn/UI/RoleInfo/RoleInfo_fui.bytes

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

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

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

@@ -9,6 +9,7 @@ namespace UI.ActivityThemeLuckyBox
         public GComponent target;
         public GComponent target;
         public Controller m_c1;
         public Controller m_c1;
         public GLoader m_loaBg;
         public GLoader m_loaBg;
+        public UI_ComImgCard m_card;
         public GGraph m_bgEffectHolder;
         public GGraph m_bgEffectHolder;
         public GButton m_btnBack;
         public GButton m_btnBack;
         public UI_Button1 m_btnChapter;
         public UI_Button1 m_btnChapter;
@@ -22,6 +23,7 @@ namespace UI.ActivityThemeLuckyBox
         public GImage m_mask;
         public GImage m_mask;
         public GLoader m_icon_5;
         public GLoader m_icon_5;
         public GTextField m_txtTime_5;
         public GTextField m_txtTime_5;
+        public GGraph m_textEffect;
         public Transition m_In_2;
         public Transition m_In_2;
         public Transition m_In_4;
         public Transition m_In_4;
         public const string URL = "ui://ubfk2kobmbf1k";
         public const string URL = "ui://ubfk2kobmbf1k";
@@ -73,6 +75,7 @@ namespace UI.ActivityThemeLuckyBox
         {
         {
             m_c1 = comp.GetController("c1");
             m_c1 = comp.GetController("c1");
             m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_loaBg = (GLoader)comp.GetChild("loaBg");
+            m_card = (UI_ComImgCard)UI_ComImgCard.Create(comp.GetChild("card"));
             m_bgEffectHolder = (GGraph)comp.GetChild("bgEffectHolder");
             m_bgEffectHolder = (GGraph)comp.GetChild("bgEffectHolder");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_btnChapter = (UI_Button1)UI_Button1.Create(comp.GetChild("btnChapter"));
             m_btnChapter = (UI_Button1)UI_Button1.Create(comp.GetChild("btnChapter"));
@@ -86,6 +89,7 @@ namespace UI.ActivityThemeLuckyBox
             m_mask = (GImage)comp.GetChild("mask");
             m_mask = (GImage)comp.GetChild("mask");
             m_icon_5 = (GLoader)comp.GetChild("icon_5");
             m_icon_5 = (GLoader)comp.GetChild("icon_5");
             m_txtTime_5 = (GTextField)comp.GetChild("txtTime_5");
             m_txtTime_5 = (GTextField)comp.GetChild("txtTime_5");
+            m_textEffect = (GGraph)comp.GetChild("textEffect");
             m_In_2 = comp.GetTransition("In_2");
             m_In_2 = comp.GetTransition("In_2");
             m_In_4 = comp.GetTransition("In_4");
             m_In_4 = comp.GetTransition("In_4");
         }
         }
@@ -93,6 +97,8 @@ namespace UI.ActivityThemeLuckyBox
         {
         {
             m_c1 = null;
             m_c1 = null;
             m_loaBg = null;
             m_loaBg = null;
+            m_card.Dispose();
+            m_card = null;
             m_bgEffectHolder = null;
             m_bgEffectHolder = null;
             m_btnBack = null;
             m_btnBack = null;
             m_btnChapter.Dispose();
             m_btnChapter.Dispose();
@@ -110,6 +116,7 @@ namespace UI.ActivityThemeLuckyBox
             m_mask = null;
             m_mask = null;
             m_icon_5 = null;
             m_icon_5 = null;
             m_txtTime_5 = null;
             m_txtTime_5 = null;
+            m_textEffect = null;
             m_In_2 = null;
             m_In_2 = null;
             m_In_4 = null;
             m_In_4 = null;
             if(disposeTarget && target != null)
             if(disposeTarget && target != null)

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComCardImgRes.cs

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

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComCardImgRes.cs.meta

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

+ 72 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComImgCard.cs

@@ -0,0 +1,72 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.ActivityThemeLuckyBox
+{
+    public partial class UI_ComImgCard
+    {
+        public GComponent target;
+        public UI_ComCardImgRes m_ComCardImgRes;
+        public const string URL = "ui://ubfk2kobt88a1e";
+        public const string PACKAGE_NAME = "ActivityThemeLuckyBox";
+        public const string RES_NAME = "ComImgCard";
+        private static UI_ComImgCard _proxy;
+
+        public static UI_ComImgCard Create(GObject gObject = null)
+        {
+            var ui = new UI_ComImgCard();
+            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_ComImgCard Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComImgCard();
+            }
+            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_ComCardImgRes = (UI_ComCardImgRes)UI_ComCardImgRes.Create(comp.GetChild("ComCardImgRes"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_ComCardImgRes.Dispose();
+            m_ComCardImgRes = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityThemeLuckyBox/UI_ComImgCard.cs.meta

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

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

+ 17 - 1
GameClient/Assets/Game/HotUpdate/Views/ActivityThemeLuckyBox/ActivityThemeLuckyBoxView.cs

@@ -64,7 +64,16 @@ namespace GFGGame
 
 
             _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(_activityId);
             _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(_activityId);
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath(_activityCfg.res);
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath(_activityCfg.res);
-
+            if(_activityId == 5)
+            {
+                _ui.m_card.target.visible = true;
+                _ui.m_card.m_ComCardImgRes.m_loaCard.url = ResPathUtil.GetBgImgPath("bg_jfyl");
+            }
+            else
+            {
+                _ui.m_card.target.visible = false;
+            }
+            
             UpdateEffect();
             UpdateEffect();
             UpdateRedDot();
             UpdateRedDot();
             UpdateTime();
             UpdateTime();
@@ -209,6 +218,13 @@ namespace GFGGame
                 _effectUIDic.Add("L", EffectUIPool.CreateEffectUI(_ui.m_btnLuckyBox.m_effectHolder, "ui_Activity", "SYJH_icon_tx_L"));
                 _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"));
                 _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()
         private void PreloadSuitModel()
         {
         {

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

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

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

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

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

@@ -71,6 +71,10 @@ namespace GFGGame
             //外网dev版本
             //外网dev版本
             netType = EnumNetType.LOCAL;
             netType = EnumNetType.LOCAL;
             cfgName = "cfg_dev19";
             cfgName = "cfg_dev19";
+            ChannelId = (int)ChannelID.Test;
+#elif PT_DouYouDev
+            netType = EnumNetType.LOCAL;
+            cfgName = "cfg_douYouDev";
             ChannelId = (int)ChannelID.DouYouDev;
             ChannelId = (int)ChannelID.DouYouDev;
 #elif PT_TAPTAP
 #elif PT_TAPTAP
             netType = EnumNetType.PUBLIC;
             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);
                     QDDouYouManagerInit.Instance.InitSDK(LauncherConfig.douYouAdId);
                     QDShareManagerInit.Instance.InitSDK();
                     QDShareManagerInit.Instance.InitSDK();
                     break;
                     break;
+                case (int)ChannelID.AppStore:
+                    QDAppStoreManagerInit.InitPlatform();
+                    break;
                 default:
                 default:
                     UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });
                     UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });
                     QDShareManagerInit.Instance.InitSDK();
                     QDShareManagerInit.Instance.InitSDK();

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


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3!a.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_3.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6!a.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_6.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7!a.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_7.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8!a.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_atlas0_8.png


BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_fui.bytes


BIN
GameClient/Assets/ResIn/UI/RoleInfo/RoleInfo_fui.bytes