Kaynağa Gözat

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

# Conflicts:
#	.gitignore
#	GameClient/Assets/Plugins/Android/AndroidManifest.xml.meta
#	GameClient/ProjectSettings/ProjectSettings.asset
hexiaojie 1 yıl önce
ebeveyn
işleme
0a455e9f46
100 değiştirilmiş dosya ile 3615 ekleme ve 296 silme
  1. 7 0
      .gitignore
  2. 1 1
      GameClient/Assets/Demo.meta
  3. 800 0
      GameClient/Assets/Demo/Demo.cs
  4. 1 1
      GameClient/Assets/Demo/Demo.cs.meta
  5. 2 2
      GameClient/Assets/Editor/ToolsMenu.cs
  6. 4 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs
  7. 12 1
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  8. 30 0
      GameClient/Assets/Game/HotUpdate/Data/ActivityDataManager.cs
  9. 255 0
      GameClient/Assets/Game/HotUpdate/Data/CollectPartDataManager.cs
  10. 11 0
      GameClient/Assets/Game/HotUpdate/Data/CollectPartDataManager.cs.meta
  11. 4 4
      GameClient/Assets/Game/HotUpdate/Data/LeagueDataManager.cs
  12. 15 0
      GameClient/Assets/Game/HotUpdate/Data/MainDataManager.cs
  13. 21 0
      GameClient/Assets/Game/HotUpdate/Data/MainStoryDataManager.cs
  14. 27 2
      GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs
  15. 10 3
      GameClient/Assets/Game/HotUpdate/Data/RoleDataManager.cs
  16. 29 0
      GameClient/Assets/Game/HotUpdate/Data/ScoreSystemData.cs
  17. 76 0
      GameClient/Assets/Game/HotUpdate/Data/ShareDataManager.cs
  18. 11 0
      GameClient/Assets/Game/HotUpdate/Data/ShareDataManager.cs.meta
  19. 12 0
      GameClient/Assets/Game/HotUpdate/Data/VO/CollectPartData.cs
  20. 11 0
      GameClient/Assets/Game/HotUpdate/Data/VO/CollectPartData.cs.meta
  21. 2 1
      GameClient/Assets/Game/HotUpdate/Data/VO/ItemData.cs
  22. 23 0
      GameClient/Assets/Game/HotUpdate/DressUp/SceneController.cs
  23. 77 43
      GameClient/Assets/Game/HotUpdate/ETCodes/Hotfix/App/Login/LoginHelper.cs
  24. 0 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityAfternoonTea/UI_ActivityTeaVisitUI.cs
  25. 80 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button12.cs
  26. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button12.cs.meta
  27. 80 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button13.cs
  28. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button13.cs.meta
  29. 0 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_ZCJBBuyTips.cs
  30. 3 2
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_ZGTHgiftDCTipsUI.cs
  31. 3 2
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_ZGTHgiftTipsUI.cs
  32. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Card/UI_CardFosterUI.cs
  33. 9 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CardSynthetic/UI_CardSyntheticUI.cs
  34. 2 2
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingSynthetic/UI_ClothingSyntheticListUI.cs
  35. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_Button123.cs
  36. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_Button123.cs.meta
  37. 83 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingAnsweringUI.cs
  38. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingAnsweringUI.cs.meta
  39. 15 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingSelectUI.cs
  40. 29 14
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingUpgradeUI.cs
  41. 12 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_clothingSelectItem.cs
  42. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_PhotographSaveUI.cs
  43. 6 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/LuckyBox/UI_LuckyBoxUI.cs
  44. 13 13
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_Button6.cs
  45. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_Button6.cs.meta
  46. 3 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_ButtonModleEffect.cs
  47. 9 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_ListCardFightItem.cs
  48. 23 13
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_MainUI.cs
  49. 6 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_StoryDialogUI.cs
  50. 9 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/RoleInfo/UI_ComBtn.cs
  51. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/RoleInfo/UI_RoleInfoUI.cs
  52. 8 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Share.meta
  53. 110 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Share/UI_ShareUI.cs
  54. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Share/UI_ShareUI.cs.meta
  55. 4 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/XiuFang/UI_Component.cs
  56. 4 1
      GameClient/Assets/Game/HotUpdate/Game.HotUpdate.asmdef
  57. 3 6
      GameClient/Assets/Game/HotUpdate/HotUpdateDriver.cs
  58. 265 0
      GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManager.cs
  59. 11 0
      GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManager.cs.meta
  60. 84 28
      GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs
  61. 3 0
      GameClient/Assets/Game/HotUpdate/Platform/ShareSDK.meta
  62. 124 0
      GameClient/Assets/Game/HotUpdate/Platform/ShareSDK/QDShareManager.cs
  63. 3 0
      GameClient/Assets/Game/HotUpdate/Platform/ShareSDK/QDShareManager.cs.meta
  64. 66 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/CollegeSproxy.cs
  65. 11 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/CollegeSproxy.cs.meta
  66. 2 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/RoleInfoSProxy.cs
  67. 32 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/ShareRecordSProxy.cs
  68. 3 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/ShareRecordSProxy.cs.meta
  69. 16 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/ShareSProxy.cs
  70. 11 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/ShareSProxy.cs.meta
  71. 1 1
      GameClient/Assets/Game/HotUpdate/ServerProxy/TimeTracingSProxy.cs
  72. 2 6
      GameClient/Assets/Game/HotUpdate/Utils/LogUtil.cs
  73. 5 0
      GameClient/Assets/Game/HotUpdate/Utils/ResPathUtil.cs
  74. 2 5
      GameClient/Assets/Game/HotUpdate/Views/ActivityAfternoonTea/ActivitySyntheticView.cs
  75. 2 5
      GameClient/Assets/Game/HotUpdate/Views/ActivityAfternoonTea/ActivityTeaMainView.cs
  76. 6 13
      GameClient/Assets/Game/HotUpdate/Views/ActivityAfternoonTea/ActivityTeaVisitView.cs
  77. 3 5
      GameClient/Assets/Game/HotUpdate/Views/ActivityHuaRongDao/ActivityHuaRongDaoEntryView.cs
  78. 1 1
      GameClient/Assets/Game/HotUpdate/Views/ActivityHuaRongDao/ActivityHuaRongDaoView.cs
  79. 2 2
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/ZCJBBuyTipsView.cs
  80. 25 9
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/ZGTHgiftDCTipsView.cs
  81. 24 10
      GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/ZGTHgiftTipsView.cs
  82. 1 1
      GameClient/Assets/Game/HotUpdate/Views/Card/CardDetailView.cs
  83. 7 3
      GameClient/Assets/Game/HotUpdate/Views/Card/CardFosterView.cs
  84. 27 0
      GameClient/Assets/Game/HotUpdate/Views/Card/CardSyntheticView.cs
  85. 142 0
      GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingAnsweringView.cs
  86. 11 0
      GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingAnsweringView.cs.meta
  87. 168 7
      GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingSelectView.cs
  88. 186 4
      GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingUpgradeView.cs
  89. 1 0
      GameClient/Assets/Game/HotUpdate/Views/Common/Controller/LuckyBoxController.cs
  90. 7 1
      GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographSaveView.cs
  91. 3 2
      GameClient/Assets/Game/HotUpdate/Views/FieldGuide/SuitGuideListView.cs
  92. 4 2
      GameClient/Assets/Game/HotUpdate/Views/InstanceZones/InstanceZonesView.cs
  93. 54 20
      GameClient/Assets/Game/HotUpdate/Views/Login/LoginView.cs
  94. 49 19
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxBonusShowView.cs
  95. 2 0
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxVideoView.cs
  96. 48 17
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs
  97. 20 0
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs
  98. 1 1
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterListView.cs
  99. 7 1
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterView.cs
  100. 72 10
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryDialogView.cs

+ 7 - 0
.gitignore

@@ -48,3 +48,10 @@
 /GameClient/Assets/Plugins/Android/AndroidManifest.xml
 /GameClient/Assets/Plugins/Android/AndroidManifest.xml.meta
 /GameClient/ProjectSettings/ProjectSettings.asset
+/GameClient/.idea/.idea.GameClient/.idea/indexLayout.xml
+/GameClient/Assets/Plugins/Android/libs/douyou-release.aar
+/GameClient/Assets/Plugins/Android/libs/douyou-release.aar.meta
+/GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar
+/GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar.meta
+/GameClient/Assets/Plugins/com/easy/bridge/DouYouMainActivity.java
+/GameClient/Assets/Plugins/com/easy/bridge/DouYouMainActivity.java.meta

+ 1 - 1
GameClient/Assets/Icons.meta → GameClient/Assets/Demo.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: a6953a2349995cd41b3bdf12dfa52e21
+guid: 5385286e227ca4f5f8a440d911f5f233
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 800 - 0
GameClient/Assets/Demo/Demo.cs

@@ -0,0 +1,800 @@
+using UnityEngine;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using cn.sharesdk.unity3d;
+using LitJson;
+public class Demo : MonoBehaviour {
+
+	public GUISkin demoSkin;
+	public ShareSDK ssdk;
+	
+	public MobSDK mobsdk;
+	
+	// Use this for initialization
+	void Start ()
+	{	
+		ssdk = gameObject.GetComponent<ShareSDK>();
+		ssdk.authHandler = OnAuthResultHandler;
+		ssdk.shareHandler = OnShareResultHandler;
+		ssdk.showUserHandler = OnGetUserInfoResultHandler;
+		ssdk.getFriendsHandler = OnGetFriendsResultHandler;
+		ssdk.followFriendHandler = OnFollowFriendResultHandler;
+		ssdk.clientValidForAndroidHandler = onIsClientValidForAndroid;
+
+		mobsdk = gameObject.GetComponent<MobSDK>();
+        #if UNITY_ANDROID
+		//ShareSDKRestoreScene.setRestoreSceneListener(OnRestoreScene);
+		
+        #elif UNITY_IPHONE
+		mobsdk.getPolicy = OnFollowGetPolicy;
+        ssdk.wxRequestHandler = GetWXRequestTokenResultHandler;
+        //ShareSDKRestoreScene.setRestoreSceneListener(OnRestoreScene);
+        #endif
+
+    }
+
+	// Update is called once per frame
+	void Update () 
+	{
+		if (Input.GetKeyDown(KeyCode.Escape)) {
+			Application.Quit();
+		}
+	}
+	
+	void OnGUI ()
+	{
+
+		GUI.skin = demoSkin;
+		
+		float scale = 1.0f;
+
+		if (Application.platform == RuntimePlatform.IPhonePlayer)
+		{
+			scale = Screen.width / 320;
+		}
+		
+		//float btnWidth = 165 * scale;
+		float btnWidth= Screen.width / 5 * 2;
+        float btnWidth2 = btnWidth + 80 * scale;
+
+        float btnHeight = Screen.height / 25;
+		float btnTop = 30 * scale;
+		float btnGap = 20 * scale;
+		GUI.skin.button.fontSize = Convert.ToInt32(13 * scale);
+
+		if (GUI.Button(new Rect((Screen.width - btnGap) / 2 - btnWidth, btnTop, btnWidth, btnHeight), "Authorize"))
+		{
+			print(ssdk == null);
+
+#if UNITY_ANDROID
+		    ssdk.Authorize(PlatformType.SinaWeibo);
+#elif UNITY_IPHONE
+            ssdk.Authorize(PlatformType.Twitter);
+#endif
+		}
+
+		if (GUI.Button(new Rect((Screen.width - btnGap) / 2 + btnGap, btnTop, btnWidth, btnHeight), "Get User Info"))
+		{
+            //ssdk.GetUserInfo(PlatformType.Douyin);
+
+            //print("share result :" + ssdk.GetUserInfo(PlatformType.WeChat));
+			print("share result :" + ssdk.Authorize(PlatformType.WeChat));
+			
+			
+			//print("share result : " + ssdk.GetUserInfo(PlatformType.GooglePlus));
+        }
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnGap) / 2 - btnWidth, btnTop, btnWidth, btnHeight), "Show Share Menu"))
+		{
+            	ShareContent content = new ShareContent();
+
+            //	//(Android only) 隐藏九宫格里面不需要用到的平台(仅仅是不显示平台)
+            //	//(Android only) 也可以把jar包删除或者把Enabl属性e改成false(对应平台的全部功能将用不了)
+                String[] platfsList = {((int)PlatformType.Facebook).ToString(), ((int)PlatformType.TencentWeibo).ToString()};
+            	content.SetHidePlatforms (platfsList);
+
+            	content.SetText("this is a test string.");
+				content.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+				content.SetUrl("https://www.mob.com");
+            	content.SetTitle("test title");
+				content.SetDouyin_shareActionMode(1);
+
+            //(Android only) 针对Android绕过审核的多图分享,传图片String数组 
+            //String[] imageArray =  {"/sdcard/test.jpg", "http://f1.webshare.mob.com/dimgs/1c950a7b02087bf41bc56f07f7d3572c11dfcf36.jpg", "/sdcard/test.jpg"};
+            //content.SetImageArray (imageArray);
+
+            //content.SetTitleUrl("https://www.baidu.com/");
+            //content.SetSite("Test site params test test");
+            //content.SetSiteUrl("https://www.baidu.com/");
+            //content.SetUrl("https://www.baidu.com/");
+            //content.SetComment("test description");
+            //content.SetMusicUrl("http://i.y.qq.com/v8/playsong.html?hostuin=0&songid=&songmid=002x5Jje3eUkXT&_wv=1&source=qq&appshare=iphone&media_mid=002x5Jje3eUkXT");
+
+            content.SetShareType(ContentType.Image);
+
+			//不同平台分享不同内容
+			//ShareContent customizeShareParams = new ShareContent();
+			//customizeShareParams.SetText("Sina share content");
+			//customizeShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			//customizeShareParams.SetShareType(ContentType.Text);
+			//customizeShareParams.SetObjectID("SinaID");
+			//content.SetShareContentCustomize(PlatformType.SinaWeibo, customizeShareParams);
+
+			//KakaoTalk原生只支持分享链接
+			ShareContent kakaoTalkCustomizeShareParams = new ShareContent();
+			kakaoTalkCustomizeShareParams.SetUrl("http://www.mob.com");
+			kakaoTalkCustomizeShareParams.SetShareType(ContentType.Webpage);
+			kakaoTalkCustomizeShareParams.SetTemplateId("11820");
+			content.SetShareContentCustomize(PlatformType.KakaoTalk, kakaoTalkCustomizeShareParams);
+
+			//KakaoStory分享图片
+			ShareContent kakaoStoryCustomizeShareParams = new ShareContent();
+			kakaoStoryCustomizeShareParams.SetText("");
+			kakaoStoryCustomizeShareParams.SetTitle("http://www.mob.com");
+			kakaoStoryCustomizeShareParams.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			kakaoStoryCustomizeShareParams.SetUrl("");
+			kakaoStoryCustomizeShareParams.SetPermission("0");
+			kakaoStoryCustomizeShareParams.SetEnableShare(true);
+
+			Hashtable androidExecParams = new Hashtable();
+			androidExecParams["andParam1"] = "value1";
+			androidExecParams["andParam2"] = "value2";
+			kakaoStoryCustomizeShareParams.SetAndroidExecParam(androidExecParams);
+
+			Hashtable iOSExecParams = new Hashtable();
+			iOSExecParams["iosParam1"] = "value1";
+			iOSExecParams["iosParam2"] = "value2";
+			kakaoStoryCustomizeShareParams.SetIphoneExecParam(iOSExecParams);
+
+			kakaoStoryCustomizeShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.KakaoStory, kakaoStoryCustomizeShareParams);
+
+			//TikTok分享多图
+			String[] imageArray = { "http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg", "http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg" };
+			ShareContent tiktokCustomizeShareParams = new ShareContent();
+			tiktokCustomizeShareParams.SetImageArray(imageArray);
+			tiktokCustomizeShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.TikTok, tiktokCustomizeShareParams);
+			
+#if UNITY_IPHONE
+			//SnapChat分享图片
+			ShareContent snapChatShareParams = new ShareContent();
+			snapChatShareParams.SetTitle("https://www.mobtech.com");
+			snapChatShareParams.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			snapChatShareParams.setSnapStickerImage("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			snapChatShareParams.setSnapStickerAnimated(0);
+			snapChatShareParams.setSnapStickerRotation(0);
+			snapChatShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.SnapChat, snapChatShareParams);
+            //快手SDK-分享私信
+            ShareContent ksShareParams = new ShareContent();
+            ksShareParams.SetTitle("title");
+            ksShareParams.SetDesc("desc");
+            ksShareParams.SetLinkURL("https://www.mob.com");
+            ksShareParams.SetThumbImageUrl("http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");
+            ksShareParams.SetExtraInfo("message");
+            ksShareParams.SetShareType(ContentType.Message);
+			content.SetShareContentCustomize(PlatformType.KuaiShou, ksShareParams);
+#endif
+
+			//抖音-分享系统视频
+			//ShareContent dyShareParams = new ShareContent();
+			//dyShareParams.SetAssetLocalIdsArray();  //此处应传入从相册取得的图片或者视频文件的Assetlocalidentifier集合
+			//dyShareParams.SetDouyinHashtag("hastag");
+			//Hashtable extraInfo = new Hashtable();
+			//extraInfo["iosParam1"] = "value1";
+			//extraInfo["iosParam2"] = "value2";
+			//dyShareParams.SetDouyin_extraInfo(extraInfo);
+			//dyShareParams.SetShareType(ContentType.Video);
+			//content.SetShareContentCustomize(PlatformType.Douyin, dyShareParams);
+
+			//Facebook分享图片
+			ShareContent fbShareParams = new ShareContent();
+			fbShareParams.SetText("text");
+			fbShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			fbShareParams.setFacebookShareType(FacebookShareType.Native);
+			fbShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.Facebook, fbShareParams);
+
+			//FacebookMessenger分享图片
+			ShareContent messShareParams = new ShareContent();
+			messShareParams.SetTitle("title");
+			messShareParams.SetUrl("http://www.mob.com");
+			messShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			messShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.FacebookMessenger, messShareParams);
+
+			//Instagram分享图片
+			ShareContent insShareParams = new ShareContent();
+			insShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			insShareParams.SetMenuX(0);
+			insShareParams.SetMenuY(0);
+			content.SetShareContentCustomize(PlatformType.Instagram, insShareParams);
+
+			//LinkedIn分享链接
+			ShareContent linkedInShareParams = new ShareContent();
+			linkedInShareParams.SetTitle("title");
+			linkedInShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			linkedInShareParams.SetUrl("http://www.mob.com");
+			linkedInShareParams.SetTitle("title");
+			linkedInShareParams.SetDesc("desc");
+			linkedInShareParams.SetShareType(ContentType.Webpage);
+			content.SetShareContentCustomize(PlatformType.LinkedIn, linkedInShareParams);
+
+
+			//Instapaper分享链接
+			ShareContent instapapaerShareParams = new ShareContent();
+			instapapaerShareParams.SetTitle("title");
+			instapapaerShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			instapapaerShareParams.SetUrl("http://www.mob.com");
+			instapapaerShareParams.SetTitle("title");
+			instapapaerShareParams.SetShareType(ContentType.Webpage);
+			content.SetShareContentCustomize(PlatformType.Instapaper, instapapaerShareParams);
+
+			//Pocket分享链接
+			ShareContent pocketShareParams = new ShareContent();
+			pocketShareParams.SetTitle("title");
+			pocketShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			pocketShareParams.SetUrl("http://www.mob.com");
+			pocketShareParams.SetTitle("title");
+			pocketShareParams.SetShareType(ContentType.Webpage);
+			content.SetShareContentCustomize(PlatformType.Pocket, pocketShareParams);
+
+			//有道分享图片
+			ShareContent youdaoShareParams = new ShareContent();
+			youdaoShareParams.SetText("text");
+			youdaoShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			youdaoShareParams.SetTitle("title");
+			youdaoShareParams.SetSource("MOB");
+			youdaoShareParams.SetAuthor("mob");
+			content.SetShareContentCustomize(PlatformType.YouDaoNote, youdaoShareParams);
+
+#if UNITY_IPHONE
+			//Dropbox分享图片
+			ShareContent dropboxShareParams = new ShareContent();
+			//dropboxShareParams.SetAttachmentPath("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			var files = System.IO.Directory.GetFiles(Application.dataPath, "cat.mp4", System.IO.SearchOption.AllDirectories);
+			string filePath = files[0];
+			dropboxShareParams.SetAttachmentPath(filePath);
+			content.SetShareContentCustomize(PlatformType.Dropbox, dropboxShareParams);
+#endif
+			//明道分享链接
+			ShareContent mingdaoShareParams = new ShareContent();
+			mingdaoShareParams.SetTitle("title");
+			mingdaoShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			mingdaoShareParams.SetUrl("http://www.mob.com");
+			mingdaoShareParams.SetTitle("title");
+			mingdaoShareParams.SetShareType(ContentType.Webpage);
+			content.SetShareContentCustomize(PlatformType.MingDao, mingdaoShareParams);
+
+
+			//绿洲分享图片
+			ShareContent oasisShareParams = new ShareContent();
+			oasisShareParams.SetTitle("title");
+			oasisShareParams.SetText("text");
+			oasisShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			oasisShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.Oasis, oasisShareParams);
+
+
+			//telegram分享图片
+			ShareContent telegramShareParams = new ShareContent();
+			telegramShareParams.SetText("text");
+			telegramShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+			telegramShareParams.SetShareType(ContentType.Image);
+			content.SetShareContentCustomize(PlatformType.Telegram, telegramShareParams);
+
+			////Tumblr分享视频
+			//ShareContent tumblrShareParams = new ShareContent();
+			//var files = System.IO.Directory.GetFiles(Application.dataPath, "cat.mp4", System.IO.SearchOption.AllDirectories);
+			//string filePath = files[0];
+			//tumblrShareParams.SetTitle("title");
+			//tumblrShareParams.SetMediaDataPath(filePath);
+			//tumblrShareParams.SetShareType(ContentType.Video);
+			//content.SetShareContentCustomize(PlatformType.Tumblr, tumblrShareParams);
+
+			//优先客户端分享
+			content.SetEnableClientShare(true);
+                
+            //使用微博API接口应用内分享 iOS only
+            //content.SetEnableSinaWeiboAPIShare(true);
+
+            //通过分享菜单分享
+            ssdk.ShowPlatformList (null, content, 100, 100);
+
+		}
+			
+		if (GUI.Button(new Rect((Screen.width - btnGap) / 2 + btnGap, btnTop, btnWidth, btnHeight), "Show Share View"))
+		{
+			ShareContent content = new ShareContent();
+			content.SetText("this is a test string.");
+			content.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			content.SetTitle("test title");
+			content.SetTitleUrl("http://www.mob.com");
+			content.SetSite("Mob-ShareSDK");
+			content.SetSiteUrl("http://www.mob.com");
+			content.SetUrl("http://www.mob.com");
+			content.SetComment("test description");
+			content.SetMusicUrl("http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3");
+			content.SetShareType(ContentType.Image);
+
+			ssdk.ShowShareContentEditor (PlatformType.SinaWeibo, content);
+		}
+#if UNITY_ANDROID
+
+#elif UNITY_IPHONE
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "Share With Activity"))
+		{
+			//系统分享示例
+			ShareContent content = new ShareContent();
+			content.SetText("this is a test string.");
+			content.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			content.SetTitle("test title");
+			content.SetTitleUrl("http://www.mob.com");
+			content.SetUrl("http://www.mob.com");
+			content.SetShareType(ContentType.Image);
+			ssdk.ShareContentWithActivity (PlatformType.WeChat, content);
+		}
+#endif
+
+
+
+		btnTop += btnHeight + 20 * scale;
+        if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "Share Content"))
+		{
+
+            //抖音-分享本地视频
+            ShareContent content = new ShareContent();
+			//var files = System.IO.Directory.GetFiles(Application.dataPath, "cat.mp4", System.IO.SearchOption.AllDirectories);
+			//string filePath = files[0];
+			//content.SetUrl(filePath);
+			//分享图片到IM
+			content.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
+			content.SetShareType(ContentType.Image);
+			content.SetDouyin_shareActionMode(1);
+            ssdk.ShareContent(PlatformType.Douyin, content);
+
+            /*iOS Only*/
+
+            ////※单个平台的分享示例如下※:
+
+            ////调用公用参数构造方法的,通过如下方式,如TikTok分享多图
+            //String[] imageArray = { "http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg", "http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg" };
+            //content.SetImageArray(imageArray);
+            //content.SetShareType(ContentType.Image);
+            //ssdk.ShareContent(PlatformType.TikTok, content);
+
+
+            ////调用自定义的参数构造方法的,需要通过如下方式,如:KakaoTalk
+            //ShareContent customizeShareParams = new ShareContent();
+            //customizeShareParams.SetUrl("http://www.mob.com");
+            //customizeShareParams.SetShareType(ContentType.Webpage);
+            //customizeShareParams.SetTemplateId("11820");
+            //content.SetShareContentCustomize(PlatformType.KakaoTalk, customizeShareParams);
+            //ssdk.ShareContent(PlatformType.KakaoTalk, content);
+
+            ////快手SDK-分享私信
+            //ShareContent ksShareParams = new ShareContent();
+            //ksShareParams.SetTitle("title");
+            //ksShareParams.SetDesc("desc");
+            //ksShareParams.SetLinkURL("https://www.mob.com");
+            //ksShareParams.SetThumbImageUrl("http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");
+            //ksShareParams.SetExtraInfo("message");
+            //ksShareParams.SetShareType(ContentType.Message);
+            //content.SetShareContentCustomize(PlatformType.KuaiShou, ksShareParams);
+            //ssdk.ShareContent(PlatformType.KuaiShou, content);
+
+            ////reddit分享链接
+            //ShareContent redditShareParams = new ShareContent();
+            //redditShareParams.SetText("text");
+            //redditShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
+            //redditShareParams.SetUrl("https://www.mob.com");
+            //redditShareParams.SetTitle("title");
+            //redditShareParams.SetShareType(ContentType.Webpage);
+            //content.SetShareContentCustomize(PlatformType.Reddit, redditShareParams);
+
+
+            // ShareContent content = new ShareContent();
+            // content.SetText("Test text");
+            // content.SetImageUrl("http://pic28.photophoto.cn/20130818/0020033143720852_b.jpg");
+            // ssdk.ShareContent (PlatformType.Twitter, content);
+
+        }
+
+		//if (GUI.Button(new Rect((Screen.width - btnGap) / 2 + btnGap, btnTop, btnWidth, btnHeight), "Get Friends SinaWeibo "))
+		//{
+		//获取新浪微博好友,第一页,每页15条数据
+		//print ("Click Btn Of Get Friends SinaWeibo");
+		//			ssdk.GetFriendList (PlatformType.SinaWeibo, 15, 0);
+		//ssdk.openMiniProgram("gh_afb25ac019c9","pages/index/index",0);
+		//}
+
+		btnTop += btnHeight + 20 * scale;
+        if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "Get Token "))
+		{
+			Hashtable authInfo = ssdk.GetAuthInfo (PlatformType.WeChat);			
+			print ("share result :");
+			print (MiniJSON.jsonEncode(authInfo));
+		}
+			
+		//if (GUI.Button(new Rect((Screen.width - btnGap) / 2 + btnGap , btnTop, btnWidth, btnHeight), "Close SSO Auth"))
+		//{
+			//ssdk.DisableSSO (true);			
+		//}
+
+		btnTop += btnHeight + 20 * scale;
+        if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "Remove Authorize "))
+		{
+			ssdk.CancelAuthorize (PlatformType.WeChat);			
+		}
+
+        //if (GUI.Button(new Rect((Screen.width - btnGap) / 2 + btnGap, btnTop, btnWidth, btnHeight), "Add Friend "))
+        //{
+        //关注新浪微博
+        //ssdk.AddFriend (PlatformType.SinaWeibo, "3189087725");			
+        //}
+
+        btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "ShareWithContentName(iOS only)"))
+		{
+			Hashtable customFields = new Hashtable ();
+			customFields["imgUrl"] = "http://ww1.sinaimg.cn/mw690/006dJESWgw1f6iyb8bzraj31kw0v67a2.jpg";
+			//根据配置文件分享【本接口功能仅暂时支持iOS】
+			ssdk.ShareWithContentName(PlatformType.SinaWeibo, "ShareSDK", customFields);		
+		}
+
+		//btnTop += btnHeight + 20 * scale;
+		//if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "ShowShareMenuWithContentName(iOS only)"))
+		//{
+		//	Hashtable customFields = new Hashtable ();
+		//	customFields["imgUrl"] = "http://ww1.sinaimg.cn/mw690/006dJESWgw1f6iyb8bzraj31kw0v67a2.jpg";
+		//	//根据配置文件展示分享菜单分享【本接口功能仅暂时支持iOS】
+		//	ssdk.ShowPlatformListWithContentName ("ShareSDK", customFields, null, 100, 100);
+		//}
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "ShowShareViewWithContentName(iOS only)"))
+		{
+			Hashtable customFields = new Hashtable ();
+			//根据配置文件展示编辑界面分享【本接口功能仅暂时支持iOS】
+			customFields["imgUrl"] = "http://ww1.sinaimg.cn/mw690/006dJESWgw1f6iyb8bzraj31kw0v67a2.jpg";
+			ssdk.ShowShareContentEditorWithContentName(PlatformType.SinaWeibo, "ShareSDK", customFields);		
+		}
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "SMS Authorize(Android only)"))
+		{
+			ssdk.Authorize(PlatformType.SMS);		
+		}
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "submitPolicyGrantResult"))
+		{
+			
+			Debug.Log("ssdk ======> " + ssdk);
+			Debug.Log("mobsdk ======> " + mobsdk);
+			
+			mobsdk.submitPolicyGrantResult(true);
+			Debug.Log("mobsdk submitPolicyGrantResult======> " + mobsdk.submitPolicyGrantResult(true).ToString());
+		}
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "getPrivacyPolicy"))
+		{
+			
+			Debug.Log("ssdk ======> " + ssdk);
+			Debug.Log("mobsdk ======> " + mobsdk);
+			#if UNITY_IPHONE
+            mobsdk.getPrivacyPolicy(true,mobsdk.getDeviceCurrentLanguage());
+#elif UNITY_ANDROID
+			mobsdk.getPrivacyPolicy(true, "en");
+			Debug.Log("mobsdk getPrivacyPolicy======> " + mobsdk.getPrivacyPolicy(true, "en"));
+#endif
+		}
+
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "Open wxMiniProgram(iOS only)"))
+		{
+#if UNITY_IPHONE
+			ssdk.openMiniProgram("gh_afb25ac019c9", "pages/index/index", 0);
+#elif UNITY_ANDROID
+#endif
+
+		}
+
+		btnTop += btnHeight + 20 * scale;
+		if (GUI.Button(new Rect((Screen.width - btnGap) / 2 - btnWidth, btnTop, btnWidth, btnHeight), "Share wxMiniProgram"))
+		{
+#if UNITY_IPHONE
+            ShareContent content = new ShareContent ();
+			content.SetTitle ("MiniProgram");
+			content.SetText ("test MiniProgram");
+			content.SetUrl("http://www.mob.com");
+			content.SetMiniProgramPath ("pages/index/index");
+			content.SetThumbImageUrl ("http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");
+			content.SetMiniProgramHdThumbImage ("http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");
+			content.SetMiniProgramUserName ("gh_afb25ac019c9");
+			content.SetMiniProgramWithShareTicket (true);
+            // iOS/Android 微信小程序的版本(0-正式,1-开发,2-体验)
+            content.SetMiniProgramType (0);
+			content.SetShareType (ContentType.MiniProgram);
+
+			ShareContent shareContent = new ShareContent ();
+			shareContent.SetShareContentCustomize (PlatformType.WeChat, content);
+			ssdk.ShareContent (PlatformType.WeChat, shareContent);
+#elif UNITY_ANDROID
+            ShareContent content = new ShareContent ();
+            content.SetTitle ("MiniProgram");
+            content.SetText ("test MiniProgram");
+            content.SetUrl("http://www.mob.com");
+            content.SetMiniProgramType (0);
+            content.SetMiniProgramUserName ("gh_52568203455c");
+            content.SetImageUrl("http://pic28.photophoto.cn/20130818/0020033143720852_b.jpg");
+            content.SetShareType (ContentType.MiniProgram);
+            
+            ShareContent shareContent = new ShareContent ();
+			shareContent.SetShareContentCustomize (PlatformType.WeChat, content);
+			ssdk.ShareContent (PlatformType.WeChat, shareContent);
+#endif
+		}
+
+      btnTop += btnHeight + 20 * scale;
+        if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "isClientValidForAndroid -QQ"))
+      {
+         ssdk.isClientValidForAndroid(PlatformType.QQ);
+      }
+
+
+      btnTop += btnHeight + 20 * scale;
+      if (GUI.Button(new Rect((Screen.width - btnGap) / 2 + btnGap, btnTop, btnWidth, btnHeight), "Share qqMiniProgram(iOS only)"))
+        {
+#if UNITY_IPHONE
+            ShareContent content = new ShareContent();
+            content.SetTitle("MiniProgram");
+            content.SetText("test MiniProgram");
+            content.SetUrl("http://www.mob.com");
+            content.SetThumbImageUrl("http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");
+            content.SetMiniProgramPath("pages/index/index");
+            content.SetMiniProgramHdThumbImage("http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");
+            content.SetMiniProgramAppID("1109762672");
+            content.SetMiniProgramWebpageUrl("www.qq.com");
+            //iOS/Android QQ小程序的类型,默认正式版(3),可选测试版(1)、预览版(4)
+            content.SetMiniProgramType(3);
+            content.SetShareType(ContentType.MiniProgram);
+
+            ShareContent shareContent = new ShareContent();
+            shareContent.SetShareContentCustomize(PlatformType.QQ, content);
+            ssdk.ShareContent(PlatformType.QQ, shareContent);
+
+#elif UNITY_ANDROID
+            //===============================================================
+            //when you test QQ miniprogram, you should use this params
+            //At the same time, the package name and signature should 
+            //correspond to the package name signature of the specific 
+            //QQ sharing small program applied in the background of tencent
+            //===============================================================
+            //ShareContent content = new ShareContent();
+            //content.SetTitle("MiniProgram");
+            //content.SetText("test MiniProgram");
+            //content.SetTitleUrl("http://www.mob.com");
+            //content.SetImageUrl("http://www.3wyu.com/wp-content/uploads/6e0eaf15gy1fvr5tnm2dfj20f108gtad.jpg");//必须为网络图片
+            //content.SetShareType(ContentType.QQ_MINI_PROGRAM);
+            //content.SetMiniProgramAppID("1108318575");
+            //content.SetMiniProgramPath("page/share/index.html?share_name=QQ%E9%9F%B3%E4%B9%90&share_key=5aIqFGg&from=disk");
+            //content.SetQQMiniProgramType("");
+
+            //ShareContent shareContent = new ShareContent();
+            //shareContent.SetShareContentCustomize(PlatformType.QQ, content);
+            //ssdk.ShareContent(PlatformType.QQ, shareContent);
+#endif
+		}
+
+		//btnTop += btnHeight + 20 * scale;
+		//if (GUI.Button(new Rect((Screen.width - btnWidth2) / 2, btnTop, btnWidth2, btnHeight), "Share Sina LinkCard"))
+		//{
+		//#if UNITY_IPHONE
+		//ShareContent content = new ShareContent();
+		//content.SetText("sina LinkCard");
+		//content.SetUrl("http://www.mob.com");
+		//content.SetImageUrl("http://www.mob.com/assets/images/ShareSDK_pic_1-09d293a6.png");//必须为网络图片
+		//content.SetSinaLinkCard(true);
+		//content.SetSinaCardTitle("这是Title");
+		//content.SetSinaCardSummary("这是Summary");
+		//content.SetShareType(ContentType.Webpage);
+
+		//ShareContent shareContent = new ShareContent();
+		//shareContent.SetShareContentCustomize(PlatformType.SinaWeibo, content);
+		//ssdk.ShareContent(PlatformType.SinaWeibo, shareContent);
+
+
+		//#elif UNITY_ANDROID
+		//JsonData jsonData = new JsonData();
+		//jsonData["url"] = "http://wx4.sinaimg.cn/large/006WfoFPly1fq0jo9svnaj30dw0dwdhv.jpg";
+		//jsonData["width"] = "120";
+		//jsonData["height"] = "120";
+
+
+		//ShareContent content = new ShareContent();
+		//content.SetText("sina LinkCard");
+		//content.SetSinaCardCreateAtAndroid("2019-01-24");
+		//content.SetSinaCardDisplayNameAndroid("displayName");
+		//content.SetSinaCardSummary("Summary");
+		//content.SetSinaCardURLAndroid("http://www.mob.com/");
+		//content.SetSinaCardTypeAndroid("webpage");
+		//content.SetSinaCardImageAndroid(jsonData);
+		//content.SetEnableClientShare(true);
+
+		//ShareContent shareContent = new ShareContent();
+		//shareContent.SetShareContentCustomize(PlatformType.SinaWeibo, content);
+
+		//ssdk.ShareContent(PlatformType.SinaWeibo, shareContent);
+		//#endif
+		//}
+	}
+	
+	void OnAuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
+	{
+		if (state == ResponseState.Success)
+		{
+			if (result != null && result.Count > 0) {
+				print ("authorize success !" + "Platform :" + type + "result:" + MiniJSON.jsonEncode(result));
+			} else {
+				print ("authorize success !" + "Platform :" + type);
+			}
+		}
+		else if (state == ResponseState.Fail)
+		{
+#if UNITY_ANDROID
+			print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
+#elif UNITY_IPHONE
+			print ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
+#endif
+		}
+		else if (state == ResponseState.Cancel) 
+		{
+			print ("cancel !");
+		}
+	}
+	
+	void OnGetUserInfoResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)
+	{
+		if (state == ResponseState.Success)
+		{
+			print ("get user info result :");
+			print (MiniJSON.jsonEncode(result));
+            print ("AuthInfo:" + MiniJSON.jsonEncode (ssdk.GetAuthInfo (type)));
+			print ("Get userInfo success !Platform :" + type );
+		}
+		else if (state == ResponseState.Fail)
+		{
+#if UNITY_ANDROID
+			print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
+#elif UNITY_IPHONE
+			print ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
+#endif
+		}
+		else if (state == ResponseState.Cancel) 
+		{
+			print ("cancel !");
+		}
+	}
+	
+	void OnShareResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)
+	{
+		if (state == ResponseState.Success)
+		{
+			print ("share successfully - share result :");
+			print (MiniJSON.jsonEncode(result));
+		}
+		else if (state == ResponseState.Fail)
+		{
+#if UNITY_ANDROID
+			print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
+#elif UNITY_IPHONE
+			print ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
+#endif
+		}
+		else if (state == ResponseState.Cancel) 
+		{
+			print ("cancel !");
+		}
+	}
+
+	void OnGetFriendsResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)
+	{
+		if (state == ResponseState.Success)
+		{			
+			print ("get friend list result :");
+			print (MiniJSON.jsonEncode(result));
+		}
+		else if (state == ResponseState.Fail)
+		{
+#if UNITY_ANDROID
+			print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
+#elif UNITY_IPHONE
+			print ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
+#endif
+		}
+		else if (state == ResponseState.Cancel) 
+		{
+			print ("cancel !");
+		}
+	}
+
+	void OnFollowFriendResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)
+	{
+		if (state == ResponseState.Success)
+		{
+			print ("Follow friend successfully !");
+		}
+		else if (state == ResponseState.Fail)
+		{
+#if UNITY_ANDROID
+			print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
+#elif UNITY_IPHONE
+			print ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
+#endif
+		}
+		else if (state == ResponseState.Cancel) 
+		{
+			print ("cancel !");
+		}
+	}
+
+   void onIsClientValidForAndroid (int reqID, ResponseState state, PlatformType type, Hashtable result)
+   {
+      if (state == ResponseState.Success)
+      {
+         print ("IsClientValidForAndroid successfully !");
+          print ("IsClientValidForAndroid:" + MiniJSON.jsonEncode (MiniJSON.jsonEncode(result)));
+      }
+      else if (state == ResponseState.Fail)
+      {
+         print ("IsClientValidForAndroid Fail !");
+      }
+      else if (state == ResponseState.Cancel)
+      {
+         print ("cancel !");
+      }
+   }
+
+    public static void OnRestoreScene(RestoreSceneInfo scene)
+    {
+        Hashtable customParams = scene.customParams; 
+        if (customParams != null)
+        {
+            Debug.Log("[sharesdk-unity-Demo]OnRestoreScen(). path:" + scene.path.ToString() + ", params:" + scene.customParams.toJson());
+        }
+        else
+        {
+            Debug.Log("[sharesdk-unity-Demo]OnRestoreScen(). path:" + scene.path.ToString() + ", params:null");
+        }
+
+        //根据scene开发者自己处理场景转换
+        //SceneManager.LoadScene("SceneA");
+    }
+
+
+#if UNITY_IPHONE
+
+    public static void GetWXRequestTokenResultHandler(String authcode, sendWXRequestToken send)
+    {
+        Debug.Log("[GetWXRequestTokenResultHandler:" + authcode);
+        send("11", "22");
+    }
+
+    public static void GetWXRefreshTokenResultHandler(String uid, sendWXRefreshToken send)
+    {
+        send("11");
+    }
+#endif
+    //隐私协议回调
+	public static void OnFollowGetPolicy(string url)
+	{
+		Debug.Log("[OnFollowGetPolicy:" + url);
+	}
+}

+ 1 - 1
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_BtnBack0.cs.meta → GameClient/Assets/Demo/Demo.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: d055b393d18a66d4c998ef80dc39e70f
+guid: e94ace64ea93b4d60831774b3bfedaaf
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 2 - 2
GameClient/Assets/Editor/ToolsMenu.cs

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

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

@@ -71,6 +71,7 @@ namespace GFGGame
         public const string LOGIN_SUCCESS = "LOGIN_SUCCESS"; //登录成功
         public const string LOGIN_FAIL = "LOGIN_FAIL"; //登录失败
         public const string SERVER_CHANGE = "SERVER_CHANGE"; //更换区服
+        public const string OUT_LOGIN = "OUT_LOGIN"; //退出登录
 
         public const string FIELD_RESULT = "FIELD_RESULT"; //田野结算
         public const string FIELD_TASK = "FIELD_TASK"; //田野任务
@@ -130,6 +131,7 @@ namespace GFGGame
         public const string CONTINUOUS_REBATE_GIFT = "CONTINUOUS_REBATE_GIFT"; //领取连续返利礼包
         public const string CONTINUOUS_REBATE_GIFT_SHOP_BUY = "CONTINUOUS_REBATE_GIFT_SHOP_BUY";
         public const string ACTIVITY_LUCKY_BOX = "ACTIVITY_LUCKY_BOX"; //通知限时抽奖活动剩余次数
+        public const string LUCKY_EFFECT_UPDATE = "LUCKY_EFFECT_UPDATE";
 
         //通知活动移除
         public const string ACTIVITY_REMOVE = "ACTIVITY_REMOVE";
@@ -250,5 +252,7 @@ namespace GFGGame
         public const string STORYCHAPREDUPDATE = "STORYCHAP_RED_UPDATE";
         //新手领取套装
         public const string NEWROLEGETSUIT = "NEWROLE_GETSUIT";
+        //搭配学院升级成功
+        public const string COLLEGE_UPGRADE = "COLLEGE_UPGRADE";
     }
 }

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

@@ -140,6 +140,8 @@ namespace GFGGame
             await InstanceZonesSProxy.GetInstanceZonesInfos();
             await StorageSProxy.ReqGetClientValues();
             await RoleInfoSProxy.ReqPersonalInfo();
+
+            await CollegeSProxy.ReqCollectUpgradeInfo();
             //功能协议数据不要放这里获取,放在AfterEnterGame函数中
 
             GameGlobal.lastLoginTime = StorageDataManager.Instance.GetStorageValue(ConstStorageId.LAST_LOGIN_TIME);
@@ -291,6 +293,15 @@ namespace GFGGame
 
         public static void QuitToLoginView(bool logout, bool fromSdkLogoutCallback = false)
         {
+            switch (LauncherConfig.ChannelId)
+            {
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.LoginOutBefore();
+                    break;
+                default:
+                    break;
+            }
+
             FieldDataManager.Instance.waitToShowFieldFightEndView = false;
             GameGlobal.AutoSevenDayLoginView = true;
             GameGlobal.AutoDailySignView = true;
@@ -351,7 +362,7 @@ namespace GFGGame
             GameGlobal.zoneScene.GetComponent<AccountInfoComponent>()?.Clear();
             if (logout)
             {
-                    QDManager.Logout(fromSdkLogoutCallback);
+                    QDManager.Logout();
             }
             ViewManager.Hide<GuideView>();
             if(!ViewManager.isViewOpen(typeof(LoginView).FullName))

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

@@ -1,3 +1,4 @@
+using ET;
 using System.Collections.Generic;
 
 namespace GFGGame
@@ -358,5 +359,34 @@ namespace GFGGame
             }
 
         }
+
+        //根据创角时间判断活动是否开启
+        public bool CheckActivityByRoleTime(int id)
+        {
+           return ActivityGlobalDataManager.Instance.IsActivityOpen(id);
+            //ActivityOpenCfg item = ActivityOpenCfgArray.Instance.GetCfg(id);
+            //if (item == null || item.CreatTime == 0)
+            //{
+            //    return false;
+            //}
+            ////创角时间
+            //long time = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole().CreateTime;
+            //long laterTime = (TimeHelper.ServerNow() - time) / 1000 / 60;
+            //if (laterTime >= item.CreatTime && laterTime < (item.CreatTime + item.OpenLastTime))
+            //{
+            //    return true;
+            //}
+            //return false;
+        }
+        public long GetActivityTime(int id)
+        {
+            ActivityOpenCfg _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(id);
+            int endTime = (_activityCfg.AfterCreatRoleTime * 24 * 60) + _activityCfg.OpenLastTime;
+            endTime = endTime * 60;
+            long time = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole().CreateTime;
+            long laterTime = (TimeHelper.ServerNow() - time)/1000;
+            long curTime = (endTime - laterTime)* 1000;
+            return curTime;
+        }
     }
 }

+ 255 - 0
GameClient/Assets/Game/HotUpdate/Data/CollectPartDataManager.cs

@@ -0,0 +1,255 @@
+using ET;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Text.RegularExpressions;
+
+namespace GFGGame
+{
+    public class CollectPartDataManager : SingletonBase<CollectPartDataManager>
+    {
+        //部位数量
+        public const int Count = 8;
+        //普通最高段位
+        public int MaxNormalRank = 5;
+        //特殊最高段位
+        public int MaxSpecialRank = 3;
+        //最高等级
+        public int MaxLevel = 9;
+        //加成比值
+        public int AddtitionRatio = 100;
+        //搭配部位分类
+        public Dictionary<int, List<float>> partScoreListDic = new Dictionary<int, List<float>>();
+        //部位名
+        public Dictionary<int, string> partNameDic = new Dictionary<int, string>() 
+        {    [1] = "连衣裙或上下装及内搭",
+             [2] = "发型",
+             [3] = "外套",
+             [4] = "袜子",
+             [5] = "鞋子",
+             [6] = "饰品",
+             [7] = "手持物",
+             [99] = "所有",
+              };
+        //部位图片
+        public Dictionary<int, string> partImage = new Dictionary<int, string>
+        {
+            [1] = "part1",
+            [2] = "hz_fenleitu_1",
+            [3] = "hz_fenleitu_12",
+            [4] = "hz_fenleitu_7",
+            [5] = "hz_fenleitu_8",
+            [6] = "hz_fenleitu_9",
+            [7] = "hz_fenleitu_10",
+            [99] = "part99",
+        };
+        //数据
+        public Dictionary<int, List<int>> CollectPartDataDic = new Dictionary<int, List<int>>();
+
+        //临时数据,后续通过服务器获取
+        public void UpdateDic()
+        {
+            CollectPartDataDic.Clear();
+            CollegeBoostCfg collectcfg;
+            for (int i = 1; i <= Count; i++)
+            {
+                List<int> item = new List<int>() { 3, 9 };
+                if (i == Count)
+                {
+                    collectcfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(99, item[0], item[1]);
+                    if (collectcfg == null)
+                    {
+                        item.Add(0);
+                    }
+                    else
+                    {
+                        item.Add(collectcfg.value);
+                    }
+                    if (CollectPartDataDic.ContainsKey(99))
+                    {
+                        CollectPartDataDic[99] = item;
+                    }
+                    else
+                    {
+                        CollectPartDataDic.Add(99, item);
+                    }
+                }
+                else
+                {
+                    collectcfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(i, item[0], item[1]);
+                    if (collectcfg == null)
+                    {
+                        item.Add(0);
+                    }
+                    else
+                    {
+                        item.Add(collectcfg.value);
+                    }
+                    if (CollectPartDataDic.ContainsKey(i))
+                    {
+                        CollectPartDataDic[i] = item;
+                    }
+                    else
+                    {
+                        CollectPartDataDic.Add(i, item);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 穿戴部件的搭配加成
+        /// </summary>
+        public float GetEquipScoresWithPartId(int itemID)
+        {
+            CollegeSubTypesCfg[] typeCfgs = CollegeSubTypesCfgArray.Instance.dataArray;
+            float addNum = 0;
+            for (int j = 0; j < typeCfgs.Length; j++)
+            {
+                CollegeSubTypesCfg cfg = typeCfgs[j];
+                for (int k = 0; k < cfg.subTypesArr.Length; k++)
+                {
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
+                    if (itemCfg.subType == cfg.subTypesArr[k])
+                    {
+                        int partIndex = cfg.AdditionSite;
+                        int partIndexCommon = 0;
+                        partIndexCommon = partIndex;
+                        int level = CollectPartDataDic[partIndex][0];
+                        int levelNum = CollectPartDataDic[partIndex][1];
+                        if(levelNum == 0)
+                        {
+                            addNum += 0;
+                            break;
+                        }
+                        CollegeBoostCfg collegeCfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(partIndex, level, levelNum);
+                        addNum += (float)collegeCfg.value / 10000;
+                        break;
+                    }
+                }
+            }
+            return addNum + 1;
+        }
+        //判断部分是否可以升级
+        public bool CheckPartCanUP(int pardId)
+        {
+            int rankIndex = CollectPartDataDic[pardId][0];
+            int rankLv = CollectPartDataDic[pardId][1];
+            if (rankLv + 1 > CollectPartDataManager.Instance.MaxLevel)
+            {
+                rankIndex += 1;
+                rankLv = 1;
+            }
+            else
+            {
+                rankLv += 1;
+            }
+            CollegeBoostCfg collegeBoostCfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(pardId,rankIndex,rankLv);
+            if (collegeBoostCfg == null)
+            {
+                return false;
+            }
+            for (int i = 0; i < collegeBoostCfg.consumeArr.Length; i++)
+            {
+                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(collegeBoostCfg.consumeArr[i][0]);
+                ItemData itemCount;
+                long count;
+                if (itemCfg.itemType == ConstItemType.DRESS_UP)
+                {
+                    count = ItemDataManager.GetItemNum(collegeBoostCfg.consumeArr[i][0]);
+                }
+                else
+                {
+                    if (BagDataManager.Instance.GetBagData().TryGetValue(collegeBoostCfg.consumeArr[i][0], out itemCount))
+                    {
+                        count = itemCount.num;
+                    }
+                    else
+                    {
+                        count = 0;
+                    }
+                }
+                if(count < collegeBoostCfg.consumeArr[i][1])
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+        //判断所有已开启部位是否可以升级
+        public bool CheckAllOpenPartCanUP()
+        {
+            if(!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ClothingSelectView).Name, false))
+            {
+                return false;
+            }
+            foreach(var item in CollectPartDataDic)
+            {
+                if(IsOpenRank(item.Key))
+                {
+                    if(CheckPartCanUP(item.Key))
+                    {
+                        return true;
+                    }
+                }
+            }
+            return false;
+        }
+        public bool IsOpenRank(int partIndex, int levelNum = 9)
+        {
+            List<int> openList;
+            bool isRank = false;
+            bool isLevel = false;
+            bool isPassStory = false;
+            CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);
+            openList = GetOpenList(partIndex);
+            //判断段位
+            if (openitem.OpenPreconditionArr == null || openitem.OpenPreconditionArr.Length == 0)
+            {
+                isRank = true;
+            }
+            else
+            {
+                if (CollectPartDataDic[openList[0]][0] >= openList[1])
+                {
+                    if (CollectPartDataDic[openList[0]][1] >= openList[2])
+                    {
+                        isRank = true;
+                    }
+                }
+            }
+            //判断等级
+            if (RoleDataManager.lvl >= openitem.needRoleLv)
+            {
+                isLevel = true;
+            }
+            //判断关卡
+            if (openitem.needStoryLevelId == 0 || InstanceZonesDataManager.CheckLevelPass(openitem.needStoryLevelId))
+            {
+                isPassStory = true;
+            }
+            else
+            {
+                isPassStory = false;
+            }
+
+            return isRank && isLevel && isPassStory;
+        }
+        public List<int> GetOpenList(int partIndex)
+        {
+            List<int> openList = new List<int>();
+            string pattern = @"\d+";
+            CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);
+            for (int i = 0; i < openitem.OpenPreconditionArr.Length; i++)
+            {
+                MatchCollection matches = Regex.Matches(openitem.OpenPreconditionArr[i], pattern);
+                foreach (Match match in matches)
+                {
+                    openList.Add(int.Parse(match.Value));
+                }
+            }
+            return openList;
+        }
+    }
+}

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

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

+ 4 - 4
GameClient/Assets/Game/HotUpdate/Data/LeagueDataManager.cs

@@ -198,19 +198,19 @@ namespace GFGGame
                 switch (welfareCfg.type)
                 {
                     case LeagueWelfareType.Day:
-                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareDay) == 1;
+                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareDay) > 0;
                         isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareDay) == 1;
                         break;
                     case LeagueWelfareType.Week:
-                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareWeek) == 1;
+                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareWeekLeftTimes) > 0;
                         isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareWeek) == 1;
                         break;
                     case LeagueWelfareType.SuperWeek:
-                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperWeek) == 1;
+                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperWeek) > 0;
                         isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareSuperWeek) == 1;
                         break;
                     case LeagueWelfareType.SuperDay:
-                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperDay) == 1;
+                        isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperLeftTimes) > 0;
                         isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareSuperDay) == 1;
                         break;
                 }

+ 15 - 0
GameClient/Assets/Game/HotUpdate/Data/MainDataManager.cs

@@ -52,5 +52,20 @@ namespace GFGGame
                 _needUpdateProxyData = value;
             }
         }
+        /// <summary>
+        /// 收纳状态,0:已收纳,1:二级界面
+        /// </summary>
+        private int _StorageStatus = 0;
+        public int StorageStatus
+        {
+            get
+            {
+                return _StorageStatus;
+            }
+            set
+            {
+                _StorageStatus = value;
+            }
+        }
     }
 }

+ 21 - 0
GameClient/Assets/Game/HotUpdate/Data/MainStoryDataManager.cs

@@ -109,6 +109,27 @@ namespace GFGGame
             }
             return true;
         }
+        public static int CheckChapterPassIndex(int subtype)
+        {
+            int count = 2;
+            List<StoryChapterCfg> chapList = StoryChapterCfgArray.Instance.GetCfgsBysubType(subtype);
+            foreach (StoryChapterCfg item in chapList)
+            {
+                var preChapterCfg = StoryChapterCfgArray.Instance.GetCfg(item.id);
+                if (preChapterCfg != null)
+                {
+                    if(InstanceZonesDataManager.CheckChapterPass(preChapterCfg.type, preChapterCfg.subType, preChapterCfg.id, preChapterCfg.levelCount))
+                    {
+                        count++;
+                    }
+                }
+            }
+            if(count> chapList.Count)
+            {
+                count = chapList.Count;
+            }
+            return count;
+        }
 
         public static bool CheckChapterUnlock(int chapterId, bool checkRoleLv = true)
         {

+ 27 - 2
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -319,7 +319,7 @@ namespace GFGGame
         public bool GetCardRed(int cardId)
         {
             // GetCardUpStarRed(cardId) || GetCardUpLvRed(cardId) ||
-            return GetCardStarReward(cardId) || GetCardSkillsRed(cardId) ;
+            return GetCardStarReward(cardId) || GetCardSkillsRed(cardId) || CheckCardCanSynthetic(cardId);
         }
 
         /// <summary>
@@ -628,7 +628,32 @@ namespace GFGGame
             }
             return true;
         }
-
+        /// <summary>
+        /// 卡牌合成红点
+        /// </summary>
+        /// <param name="itemId"></param>
+        /// <param name="showTips"></param>
+        /// <returns></returns>
+        public bool CheckCardCanSynthetic(int itemId)
+        {
+            //合成材料判断
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
+            if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.syntheticCostID) < itemCfg.syntheticCostNum)
+            {
+                return false;
+            }
+            List<ItemData> materiarsOfSelectedItem = ItemUtil.CreateItemDataList(itemCfg.syntheticMateriarsArr);
+            for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
+            {
+                ItemData itemData = materiarsOfSelectedItem[i];
+                long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
+                if (numSynthetic < itemData.num)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
         /// <summary>
         /// 商城
         /// </summary>

+ 10 - 3
GameClient/Assets/Game/HotUpdate/Data/RoleDataManager.cs

@@ -126,7 +126,11 @@ namespace GFGGame
         {
             get
             {
-                return GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+                if(GameGlobal.myNumericComponent != null)
+                {
+                    return GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+                }
+                return 1;
             }
         }
 
@@ -149,8 +153,11 @@ namespace GFGGame
         {
             get
             {
-                return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipLevel);
-
+                if(GameGlobal.myNumericComponent != null)
+                {
+                    return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipLevel);
+                }
+                return 0;
             }
         }
         public static int vipExp

+ 29 - 0
GameClient/Assets/Game/HotUpdate/Data/ScoreSystemData.cs

@@ -144,7 +144,36 @@ namespace GFGGame
             int score = (int)Math.Ceiling(partScore + clickScore );
             return Math.Max(0, score);
         }
+        /// <summary>
+        /// 根据搭配学院获得服装分类基础分加成
+        /// CollectPartDataManager.partIndex: 1.连衣裙或者上衣、下装及内搭 2.发型 3.外套4.袜子 5.鞋子6.饰品7.手持物
+        /// </summary>
+        public float CollegeAddition(int roundId)
+        {
+            int additionNum = 1;
 
+            switch (roundId)
+            {
+                case 1:
+                    additionNum += CollectPartDataManager.Instance.CollectPartDataDic[2][2]/10000;
+                    break;
+                case 2:
+                    break;
+                case 3:
+                    additionNum += CollectPartDataManager.Instance.CollectPartDataDic[6][2] / 10000;
+                    break;
+                case 4:
+                    additionNum += CollectPartDataManager.Instance.CollectPartDataDic[7][2] / 10000;
+                    break;
+                case 5:
+                    additionNum += CollectPartDataManager.Instance.CollectPartDataDic[4][2] / 10000 + CollectPartDataManager.Instance.CollectPartDataDic[5][2] / 10000;
+                    break;
+                case 6:
+                    additionNum += CollectPartDataManager.Instance.CollectPartDataDic[1][2] / 10000 + CollectPartDataManager.Instance.CollectPartDataDic[3][2] / 10000;
+                    break;
+            }
+            return additionNum;
+        }
         public int GetRobotRoundScore(FightData robotData, int roundId, int clickType, double skillScore)
         {
             //部件评分=部件基础分*部件系数

+ 76 - 0
GameClient/Assets/Game/HotUpdate/Data/ShareDataManager.cs

@@ -0,0 +1,76 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using ET;
+using FairyGUI;
+using UnityEngine;
+
+namespace GFGGame
+{
+    class ShareDataManager : SingletonBase<ShareDataManager>
+    {
+        //当前分享
+        public byte[] imageBytes;
+        public string outputImagePath; // 输出图片的路径
+        public GGroup group;
+        public void ShareImage(string imageUrl)
+        {
+            // 使用ShareSDK或其他分享插件来分享图片URL
+            // 这里需要根据具体插件的API来实现分享功能
+        }
+        //isJump:是否跳转
+        //isCapture:是否截图
+        public void CaptureCameraToImage(bool isJump = true,bool isCapture = true)
+        {
+            Timers.inst.StartCoroutine(CaptureCameraImage(isJump,isCapture));
+        }
+        private IEnumerator CaptureCameraImage(bool isJump = true, bool isCapture = true)
+        {
+            if (!isJump)
+            {
+                group.visible = false;
+            }
+            yield return new WaitForEndOfFrame();
+            SetImageTargetPath();
+            if (isCapture)
+            {
+                Rect rect = new Rect(0, 0, UnityEngine.Screen.width, UnityEngine.Screen.height);
+                Texture2D tex = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.ARGB32, false);//新建一个Texture2D对象
+                tex.ReadPixels(rect, 0, 0);//读取像素,屏幕左下角为0点
+                tex.Apply();//保存像素信息
+
+                // 将Texture2D保存为图片
+                imageBytes = tex.EncodeToPNG();
+            }
+            // 保存到磁盘
+            File.WriteAllBytes(outputImagePath, imageBytes);
+            Debug.Log("Camera capture saved to " + outputImagePath);
+            if (!isJump)
+            {
+                group.visible = true;
+            }
+            if (isJump)
+            {
+                ViewManager.Show<ShareView>();
+            }
+        }
+
+        public Texture2D ConvertBytesToTexture(byte[] imageBytes)
+        {
+            // 创建一个新的Texture2D对象
+            Texture2D texture = new Texture2D(UnityEngine.Screen.width, UnityEngine.Screen.height); // 宽度和高度需要根据图片实际尺寸来设置
+            texture.LoadImage(imageBytes); // 加载图片数据
+
+            // 应用纹理设置
+            texture.Apply();
+
+            return texture;
+        }
+
+        private void SetImageTargetPath()
+        {
+            outputImagePath = Application.persistentDataPath + "/share.png";
+        }
+    }
+}

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

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

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

@@ -0,0 +1,12 @@
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class CollectPartData
+    {
+        public int PartID;
+        public int LevelID;
+        public int LevelNum;
+        public float AddNum;
+    }
+}

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

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

+ 2 - 1
GameClient/Assets/Game/HotUpdate/Data/VO/ItemData.cs

@@ -77,7 +77,8 @@ namespace GFGGame
             }
             AttributesDic.TryGetValue(CalculateHelper.GetItemScoreKey(scoreType, (int)ConstItemAttributeActionType.ADD_VALUE), out var valueAdd);
             AttributesDic.TryGetValue(CalculateHelper.GetItemScoreKey(scoreType, (int)ConstItemAttributeActionType.ADD_PERCENT), out var percentAdd);
-            return CalculateHelper.GetItemAttribute(valueBase, percentAdd, valueAdd);
+            float count = (float)CalculateHelper.GetItemAttribute(valueBase, percentAdd, valueAdd) * CollectPartDataManager.Instance.GetEquipScoresWithPartId(id);
+            return (int)count;
         }
     }
 }

+ 23 - 0
GameClient/Assets/Game/HotUpdate/DressUp/SceneController.cs

@@ -180,6 +180,29 @@ namespace GFGGame
                 //StoryDialogDataManager.Instance.dialogShowDelay = 0.4f;
             }
         }
+        //更新人物表情
+        public static void UpdateEmojiAni(string value, ref GameObject animObj)
+        {
+            if (value == "0")
+            {
+                if (animObj != null)
+                {
+                    PrefabManager.Instance.Restore(animObj);
+                    animObj = null;
+                }
+            }
+            else
+            {
+                PrefabManager.Instance.Restore(animObj);
+                animObj = null;
+                value = string.Format("DressUp/{0}", value);
+                string res = value.Split('/')[1];
+                animObj = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetStoryDialogCGPath(value, res));
+                animObj.transform.position = new Vector3(0, -9, 0);
+                animObj.transform.localScale = new Vector3(2.5f, 2.5f, 2.5f);
+                //StoryDialogDataManager.Instance.dialogShowDelay = 0.4f;
+            }
+        }
 
 
         public static void ControlBgVisible(GameObject sceneObj, bool isShow)

+ 77 - 43
GameClient/Assets/Game/HotUpdate/ETCodes/Hotfix/App/Login/LoginHelper.cs

@@ -5,7 +5,8 @@ namespace ET
 {
     public static class LoginHelper
     {
-        public static async ETTask<(int, long)> LoginTest(Scene zoneScene, string address, string account, bool cancelDelete)
+        public static async ETTask<(int, long)> LoginTest(Scene zoneScene, string address, string account,
+            bool cancelDelete)
         {
             A2C_LoginAccount a2CLoginAccount = null;
             Session accountSession = null;
@@ -19,7 +20,8 @@ namespace ET
                     Version = GameConst.SERVER_VERSION,
                     PlatformId = LauncherConfig.platformId,
                     ChannelId = LauncherConfig.ChannelId,
-                    CancelDelete = cancelDelete
+                    CancelDelete = cancelDelete,
+                    Token = QDDouYouManager.Instance.token
                 });
             }
             catch (Exception e)
@@ -34,12 +36,14 @@ namespace ET
                 accountSession?.Dispose();
                 return (a2CLoginAccount.Error, a2CLoginAccount.DeleteTime);
             }
+
             OnLoginSuccess(zoneScene, a2CLoginAccount, accountSession, account);
 
             return (ErrorCode.ERR_Success, 0);
         }
 
-        public static async ETTask<(int, long)> Login(Scene zoneScene, string address, string account, string password, bool isMD5, bool cancelDelete)
+        public static async ETTask<(int, long)> Login(Scene zoneScene, string address, string account, string password,
+            bool isMD5, bool cancelDelete)
         {
             A2C_LoginAccount a2CLoginAccount = null;
             Session accountSession = null;
@@ -52,6 +56,7 @@ namespace ET
                 {
                     passwordMD5 = MD5Helper.stringMD5(password);
                 }
+
                 a2CLoginAccount = (A2C_LoginAccount)await accountSession.Call(new C2A_LoginAccount()
                 {
                     Account = account,
@@ -74,12 +79,14 @@ namespace ET
                 accountSession?.Dispose();
                 return (a2CLoginAccount.Error, a2CLoginAccount.DeleteTime);
             }
+
             OnLoginSuccess(zoneScene, a2CLoginAccount, accountSession, account);
 
             return (ErrorCode.ERR_Success, 0);
         }
 
-        public static void OnLoginSuccess(Scene zoneScene, A2C_LoginAccount a2CLoginAccount, Session accountSession, string account)
+        public static void OnLoginSuccess(Scene zoneScene, A2C_LoginAccount a2CLoginAccount, Session accountSession,
+            string account)
         {
             zoneScene.GetComponent<SessionComponent>().AccountSession = accountSession;
             accountSession.AddComponent<PingComponent>();
@@ -93,7 +100,8 @@ namespace ET
         }
 
 
-        public static async ETTask<int> Register(Scene zoneScene, string address, string account, string password, string name, string identityNum, string code)
+        public static async ETTask<int> Register(Scene zoneScene, string address, string account, string password,
+            string name, string identityNum, string code)
         {
             A2C_Register r2C_Register = null;
             Session session = null;
@@ -125,6 +133,7 @@ namespace ET
                 Log.Debug(e.ToString());
                 return ErrorCode.ERR_NetWorkError;
             }
+
             return ErrorCode.ERR_Success;
         }
 
@@ -134,11 +143,12 @@ namespace ET
 
             try
             {
-                a2C_GetServerInfos = (A2C_GetServerInfos)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(new C2A_GetServerInfos()
-                {
-                    AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
-                    Token = zoneScene.GetComponent<AccountInfoComponent>().Token
-                });
+                a2C_GetServerInfos = (A2C_GetServerInfos)await zoneScene.GetComponent<SessionComponent>().AccountSession
+                    ?.Call(new C2A_GetServerInfos()
+                    {
+                        AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
+                        Token = zoneScene.GetComponent<AccountInfoComponent>().Token
+                    });
             }
             catch (Exception e)
             {
@@ -150,6 +160,7 @@ namespace ET
             {
                 return a2C_GetServerInfos.Error;
             }
+
             zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
             foreach (var serverInfoProto in a2C_GetServerInfos.ServerInfosList)
             {
@@ -157,6 +168,7 @@ namespace ET
                 serverInfo.FromMessage(serverInfoProto);
                 zoneScene.GetComponent<ServerInfosComponent>().Add(serverInfo);
             }
+
             zoneScene.GetComponent<ServerInfosComponent>().SetRecentlyServerInfo(a2C_GetServerInfos.RecentId);
 
             await ETTask.CompletedTask;
@@ -169,12 +181,13 @@ namespace ET
 
             try
             {
-                a2C_GetRoles = (A2C_GetRoles)await zoneScene.GetComponent<SessionComponent>().AccountSession.Call(new C2A_GetRoles()
-                {
-                    AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
-                    Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
-                    ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
-                });
+                a2C_GetRoles = (A2C_GetRoles)await zoneScene.GetComponent<SessionComponent>().AccountSession.Call(
+                    new C2A_GetRoles()
+                    {
+                        AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
+                        Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
+                        ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
+                    });
             }
             catch (Exception e)
             {
@@ -204,13 +217,14 @@ namespace ET
             A2C_CreateRole a2C_CreateRole = null;
             try
             {
-                a2C_CreateRole = (A2C_CreateRole)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(new C2A_CreateRole
-                {
-                    AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
-                    Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
-                    Name = name,
-                    ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
-                });
+                a2C_CreateRole = (A2C_CreateRole)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(
+                    new C2A_CreateRole
+                    {
+                        AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
+                        Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
+                        Name = name,
+                        ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
+                    });
             }
             catch (Exception e)
             {
@@ -237,13 +251,14 @@ namespace ET
 
             try
             {
-                a2C_DeleteRole = (A2C_DeleteRole)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(new C2A_DeleteRole()
-                {
-                    AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
-                    Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
-                    RoleInfoId = roleId,
-                    ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
-                });
+                a2C_DeleteRole = (A2C_DeleteRole)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(
+                    new C2A_DeleteRole()
+                    {
+                        AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
+                        Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
+                        RoleInfoId = roleId,
+                        ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
+                    });
             }
             catch (Exception e)
             {
@@ -257,7 +272,10 @@ namespace ET
                 return a2C_DeleteRole.Error;
             }
 
-            int index = zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.FindIndex((info) => { return info.Id == a2C_DeleteRole.DeleteRoleInfoId; });
+            int index = zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.FindIndex((info) =>
+            {
+                return info.Id == a2C_DeleteRole.DeleteRoleInfoId;
+            });
             zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.RemoveAt(index);
 
             await ETTask.CompletedTask;
@@ -270,12 +288,13 @@ namespace ET
 
             try
             {
-                a2C_GetRealmKey = (A2C_GetRealmKey)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(new C2A_GetRealmKey()
-                {
-                    AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
-                    Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
-                    ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
-                });
+                a2C_GetRealmKey = (A2C_GetRealmKey)await zoneScene.GetComponent<SessionComponent>().AccountSession
+                    ?.Call(new C2A_GetRealmKey()
+                    {
+                        AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
+                        Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
+                        ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
+                    });
             }
             catch (Exception e)
             {
@@ -303,7 +322,8 @@ namespace ET
             //1.连接Realm,获取分配的Gate
             R2C_LoginRealm r2C_LoginRealm = null;
 
-            Session session = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(realmAddress));
+            Session session = zoneScene.GetComponent<NetKcpComponent>()
+                .Create(NetworkHelper.ToIPEndPoint(realmAddress));
             try
             {
                 r2C_LoginRealm = (R2C_LoginRealm)await session.Call(new C2R_LoginRealm()
@@ -318,6 +338,7 @@ namespace ET
                 session?.Dispose();
                 return ErrorCode.ERR_NetWorkError;
             }
+
             session?.Dispose();
 
             if (r2C_LoginRealm.Error != ErrorCode.ERR_Success)
@@ -326,7 +347,8 @@ namespace ET
             }
 
             LogUtil.LogDev($"GateAddress : {r2C_LoginRealm.GateAddress}");
-            Session gateSession = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(r2C_LoginRealm.GateAddress));
+            Session gateSession = zoneScene.GetComponent<NetKcpComponent>()
+                .Create(NetworkHelper.ToIPEndPoint(r2C_LoginRealm.GateAddress));
             gateSession.AddComponent<PingComponent>();
             gateSession.AddComponent<DisConnectedCompnent>().SessionState = SessionState.Gate;
             zoneScene.GetComponent<SessionComponent>().GateSession = gateSession;
@@ -357,6 +379,7 @@ namespace ET
                 zoneScene.GetComponent<SessionComponent>().GateSession?.Dispose();
                 return g2C_LoginGate.Error;
             }
+
             LogUtil.LogDev("登陆gate成功!");
 
             //3.角色正式请求进入游戏逻辑服
@@ -377,12 +400,15 @@ namespace ET
                 //Log.Error(g2C_EnterGame.Error.ToString());
                 return g2C_EnterGame.Error;
             }
+
             zoneScene.GetComponent<PlayerComponent>().MyId = g2C_EnterGame.MyId;
-            var result = await GameGlobal.zoneScene.GetComponent<ObjectWait>().Wait<ET.WaitType.Wait_SceneChangeStart>();
-            if(result.Error == WaitTypeError.Cancel)
+            var result = await GameGlobal.zoneScene.GetComponent<ObjectWait>()
+                .Wait<ET.WaitType.Wait_SceneChangeStart>();
+            if (result.Error == WaitTypeError.Cancel)
             {
                 return ErrorCode.ERR_Cancel;
             }
+
             LogUtil.LogDev("角色进入游戏成功!");
             return ErrorCode.ERR_Success;
         }
@@ -392,7 +418,8 @@ namespace ET
             A2C_GetLatestNotice response = null;
             try
             {
-                response = (A2C_GetLatestNotice)await GameGlobal.zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(new C2A_GetLatestNotice());
+                response = (A2C_GetLatestNotice)await GameGlobal.zoneScene.GetComponent<SessionComponent>()
+                    .AccountSession?.Call(new C2A_GetLatestNotice());
             }
             catch (Exception e)
             {
@@ -405,6 +432,7 @@ namespace ET
                 //Log.Error(response.Error.ToString());
                 return response.Error;
             }
+
             NoticeInfo noticeInfo = new NoticeInfo();
             noticeInfo.noticeId = response.NoticeId;
             noticeInfo.title = response.Title;
@@ -415,6 +443,7 @@ namespace ET
 
             return ErrorCode.ERR_Success;
         }
+
         public static async ETTask<(int, string)> ReqRandomRoleName()
         {
             A2C_GetRandomRoleName response = null;
@@ -423,8 +452,10 @@ namespace ET
             if (accountSession == null || accountSession.IsDisposed)
             {
                 notLogin = true;
-                accountSession = GameGlobal.zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(GameConfig.LoginAddress));
+                accountSession = GameGlobal.zoneScene.GetComponent<NetKcpComponent>()
+                    .Create(NetworkHelper.ToIPEndPoint(GameConfig.LoginAddress));
             }
+
             try
             {
                 response = (A2C_GetRandomRoleName)await accountSession?.Call(new C2A_GetRandomRoleName()
@@ -439,6 +470,7 @@ namespace ET
                 {
                     accountSession?.Dispose();
                 }
+
                 return (ErrorCode.ERR_NetWorkError, "");
             }
 
@@ -449,6 +481,7 @@ namespace ET
                 {
                     accountSession?.Dispose();
                 }
+
                 return (ErrorCode.ERR_NetWorkError, "");
             }
 
@@ -456,6 +489,7 @@ namespace ET
             {
                 accountSession?.Dispose();
             }
+
             return (ErrorCode.ERR_Success, response.Name);
         }
     }

+ 0 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityAfternoonTea/UI_ActivityTeaVisitUI.cs

@@ -13,7 +13,6 @@ namespace UI.ActivityAfternoonTea
         public GTextField m_time;
         public GLoader m_ruleIcon;
         public GList m_taskList;
-        public GImage m_visitNumTips;
         public GTextField m_visitNum;
         public const string URL = "ui://wpsqkdbznjone";
         public const string PACKAGE_NAME = "ActivityAfternoonTea";
@@ -68,7 +67,6 @@ namespace UI.ActivityAfternoonTea
             m_time = (GTextField)comp.GetChild("time");
             m_ruleIcon = (GLoader)comp.GetChild("ruleIcon");
             m_taskList = (GList)comp.GetChild("taskList");
-            m_visitNumTips = (GImage)comp.GetChild("visitNumTips");
             m_visitNum = (GTextField)comp.GetChild("visitNum");
         }
         public void Dispose(bool disposeTarget = false)
@@ -79,7 +77,6 @@ namespace UI.ActivityAfternoonTea
             m_time = null;
             m_ruleIcon = null;
             m_taskList = null;
-            m_visitNumTips = null;
             m_visitNum = null;
             if(disposeTarget && target != null)
             {

+ 80 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button12.cs

@@ -0,0 +1,80 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.ActivityMain
+{
+    public partial class UI_Button12
+    {
+        public GButton target;
+        public GTextField m_txtIcon;
+        public GTextField m_txtOriginalPrice;
+        public GGroup m_grpOriginalPrice;
+        public GTextField m_txtPrice;
+        public const string URL = "ui://4ht5s77uuje12c";
+        public const string PACKAGE_NAME = "ActivityMain";
+        public const string RES_NAME = "Button12";
+        private static UI_Button12 _proxy;
+
+        public static UI_Button12 Create(GObject gObject = null)
+        {
+            var ui = new UI_Button12();
+            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_Button12 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Button12();
+            }
+            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_txtIcon = (GTextField)comp.GetChild("txtIcon");
+            m_txtOriginalPrice = (GTextField)comp.GetChild("txtOriginalPrice");
+            m_grpOriginalPrice = (GGroup)comp.GetChild("grpOriginalPrice");
+            m_txtPrice = (GTextField)comp.GetChild("txtPrice");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_txtIcon = null;
+            m_txtOriginalPrice = null;
+            m_grpOriginalPrice = null;
+            m_txtPrice = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button12.cs.meta

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

+ 80 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button13.cs

@@ -0,0 +1,80 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.ActivityMain
+{
+    public partial class UI_Button13
+    {
+        public GButton target;
+        public GTextField m_txtIcon;
+        public GTextField m_txtOriginalPrice;
+        public GGroup m_grpOriginalPrice;
+        public GTextField m_txtPrice;
+        public const string URL = "ui://4ht5s77uuje12w";
+        public const string PACKAGE_NAME = "ActivityMain";
+        public const string RES_NAME = "Button13";
+        private static UI_Button13 _proxy;
+
+        public static UI_Button13 Create(GObject gObject = null)
+        {
+            var ui = new UI_Button13();
+            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_Button13 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Button13();
+            }
+            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_txtIcon = (GTextField)comp.GetChild("txtIcon");
+            m_txtOriginalPrice = (GTextField)comp.GetChild("txtOriginalPrice");
+            m_grpOriginalPrice = (GGroup)comp.GetChild("grpOriginalPrice");
+            m_txtPrice = (GTextField)comp.GetChild("txtPrice");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_txtIcon = null;
+            m_txtOriginalPrice = null;
+            m_grpOriginalPrice = null;
+            m_txtPrice = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_Button13.cs.meta

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

+ 0 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_ZCJBBuyTips.cs

@@ -7,7 +7,6 @@ namespace UI.ActivityMain
     public partial class UI_ZCJBBuyTips
     {
         public GComponent target;
-        public GGraph m_graph;
         public GTextField m_txtContent;
         public GTextField m_txtTips;
         public GTextField m_txtNumTips;
@@ -60,7 +59,6 @@ namespace UI.ActivityMain
 
         private void Init(GComponent comp)
         {
-            m_graph = (GGraph)comp.GetChild("graph");
             m_txtContent = (GTextField)comp.GetChild("txtContent");
             m_txtTips = (GTextField)comp.GetChild("txtTips");
             m_txtNumTips = (GTextField)comp.GetChild("txtNumTips");
@@ -69,7 +67,6 @@ namespace UI.ActivityMain
         }
         public void Dispose(bool disposeTarget = false)
         {
-            m_graph = null;
             m_txtContent = null;
             m_txtTips = null;
             m_txtNumTips = null;

+ 3 - 2
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_ZGTHgiftDCTipsUI.cs

@@ -10,7 +10,7 @@ namespace UI.ActivityMain
         public GLoader m_suitIcon;
         public GTextField m_txtName;
         public GList m_Itemlist;
-        public GButton m_btnCharge;
+        public UI_Button12 m_btnCharge;
         public GTextField m_timeText;
         public GButton m_btnClose;
         public GTextField m_discountText;
@@ -70,7 +70,7 @@ namespace UI.ActivityMain
             m_suitIcon = (GLoader)comp.GetChild("suitIcon");
             m_txtName = (GTextField)comp.GetChild("txtName");
             m_Itemlist = (GList)comp.GetChild("Itemlist");
-            m_btnCharge = (GButton)comp.GetChild("btnCharge");
+            m_btnCharge = (UI_Button12)UI_Button12.Create(comp.GetChild("btnCharge"));
             m_timeText = (GTextField)comp.GetChild("timeText");
             m_btnClose = (GButton)comp.GetChild("btnClose");
             m_discountText = (GTextField)comp.GetChild("discountText");
@@ -86,6 +86,7 @@ namespace UI.ActivityMain
             m_suitIcon = null;
             m_txtName = null;
             m_Itemlist = null;
+            m_btnCharge.Dispose();
             m_btnCharge = null;
             m_timeText = null;
             m_btnClose = null;

+ 3 - 2
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityMain/UI_ZGTHgiftTipsUI.cs

@@ -8,7 +8,7 @@ namespace UI.ActivityMain
     {
         public GComponent target;
         public GList m_Itemlist;
-        public GButton m_btnBuy;
+        public UI_Button13 m_btnBuy;
         public GButton m_btnClose;
         public GTextField m_timeText;
         public GImage m_TipImg;
@@ -64,7 +64,7 @@ namespace UI.ActivityMain
         private void Init(GComponent comp)
         {
             m_Itemlist = (GList)comp.GetChild("Itemlist");
-            m_btnBuy = (GButton)comp.GetChild("btnBuy");
+            m_btnBuy = (UI_Button13)UI_Button13.Create(comp.GetChild("btnBuy"));
             m_btnClose = (GButton)comp.GetChild("btnClose");
             m_timeText = (GTextField)comp.GetChild("timeText");
             m_TipImg = (GImage)comp.GetChild("TipImg");
@@ -76,6 +76,7 @@ namespace UI.ActivityMain
         public void Dispose(bool disposeTarget = false)
         {
             m_Itemlist = null;
+            m_btnBuy.Dispose();
             m_btnBuy = null;
             m_btnClose = null;
             m_timeText = null;

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Card/UI_CardFosterUI.cs

@@ -15,6 +15,7 @@ namespace UI.Card
         public GLoader m_loaListener1;
         public UI_ComFosterTop m_ComFosterTop;
         public UI_ComFosterBottom m_ComFosterBottom;
+        public GButton m_cardSyntheticBtn;
         public GLoader m_loaGuide;
         public GButton m_btnLeft;
         public GButton m_btnRight;
@@ -77,6 +78,7 @@ namespace UI.Card
             m_loaListener1 = (GLoader)comp.GetChild("loaListener1");
             m_ComFosterTop = (UI_ComFosterTop)UI_ComFosterTop.Create(comp.GetChild("ComFosterTop"));
             m_ComFosterBottom = (UI_ComFosterBottom)UI_ComFosterBottom.Create(comp.GetChild("ComFosterBottom"));
+            m_cardSyntheticBtn = (GButton)comp.GetChild("cardSyntheticBtn");
             m_loaGuide = (GLoader)comp.GetChild("loaGuide");
             m_btnLeft = (GButton)comp.GetChild("btnLeft");
             m_btnRight = (GButton)comp.GetChild("btnRight");
@@ -99,6 +101,7 @@ namespace UI.Card
             m_ComFosterTop = null;
             m_ComFosterBottom.Dispose();
             m_ComFosterBottom = null;
+            m_cardSyntheticBtn = null;
             m_loaGuide = null;
             m_btnLeft = null;
             m_btnRight = null;

+ 9 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CardSynthetic/UI_CardSyntheticUI.cs

@@ -23,7 +23,10 @@ namespace UI.CardSynthetic
         public GTextField m_txtShang;
         public GTextField m_txtJue;
         public GTextField m_txtZhi;
+        public GTextField m_skillCountText;
+        public GLoader m_skillIcon;
         public GTextField m_timesText;
+        public GTextField m_descText;
         public GButton m_btnBack;
         public GButton m_btnHome;
         public GComponent m_valueBar;
@@ -92,7 +95,10 @@ namespace UI.CardSynthetic
             m_txtShang = (GTextField)comp.GetChild("txtShang");
             m_txtJue = (GTextField)comp.GetChild("txtJue");
             m_txtZhi = (GTextField)comp.GetChild("txtZhi");
+            m_skillCountText = (GTextField)comp.GetChild("skillCountText");
+            m_skillIcon = (GLoader)comp.GetChild("skillIcon");
             m_timesText = (GTextField)comp.GetChild("timesText");
+            m_descText = (GTextField)comp.GetChild("descText");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_btnHome = (GButton)comp.GetChild("btnHome");
             m_valueBar = (GComponent)comp.GetChild("valueBar");
@@ -118,7 +124,10 @@ namespace UI.CardSynthetic
             m_txtShang = null;
             m_txtJue = null;
             m_txtZhi = null;
+            m_skillCountText = null;
+            m_skillIcon = null;
             m_timesText = null;
+            m_descText = null;
             m_btnBack = null;
             m_btnHome = null;
             m_valueBar = null;

+ 2 - 2
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingSynthetic/UI_ClothingSyntheticListUI.cs

@@ -8,7 +8,7 @@ namespace UI.ClothingSynthetic
     {
         public GComponent target;
         public GLoader m_loaBg;
-        public GComponent m_btnBack;
+        public GButton m_btnBack;
         public GList m_listMenu;
         public GList m_listSuit;
         public const string URL = "ui://4f294tdkj5390";
@@ -59,7 +59,7 @@ namespace UI.ClothingSynthetic
         private void Init(GComponent comp)
         {
             m_loaBg = (GLoader)comp.GetChild("loaBg");
-            m_btnBack = (GComponent)comp.GetChild("btnBack");
+            m_btnBack = (GButton)comp.GetChild("btnBack");
             m_listMenu = (GList)comp.GetChild("listMenu");
             m_listSuit = (GList)comp.GetChild("listSuit");
         }

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_Button123.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.ClothingUpgrade
+{
+    public partial class UI_Button123
+    {
+        public GButton target;
+        public Controller m_c1;
+        public const string URL = "ui://n7cyoafqxfkim";
+        public const string PACKAGE_NAME = "ClothingUpgrade";
+        public const string RES_NAME = "Button123";
+        private static UI_Button123 _proxy;
+
+        public static UI_Button123 Create(GObject gObject = null)
+        {
+            var ui = new UI_Button123();
+            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_Button123 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Button123();
+            }
+            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_c1 = comp.GetController("c1");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_c1 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_Button123.cs.meta

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

+ 83 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingAnsweringUI.cs

@@ -0,0 +1,83 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.ClothingUpgrade
+{
+    public partial class UI_ClothingAnsweringUI
+    {
+        public GComponent target;
+        public GLoader m_bg;
+        public GTextField m_txtAnswerNum;
+        public GTextField m_txtContent;
+        public GList m_listResult;
+        public GButton m_btnBack;
+        public const string URL = "ui://n7cyoafqxfkih";
+        public const string PACKAGE_NAME = "ClothingUpgrade";
+        public const string RES_NAME = "ClothingAnsweringUI";
+        private static UI_ClothingAnsweringUI _proxy;
+
+        public static UI_ClothingAnsweringUI Create(GObject gObject = null)
+        {
+            var ui = new UI_ClothingAnsweringUI();
+            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_ClothingAnsweringUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ClothingAnsweringUI();
+            }
+            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 = (GLoader)comp.GetChild("bg");
+            m_txtAnswerNum = (GTextField)comp.GetChild("txtAnswerNum");
+            m_txtContent = (GTextField)comp.GetChild("txtContent");
+            m_listResult = (GList)comp.GetChild("listResult");
+            m_btnBack = (GButton)comp.GetChild("btnBack");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_bg = null;
+            m_txtAnswerNum = null;
+            m_txtContent = null;
+            m_listResult = null;
+            m_btnBack = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingAnsweringUI.cs.meta

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

+ 15 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingSelectUI.cs

@@ -8,7 +8,12 @@ namespace UI.ClothingUpgrade
     {
         public GComponent target;
         public GLoader m_bg;
+        public GGraph m_bgEffect;
+        public GLoader m_roleIcon;
+        public GLoader m_afuIcon;
         public GList m_selectList;
+        public GTextField m_descText;
+        public GGraph m_birdEffect;
         public GButton m_btnBack;
         public const string URL = "ui://n7cyoafqckqp0";
         public const string PACKAGE_NAME = "ClothingUpgrade";
@@ -58,13 +63,23 @@ namespace UI.ClothingUpgrade
         private void Init(GComponent comp)
         {
             m_bg = (GLoader)comp.GetChild("bg");
+            m_bgEffect = (GGraph)comp.GetChild("bgEffect");
+            m_roleIcon = (GLoader)comp.GetChild("roleIcon");
+            m_afuIcon = (GLoader)comp.GetChild("afuIcon");
             m_selectList = (GList)comp.GetChild("selectList");
+            m_descText = (GTextField)comp.GetChild("descText");
+            m_birdEffect = (GGraph)comp.GetChild("birdEffect");
             m_btnBack = (GButton)comp.GetChild("btnBack");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_bg = null;
+            m_bgEffect = null;
+            m_roleIcon = null;
+            m_afuIcon = null;
             m_selectList = null;
+            m_descText = null;
+            m_birdEffect = null;
             m_btnBack = null;
             if(disposeTarget && target != null)
             {

+ 29 - 14
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_ClothingUpgradeUI.cs

@@ -8,16 +8,21 @@ namespace UI.ClothingUpgrade
     {
         public GComponent target;
         public Controller m_c1;
-        public GButton m_btnBack;
-        public GTextField m_desc1Text;
-        public GTextField m_desc2Text;
-        public GTextField m_desc3Text;
+        public Controller m_c2;
+        public GLoader m_bg;
         public GComponent m_item0;
         public GComponent m_item1;
         public GComponent m_item2;
-        public GLoader m_upgradeBtn;
+        public GTextField m_desc1Text;
+        public GTextField m_desc2;
+        public GTextField m_desc2Text;
+        public GTextField m_desc3;
+        public GTextField m_desc3Text;
+        public GButton m_upgradeBtn;
+        public GButton m_levelUpBtn;
         public GTextField m_finish;
         public GTextField m_unLockText;
+        public GButton m_btnBack;
         public const string URL = "ui://n7cyoafqckqp4";
         public const string PACKAGE_NAME = "ClothingUpgrade";
         public const string RES_NAME = "ClothingUpgradeUI";
@@ -66,30 +71,40 @@ namespace UI.ClothingUpgrade
         private void Init(GComponent comp)
         {
             m_c1 = comp.GetController("c1");
-            m_btnBack = (GButton)comp.GetChild("btnBack");
-            m_desc1Text = (GTextField)comp.GetChild("desc1Text");
-            m_desc2Text = (GTextField)comp.GetChild("desc2Text");
-            m_desc3Text = (GTextField)comp.GetChild("desc3Text");
+            m_c2 = comp.GetController("c2");
+            m_bg = (GLoader)comp.GetChild("bg");
             m_item0 = (GComponent)comp.GetChild("item0");
             m_item1 = (GComponent)comp.GetChild("item1");
             m_item2 = (GComponent)comp.GetChild("item2");
-            m_upgradeBtn = (GLoader)comp.GetChild("upgradeBtn");
+            m_desc1Text = (GTextField)comp.GetChild("desc1Text");
+            m_desc2 = (GTextField)comp.GetChild("desc2");
+            m_desc2Text = (GTextField)comp.GetChild("desc2Text");
+            m_desc3 = (GTextField)comp.GetChild("desc3");
+            m_desc3Text = (GTextField)comp.GetChild("desc3Text");
+            m_upgradeBtn = (GButton)comp.GetChild("upgradeBtn");
+            m_levelUpBtn = (GButton)comp.GetChild("levelUpBtn");
             m_finish = (GTextField)comp.GetChild("finish");
             m_unLockText = (GTextField)comp.GetChild("unLockText");
+            m_btnBack = (GButton)comp.GetChild("btnBack");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_c1 = null;
-            m_btnBack = null;
-            m_desc1Text = null;
-            m_desc2Text = null;
-            m_desc3Text = null;
+            m_c2 = null;
+            m_bg = null;
             m_item0 = null;
             m_item1 = null;
             m_item2 = null;
+            m_desc1Text = null;
+            m_desc2 = null;
+            m_desc2Text = null;
+            m_desc3 = null;
+            m_desc3Text = null;
             m_upgradeBtn = null;
+            m_levelUpBtn = null;
             m_finish = null;
             m_unLockText = null;
+            m_btnBack = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 12 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ClothingUpgrade/UI_clothingSelectItem.cs

@@ -7,10 +7,13 @@ namespace UI.ClothingUpgrade
     public partial class UI_clothingSelectItem
     {
         public GComponent target;
+        public Controller m_c1;
         public GLoader m_partIcon;
         public GTextField m_levelText;
-        public GTextField m_levelDescText;
         public GTextField m_levelNumText;
+        public GTextField m_nameText;
+        public GTextField m_descText;
+        public GTextField m_levelDescText;
         public const string URL = "ui://n7cyoafqckqp1";
         public const string PACKAGE_NAME = "ClothingUpgrade";
         public const string RES_NAME = "clothingSelectItem";
@@ -58,17 +61,23 @@ namespace UI.ClothingUpgrade
 
         private void Init(GComponent comp)
         {
+            m_c1 = comp.GetController("c1");
             m_partIcon = (GLoader)comp.GetChild("partIcon");
             m_levelText = (GTextField)comp.GetChild("levelText");
-            m_levelDescText = (GTextField)comp.GetChild("levelDescText");
             m_levelNumText = (GTextField)comp.GetChild("levelNumText");
+            m_nameText = (GTextField)comp.GetChild("nameText");
+            m_descText = (GTextField)comp.GetChild("descText");
+            m_levelDescText = (GTextField)comp.GetChild("levelDescText");
         }
         public void Dispose(bool disposeTarget = false)
         {
+            m_c1 = null;
             m_partIcon = null;
             m_levelText = null;
-            m_levelDescText = null;
             m_levelNumText = null;
+            m_nameText = null;
+            m_descText = null;
+            m_levelDescText = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_PhotographSaveUI.cs

@@ -16,6 +16,7 @@ namespace UI.DressUp
         public GButton m_btnShareWX;
         public GButton m_btnShareWB;
         public GButton m_btnSavePhoto;
+        public GButton m_share;
         public const string URL = "ui://mbo439wbi3ix58";
         public const string PACKAGE_NAME = "DressUp";
         public const string RES_NAME = "PhotographSaveUI";
@@ -72,6 +73,7 @@ namespace UI.DressUp
             m_btnShareWX = (GButton)comp.GetChild("btnShareWX");
             m_btnShareWB = (GButton)comp.GetChild("btnShareWB");
             m_btnSavePhoto = (GButton)comp.GetChild("btnSavePhoto");
+            m_share = (GButton)comp.GetChild("share");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -84,6 +86,7 @@ namespace UI.DressUp
             m_btnShareWX = null;
             m_btnShareWB = null;
             m_btnSavePhoto = null;
+            m_share = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/LuckyBox/UI_LuckyBoxUI.cs

@@ -17,6 +17,8 @@ namespace UI.LuckyBox
         public GButton m_btnRight;
         public GGraph m_effectZWH;
         public GGraph m_effectTWH;
+        public GGraph m_effectZWH2;
+        public GGraph m_effectTWH2;
         public const string URL = "ui://drx9d1uswono2q";
         public const string PACKAGE_NAME = "LuckyBox";
         public const string RES_NAME = "LuckyBoxUI";
@@ -74,6 +76,8 @@ namespace UI.LuckyBox
             m_btnRight = (GButton)comp.GetChild("btnRight");
             m_effectZWH = (GGraph)comp.GetChild("effectZWH");
             m_effectTWH = (GGraph)comp.GetChild("effectTWH");
+            m_effectZWH2 = (GGraph)comp.GetChild("effectZWH2");
+            m_effectTWH2 = (GGraph)comp.GetChild("effectTWH2");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -87,6 +91,8 @@ namespace UI.LuckyBox
             m_btnRight = null;
             m_effectZWH = null;
             m_effectTWH = null;
+            m_effectZWH2 = null;
+            m_effectTWH2 = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 13 - 13
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_BtnBack0.cs → GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_Button6.cs

@@ -2,20 +2,20 @@
 
 using FairyGUI;
 
-namespace UI.CommonGame
+namespace UI.Main
 {
-    public partial class UI_BtnBack0
+    public partial class UI_Button6
     {
         public GButton target;
-        public GLoader m_loaBg;
-        public const string URL = "ui://eg2y0ldpuyuxtj5";
-        public const string PACKAGE_NAME = "CommonGame";
-        public const string RES_NAME = "BtnBack0";
-        private static UI_BtnBack0 _proxy;
+        public Controller m_c1;
+        public const string URL = "ui://mfvz4q8kxfki9fzp";
+        public const string PACKAGE_NAME = "Main";
+        public const string RES_NAME = "Button6";
+        private static UI_Button6 _proxy;
 
-        public static UI_BtnBack0 Create(GObject gObject = null)
+        public static UI_Button6 Create(GObject gObject = null)
         {
-            var ui = new UI_BtnBack0();
+            var ui = new UI_Button6();
             if(gObject == null)
             	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
             else
@@ -24,11 +24,11 @@ namespace UI.CommonGame
             return ui;
         }
 
-        public static UI_BtnBack0 Proxy(GObject gObject = null)
+        public static UI_Button6 Proxy(GObject gObject = null)
         {
             if(_proxy == null)
             {
-                _proxy = new UI_BtnBack0();
+                _proxy = new UI_Button6();
             }
             var ui = _proxy;
             if(gObject == null)
@@ -55,11 +55,11 @@ namespace UI.CommonGame
 
         private void Init(GComponent comp)
         {
-            m_loaBg = (GLoader)comp.GetChild("loaBg");
+            m_c1 = comp.GetController("c1");
         }
         public void Dispose(bool disposeTarget = false)
         {
-            m_loaBg = null;
+            m_c1 = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_Button6.cs.meta

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

+ 3 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_ButtonModleEffect.cs

@@ -12,8 +12,8 @@ namespace UI.Main
         public GGraph m_holder;
         public GGraph m_holder1;
         public GLoader m_titleText;
-        public GLoader m_loaLockIcons;
         public GLoader m_iconMain;
+        public GLoader m_loaLockIcons;
         public const string URL = "ui://mfvz4q8kdkxp9fyb";
         public const string PACKAGE_NAME = "Main";
         public const string RES_NAME = "ButtonModleEffect";
@@ -66,8 +66,8 @@ namespace UI.Main
             m_holder = (GGraph)comp.GetChild("holder");
             m_holder1 = (GGraph)comp.GetChild("holder1");
             m_titleText = (GLoader)comp.GetChild("titleText");
-            m_loaLockIcons = (GLoader)comp.GetChild("loaLockIcons");
             m_iconMain = (GLoader)comp.GetChild("iconMain");
+            m_loaLockIcons = (GLoader)comp.GetChild("loaLockIcons");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -76,8 +76,8 @@ namespace UI.Main
             m_holder = null;
             m_holder1 = null;
             m_titleText = null;
-            m_loaLockIcons = null;
             m_iconMain = null;
+            m_loaLockIcons = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 9 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_ListCardFightItem.cs

@@ -18,6 +18,9 @@ namespace UI.Main
         public UI_ComDodgeFightStar m_dodgeStar1;
         public UI_ComDodgeFightStar m_dodgeStar2;
         public UI_ComDodgeFightStar m_dodgeStar3;
+        public GImage m_useIcon;
+        public GGraph m_effect;
+        public Transition m_t0;
         public const string URL = "ui://mfvz4q8kr1a99f";
         public const string PACKAGE_NAME = "Main";
         public const string RES_NAME = "ListCardFightItem";
@@ -76,6 +79,9 @@ namespace UI.Main
             m_dodgeStar1 = (UI_ComDodgeFightStar)UI_ComDodgeFightStar.Create(comp.GetChild("dodgeStar1"));
             m_dodgeStar2 = (UI_ComDodgeFightStar)UI_ComDodgeFightStar.Create(comp.GetChild("dodgeStar2"));
             m_dodgeStar3 = (UI_ComDodgeFightStar)UI_ComDodgeFightStar.Create(comp.GetChild("dodgeStar3"));
+            m_useIcon = (GImage)comp.GetChild("useIcon");
+            m_effect = (GGraph)comp.GetChild("effect");
+            m_t0 = comp.GetTransition("t0");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -95,6 +101,9 @@ namespace UI.Main
             m_dodgeStar2 = null;
             m_dodgeStar3.Dispose();
             m_dodgeStar3 = null;
+            m_useIcon = null;
+            m_effect = null;
+            m_t0 = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 23 - 13
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_MainUI.cs

@@ -10,14 +10,16 @@ namespace UI.Main
         public Controller m_type;
         public GLoader m_loaBg;
         public GComponent m_valueBar;
-        public GTextField m_grpLeaguetext;
-        public GGroup m_grpLeagueTips;
         public GGraph m_BottomEffectHolder;
         public UI_ComponentHeadBar m_headBar;
         public GButton m_btnYouJian;
         public GButton m_btnGongGao;
-        public GList m_list;
+        public UI_Button6 m_storageBtn;
         public UI_ButtonChange m_btnChange;
+        public GList m_list;
+        public GTextField m_grpLeaguetext;
+        public GGroup m_grpLeagueTips;
+        public GGroup m_listGroud;
         public UI_BtnModle2 m_btnActivityAfuGift;
         public UI_BtnModle2 m_btnWanShiLi;
         public UI_BtnModle2 m_btnTea;
@@ -32,13 +34,13 @@ namespace UI.Main
         public UI_BtnModle m_btnFirstRecharge;
         public UI_BtnModle m_btnGiftBag1;
         public UI_BtnModle m_btnGiftBag2;
-        public UI_BtnModle1 m_btnShow;
         public UI_ButtonModle1 m_btnZhaiXing;
         public UI_ButtonModleEffect m_btnMain;
         public UI_ButtonModle1 m_btnCiPai;
         public UI_ButtonModle1 m_btnXiuFang;
         public UI_ButtonModle1 m_btnHuanZhuang;
         public UI_ButtonModleEffect m_btnHaiZhiShi;
+        public UI_BtnModle1 m_btnShow;
         public UI_BtnModle1 m_btnDailyWelfare;
         public UI_BtnModle1 m_btnNewPlayerReward;
         public UI_BtnModle3 m_btnSevenReward;
@@ -50,6 +52,7 @@ namespace UI.Main
         public Transition m_openViewAction;
         public Transition m_hide;
         public Transition m_show;
+        public Transition m_storage;
         public const string URL = "ui://mfvz4q8kq08x0";
         public const string PACKAGE_NAME = "Main";
         public const string RES_NAME = "MainUI";
@@ -100,14 +103,16 @@ namespace UI.Main
             m_type = comp.GetController("type");
             m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_valueBar = (GComponent)comp.GetChild("valueBar");
-            m_grpLeaguetext = (GTextField)comp.GetChild("grpLeaguetext");
-            m_grpLeagueTips = (GGroup)comp.GetChild("grpLeagueTips");
             m_BottomEffectHolder = (GGraph)comp.GetChild("BottomEffectHolder");
             m_headBar = (UI_ComponentHeadBar)UI_ComponentHeadBar.Create(comp.GetChild("headBar"));
             m_btnYouJian = (GButton)comp.GetChild("btnYouJian");
             m_btnGongGao = (GButton)comp.GetChild("btnGongGao");
-            m_list = (GList)comp.GetChild("list");
+            m_storageBtn = (UI_Button6)UI_Button6.Create(comp.GetChild("storageBtn"));
             m_btnChange = (UI_ButtonChange)UI_ButtonChange.Create(comp.GetChild("btnChange"));
+            m_list = (GList)comp.GetChild("list");
+            m_grpLeaguetext = (GTextField)comp.GetChild("grpLeaguetext");
+            m_grpLeagueTips = (GGroup)comp.GetChild("grpLeagueTips");
+            m_listGroud = (GGroup)comp.GetChild("listGroud");
             m_btnActivityAfuGift = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnActivityAfuGift"));
             m_btnWanShiLi = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnWanShiLi"));
             m_btnTea = (UI_BtnModle2)UI_BtnModle2.Create(comp.GetChild("btnTea"));
@@ -122,13 +127,13 @@ namespace UI.Main
             m_btnFirstRecharge = (UI_BtnModle)UI_BtnModle.Create(comp.GetChild("btnFirstRecharge"));
             m_btnGiftBag1 = (UI_BtnModle)UI_BtnModle.Create(comp.GetChild("btnGiftBag1"));
             m_btnGiftBag2 = (UI_BtnModle)UI_BtnModle.Create(comp.GetChild("btnGiftBag2"));
-            m_btnShow = (UI_BtnModle1)UI_BtnModle1.Create(comp.GetChild("btnShow"));
             m_btnZhaiXing = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnZhaiXing"));
             m_btnMain = (UI_ButtonModleEffect)UI_ButtonModleEffect.Create(comp.GetChild("btnMain"));
             m_btnCiPai = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnCiPai"));
             m_btnXiuFang = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnXiuFang"));
             m_btnHuanZhuang = (UI_ButtonModle1)UI_ButtonModle1.Create(comp.GetChild("btnHuanZhuang"));
             m_btnHaiZhiShi = (UI_ButtonModleEffect)UI_ButtonModleEffect.Create(comp.GetChild("btnHaiZhiShi"));
+            m_btnShow = (UI_BtnModle1)UI_BtnModle1.Create(comp.GetChild("btnShow"));
             m_btnDailyWelfare = (UI_BtnModle1)UI_BtnModle1.Create(comp.GetChild("btnDailyWelfare"));
             m_btnNewPlayerReward = (UI_BtnModle1)UI_BtnModle1.Create(comp.GetChild("btnNewPlayerReward"));
             m_btnSevenReward = (UI_BtnModle3)UI_BtnModle3.Create(comp.GetChild("btnSevenReward"));
@@ -140,22 +145,26 @@ namespace UI.Main
             m_openViewAction = comp.GetTransition("openViewAction");
             m_hide = comp.GetTransition("hide");
             m_show = comp.GetTransition("show");
+            m_storage = comp.GetTransition("storage");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_type = null;
             m_loaBg = null;
             m_valueBar = null;
-            m_grpLeaguetext = null;
-            m_grpLeagueTips = null;
             m_BottomEffectHolder = null;
             m_headBar.Dispose();
             m_headBar = null;
             m_btnYouJian = null;
             m_btnGongGao = null;
-            m_list = null;
+            m_storageBtn.Dispose();
+            m_storageBtn = null;
             m_btnChange.Dispose();
             m_btnChange = null;
+            m_list = null;
+            m_grpLeaguetext = null;
+            m_grpLeagueTips = null;
+            m_listGroud = null;
             m_btnActivityAfuGift.Dispose();
             m_btnActivityAfuGift = null;
             m_btnWanShiLi.Dispose();
@@ -182,8 +191,6 @@ namespace UI.Main
             m_btnGiftBag1 = null;
             m_btnGiftBag2.Dispose();
             m_btnGiftBag2 = null;
-            m_btnShow.Dispose();
-            m_btnShow = null;
             m_btnZhaiXing.Dispose();
             m_btnZhaiXing = null;
             m_btnMain.Dispose();
@@ -196,6 +203,8 @@ namespace UI.Main
             m_btnHuanZhuang = null;
             m_btnHaiZhiShi.Dispose();
             m_btnHaiZhiShi = null;
+            m_btnShow.Dispose();
+            m_btnShow = null;
             m_btnDailyWelfare.Dispose();
             m_btnDailyWelfare = null;
             m_btnNewPlayerReward.Dispose();
@@ -213,6 +222,7 @@ namespace UI.Main
             m_openViewAction = null;
             m_hide = null;
             m_show = null;
+            m_storage = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_StoryDialogUI.cs

@@ -25,6 +25,8 @@ namespace UI.Main
         public GTextField m_txtPlayName;
         public GGroup m_comPlayName;
         public GGraph m_mask;
+        public GGraph m_effect;
+        public GLoader m_eyeOpen;
         public Transition m_t0;
         public Transition m_showMask;
         public Transition m_hideMask;
@@ -96,6 +98,8 @@ namespace UI.Main
             m_txtPlayName = (GTextField)comp.GetChild("txtPlayName");
             m_comPlayName = (GGroup)comp.GetChild("comPlayName");
             m_mask = (GGraph)comp.GetChild("mask");
+            m_effect = (GGraph)comp.GetChild("effect");
+            m_eyeOpen = (GLoader)comp.GetChild("eyeOpen");
             m_t0 = comp.GetTransition("t0");
             m_showMask = comp.GetTransition("showMask");
             m_hideMask = comp.GetTransition("hideMask");
@@ -127,6 +131,8 @@ namespace UI.Main
             m_txtPlayName = null;
             m_comPlayName = null;
             m_mask = null;
+            m_effect = null;
+            m_eyeOpen = null;
             m_t0 = null;
             m_showMask = null;
             m_hideMask = null;

+ 9 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/RoleInfo/UI_ComBtn.cs

@@ -36,6 +36,9 @@ namespace UI.RoleInfo
         public GTextInput m_SetLeagueNumType;
         public GTextInput m_SetNum;
         public GButton m_btnTeaPartyStart;
+        public GButton m_btnShareTest1;
+        public GButton m_btnShareTest2;
+        public GButton m_btnShareTest3;
         public const string URL = "ui://374k3dwvlqp0dm";
         public const string PACKAGE_NAME = "RoleInfo";
         public const string RES_NAME = "ComBtn";
@@ -112,6 +115,9 @@ namespace UI.RoleInfo
             m_SetLeagueNumType = (GTextInput)comp.GetChild("SetLeagueNumType");
             m_SetNum = (GTextInput)comp.GetChild("SetNum");
             m_btnTeaPartyStart = (GButton)comp.GetChild("btnTeaPartyStart");
+            m_btnShareTest1 = (GButton)comp.GetChild("btnShareTest1");
+            m_btnShareTest2 = (GButton)comp.GetChild("btnShareTest2");
+            m_btnShareTest3 = (GButton)comp.GetChild("btnShareTest3");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -144,6 +150,9 @@ namespace UI.RoleInfo
             m_SetLeagueNumType = null;
             m_SetNum = null;
             m_btnTeaPartyStart = null;
+            m_btnShareTest1 = null;
+            m_btnShareTest2 = null;
+            m_btnShareTest3 = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/RoleInfo/UI_RoleInfoUI.cs

@@ -32,6 +32,7 @@ namespace UI.RoleInfo
         public GTextField m_txtRoleID;
         public GButton m_btnCopy;
         public GButton m_btnSetting;
+        public GButton m_btnShare;
         public Transition m_Hide;
         public Transition m_Show;
         public const string URL = "ui://374k3dwvd4iw6k";
@@ -106,6 +107,7 @@ namespace UI.RoleInfo
             m_txtRoleID = (GTextField)comp.GetChild("txtRoleID");
             m_btnCopy = (GButton)comp.GetChild("btnCopy");
             m_btnSetting = (GButton)comp.GetChild("btnSetting");
+            m_btnShare = (GButton)comp.GetChild("btnShare");
             m_Hide = comp.GetTransition("Hide");
             m_Show = comp.GetTransition("Show");
         }
@@ -139,6 +141,7 @@ namespace UI.RoleInfo
             m_txtRoleID = null;
             m_btnCopy = null;
             m_btnSetting = null;
+            m_btnShare = null;
             m_Hide = null;
             m_Show = null;
             if(disposeTarget && target != null)

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

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

+ 110 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Share/UI_ShareUI.cs

@@ -0,0 +1,110 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.Share
+{
+    public partial class UI_ShareUI
+    {
+        public GComponent target;
+        public GGraph m_mask;
+        public GImage m_icon;
+        public GLoader m_CRCodeIcon;
+        public GComponent m_head;
+        public GTextField m_nameText;
+        public GTextField m_levelText;
+        public GButton m_btnShare;
+        public GButton m_btnShareWX;
+        public GButton m_btnShareWB;
+        public GButton m_btnShareQQ;
+        public GButton m_btnShareQQZone;
+        public GButton m_btnShareDouYin;
+        public GGroup m_shareGrade;
+        public GButton m_btnClose;
+        public const string URL = "ui://1f45z9smxfki0";
+        public const string PACKAGE_NAME = "Share";
+        public const string RES_NAME = "ShareUI";
+        private static UI_ShareUI _proxy;
+
+        public static UI_ShareUI Create(GObject gObject = null)
+        {
+            var ui = new UI_ShareUI();
+            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_ShareUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ShareUI();
+            }
+            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_mask = (GGraph)comp.GetChild("mask");
+            m_icon = (GImage)comp.GetChild("icon");
+            m_CRCodeIcon = (GLoader)comp.GetChild("CRCodeIcon");
+            m_head = (GComponent)comp.GetChild("head");
+            m_nameText = (GTextField)comp.GetChild("nameText");
+            m_levelText = (GTextField)comp.GetChild("levelText");
+            m_btnShare = (GButton)comp.GetChild("btnShare");
+            m_btnShareWX = (GButton)comp.GetChild("btnShareWX");
+            m_btnShareWB = (GButton)comp.GetChild("btnShareWB");
+            m_btnShareQQ = (GButton)comp.GetChild("btnShareQQ");
+            m_btnShareQQZone = (GButton)comp.GetChild("btnShareQQZone");
+            m_btnShareDouYin = (GButton)comp.GetChild("btnShareDouYin");
+            m_shareGrade = (GGroup)comp.GetChild("shareGrade");
+            m_btnClose = (GButton)comp.GetChild("btnClose");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_mask = null;
+            m_icon = null;
+            m_CRCodeIcon = null;
+            m_head = null;
+            m_nameText = null;
+            m_levelText = null;
+            m_btnShare = null;
+            m_btnShareWX = null;
+            m_btnShareWB = null;
+            m_btnShareQQ = null;
+            m_btnShareQQZone = null;
+            m_btnShareDouYin = null;
+            m_shareGrade = null;
+            m_btnClose = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Share/UI_ShareUI.cs.meta

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

+ 4 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/XiuFang/UI_Component.cs

@@ -11,6 +11,7 @@ namespace UI.XiuFang
         public UI_Component1 m_btnSuitSynthetic;
         public UI_Component1 m_btnClothingUpgrade;
         public UI_Component1 m_btnDecompose;
+        public UI_Component1 m_btnGYP;
         public const string URL = "ui://kv0ad4wywlc28";
         public const string PACKAGE_NAME = "XiuFang";
         public const string RES_NAME = "Component";
@@ -62,6 +63,7 @@ namespace UI.XiuFang
             m_btnSuitSynthetic = (UI_Component1)UI_Component1.Create(comp.GetChild("btnSuitSynthetic"));
             m_btnClothingUpgrade = (UI_Component1)UI_Component1.Create(comp.GetChild("btnClothingUpgrade"));
             m_btnDecompose = (UI_Component1)UI_Component1.Create(comp.GetChild("btnDecompose"));
+            m_btnGYP = (UI_Component1)UI_Component1.Create(comp.GetChild("btnGYP"));
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -73,6 +75,8 @@ namespace UI.XiuFang
             m_btnClothingUpgrade = null;
             m_btnDecompose.Dispose();
             m_btnDecompose = null;
+            m_btnGYP.Dispose();
+            m_btnGYP = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 4 - 1
GameClient/Assets/Game/HotUpdate/Game.HotUpdate.asmdef

@@ -6,7 +6,10 @@
         "GUID:7a41fac89c3ce014e99efb3723e6a98e",
         "GUID:e34a5702dd353724aa315fb8011f08c3",
         "GUID:b0a84d582f6a6fa4185f67ce934d99c2",
-        "GUID:6e5063adab271564ba0098a06a8cebda"
+        "GUID:6e5063adab271564ba0098a06a8cebda",
+        "GUID:d9a5d47c553a04a28a7d21a3f3fc8dc3",
+        "GUID:9b1c19877f4294a9cb33ff38fc9f1c83",
+        "GUID:f22fac247a56d2d41b687bb0d900e54e"
     ],
     "includePlatforms": [],
     "excludePlatforms": [],

+ 3 - 6
GameClient/Assets/Game/HotUpdate/HotUpdateDriver.cs

@@ -1,8 +1,5 @@
-using GFGGame.Launcher;
-using System.Collections;
-using UniFramework.Pooling;
+using UniFramework.Pooling;
 using UnityEngine;
-using YooAsset;
 
 namespace GFGGame
 {
@@ -21,9 +18,9 @@ namespace GFGGame
             OperationSystem.Initialize();
             GameController.Start();
             Reporter reporter = GameObject.Find("Reporter").GetComponent<Reporter>();
-            if(LauncherConfig.ChannelId != (int)ChannelID.Test && reporter != null)
+            if ((LauncherConfig.ChannelId != (int)ChannelID.Test) && reporter != null)
             {
-                reporter.numOfCircleToShow = 50;
+                reporter.numOfCircleToShow = 5;
             }
         }
 

+ 265 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManager.cs

@@ -0,0 +1,265 @@
+using System;
+using ET;
+using UnityEngine;
+using GFGGame.Launcher;
+
+namespace GFGGame
+{
+    public class QDDouYouManager : SingletonBase<QDDouYouManager>
+    {
+        public bool isLogining;
+        public string uid;
+        public string token;
+
+        public void Init()
+        {
+            Debug.Log("实例化DouYouSDKListener");
+            QDDouYouManagerInit.Instance.douYouSDKListener = new DouYouSDKListener();
+        }
+
+        public void Login()
+        {
+            // if (!string.IsNullOrEmpty(uid))
+            // {
+            //     EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, uid);
+            //     return;
+            // }
+            // if (isLogining) return;
+            // Debug.Log($"quick Login");
+            // isLogining = true;
+            QDDouYouManagerInit.Instance.ShowLogin();
+        }
+
+        public void OnCreateRole()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.CreateRole);
+        }
+
+        public void OnEnterGame()
+        {
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
+            
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+            
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
+            
+            if (GameGlobal.myNumericComponent == null) return;
+            int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+ 
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+
+            string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+
+            QDDouYouManagerInit.Instance.ReportRoleLogin(roleInfo.Id.ToString(), lvl.ToString(), roleInfo.Name,
+                roleInfo.ServerId.ToString(), serverName);
+            QDManager.PushRoleAction(DouYouRoleLogReportType.EnterGame);
+        }
+
+        public void OnQuitToLoginView()
+        {
+            Debug.Log($"DouYou OnQuitToLoginView");
+        }
+
+        public void Logout()
+        {
+            Debug.Log($"Game.HotUpdate DouYou Logout");
+            QDDouYouManagerInit.Instance.ShowLogout();
+        }
+
+        public void LoginOutBefore()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
+        }
+
+        public void Pay(int buyID, int count, string orderID, long price)
+        {
+            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(buyID);
+            if (shopCfg == null)
+            {
+                Log.Error($"recharge {buyID} config not found!");
+                return;
+            }
+
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
+            if (itemCfg == null)
+            {
+                Log.Error($"recharge {buyID} itemCfgId:{shopCfg.itemId} config not found!");
+                return;
+            }
+
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
+            
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+            
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
+            
+            if (GameGlobal.myNumericComponent == null) return;
+            int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+ 
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+
+            string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+
+            //自定义参数
+            string other = orderID + "|gfg|" + roleInfo.Id;
+            QDDouYouManagerInit.Instance.ShowSwitchPayment(orderID, price.ToString(), buyID.ToString(),
+                shopCfg.itemName, itemCfg.desc,
+                roleInfo.ServerId.ToString(), serverName, roleInfo.Id.ToString(), roleInfo.Name, lvl.ToString(), other);
+        }
+
+        public void Exit()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
+            QDDouYouManagerInit.Instance.ExitApp();
+        }
+    }
+
+    /// <summary>
+    /// SDK回调
+    /// </summary>
+    public class DouYouSDKListener : IDouYouSDKListener
+    {
+        // /// <summary>
+        // /// 测试消息
+        // /// </summary>
+        // /// <param name="message"></param>
+        // public void ReceiveMessageAb(string message)
+        // {
+        //     Debug.Log($"Game.HotUpdate ReceiveMessageAb:{message}");
+        // }
+
+        /// <summary>
+        /// SDK实例化成功
+        /// </summary>
+        /// <param name="message">SDK 实例化成功</param>
+        public void InitSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate InitSuccessAb: " + message);
+        }
+
+        /// <summary>
+        /// 登录成功 
+        /// </summary>
+        /// <param name="message">resUid + "|gfg|" + token</param>
+        public void LoginSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate LoginSuccessAb: " + message);
+            string[] result = message.Split(new string[] { "|gfg|" }, StringSplitOptions.None);
+
+            QDDouYouManager.Instance.isLogining = false;
+            QDDouYouManager.Instance.uid = result[0];
+            QDDouYouManager.Instance.token = result[1];
+            //登录成功的回调
+            EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, result[0]);
+        }
+
+        /// <summary>
+        /// 切换账号或退出登录后
+        /// </summary>
+        /// <param name="message">退出登录成功!</param>
+        public void OutLoginSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate OutLoginSuccessAb: " + message);
+            GameController.QuitToLoginView(true);
+            EventAgent.DispatchEvent(ConstMessage.OUT_LOGIN);
+        }
+
+        /// <summary>
+        /// 支付失败
+        /// </summary>
+        /// <param name="message">code + "|gfg|" + params.toString()</param>
+        public void PayFailAb(string message)
+        {
+            Debug.Log("Game.HotUpdate PayFailAb: " + message);
+            //改变临时订单状态为失败
+        }
+
+        /// <summary>
+        /// 支付成功
+        /// </summary>
+        /// <param name="message">code + "|gfg|" + params.toString()</param>
+        public void PaySuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate PaySuccessAb" + message);
+            //改变临时订单状态为支付成功
+            QDManager.PushRoleAction(DouYouRoleLogReportType.Pay);
+        }
+
+        #region SDK 生命周期函数
+
+        public void SdkOnStartAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnStartAb:{message}");
+        }
+
+        public void SdkOnPauseAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnPauseAb:{message}");
+        }
+
+        public void SdkOnResumeAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnResumeAb:{message}");
+        }
+
+        public void SdkOnStopAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnStopAb:{message}");
+        }
+
+        public void SdkOnDestroyAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnDestroyAb:{message}");
+        }
+
+        public void SdkOnRestartAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnRestartAb:{message}");
+        }
+
+        public void SdkOnBackPressedAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnBackPressedAb:{message}");
+        }
+
+        public void SdkOnNewIntentAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnNewIntentAb:{message}");
+        }
+
+        public void SdkOnConfigurationChangedAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnConfigurationChangedAb:{message}");
+        }
+
+        public void SdkOnSaveInstanceStateAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnSaveInstanceStateAb:{message}");
+        }
+
+        public void SdkOnActivityResultAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnActivityResultAb:{message}");
+        }
+
+        public void SdkOnRequestPermissionResultAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnRequestPermissionResultAb:{message}");
+        }
+
+        public void SdkOnWindowFocusChangedAb(string message)
+        {
+            Debug.Log($"Game.HotUpdate SdkOnWindowFocusChangedAb:{message}");
+        }
+
+        #endregion
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManager.cs.meta

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

+ 84 - 28
GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs

@@ -1,17 +1,26 @@
 using ET;
+using GFGGame.Launcher;
 using UnityEngine;
 
 namespace GFGGame
 {
-
     public class QDManager
     {
+        public bool isLogining;
+        public string uid;
+
         public static void Init()
         {
-            switch(LauncherConfig.ChannelId)
+            switch (LauncherConfig.ChannelId)
             {
+                case (int)ChannelID.Test:
+                    QDShareManager.Instance.Init();
+                    break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.Init();
+                    QDShareManager.Instance.Init();
+                    break;
                 default:
-                    
                     break;
             }
         }
@@ -21,13 +30,19 @@ namespace GFGGame
             ViewManager.Show<ModalStatusView>("登录中...");
             switch (LauncherConfig.ChannelId)
             {
-                default:
+                case (int)ChannelID.Test:
                     bool login = GameController.CheckLoginCache(true);
                     if (!login)
                     {
                         ViewManager.Hide<ModalStatusView>();
                         ViewManager.Show<LoginInputView>();
                     }
+
+                    break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.Login();
+                    break;
+                default:
                     break;
             }
         }
@@ -36,9 +51,14 @@ namespace GFGGame
         {
             switch (LauncherConfig.ChannelId)
             {
-                default:
+                case (int)ChannelID.Test:
 
                     break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.OnCreateRole();
+                    break;
+                default:
+                    break;
             }
         }
 
@@ -46,9 +66,14 @@ namespace GFGGame
         {
             switch (LauncherConfig.ChannelId)
             {
-                default:
+                case (int)ChannelID.Test:
 
                     break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.OnEnterGame();
+                    break;
+                default:
+                    break;
             }
         }
 
@@ -57,23 +82,33 @@ namespace GFGGame
         {
             switch (LauncherConfig.ChannelId)
             {
+                case (int)ChannelID.Test:
+
+                    break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.OnQuitToLoginView();
+                    break;
                 default:
-                    
                     break;
             }
         }
 
-        public static void Pay(int buyID, int count, string orderID, long Price)
+        public static void Pay(int buyID, int count, string orderID, long price)
         {
             switch (LauncherConfig.ChannelId)
             {
-                default:
+                case (int)ChannelID.Test:
 
                     break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.Pay(buyID, count, orderID, price);
+                    break;
+                default:
+                    break;
             }
         }
 
-        public static void Logout(bool fromSdkLogoutCallback)
+        public static void Logout()
         {
             GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();
             GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
@@ -82,10 +117,16 @@ namespace GFGGame
             {
                 PlayerPrefs.DeleteKey(GameConst.PASSWORD_LAST_LOGIN_KEY);
             }
+
             switch (LauncherConfig.ChannelId)
             {
+                case (int)ChannelID.Test:
+
+                    break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.Logout();
+                    break;
                 default:
-                    ViewManager.Show<LoginInputView>();
                     break;
             }
         }
@@ -97,42 +138,57 @@ namespace GFGGame
                 case (int)ChannelID.Test:
                     GameController.ShowExitAlert();
                     break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.Exit();
+                    break;
                 default:
-
                     break;
             }
         }
 
+        //上报角色行为给sdk
+        public static void PushRoleAction(DouYouRoleLogReportType reportType)
+        {
+            //改名上报给sdk
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
+
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
+
+            if (GameGlobal.myNumericComponent == null) return;
+            int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+
+            string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+            QDDouYouManagerInit.Instance.ReportRole((int)reportType,
+                roleInfo.Id.ToString(), lvl.ToString(), roleInfo.Name, roleInfo.ServerId.ToString(),
+                serverName);
+        }
+
         public static bool IsTaptap
         {
-            get
-            {
-                return LauncherConfig.ChannelId == (int)ChannelID.TapTap;
-            }
+            get { return LauncherConfig.ChannelId == (int)ChannelID.TapTap; }
         }
 
         public static bool IsHYKB
         {
-            get
-            {
-                return LauncherConfig.ChannelId == (int)ChannelID.HYKB;
-            }
+            get { return LauncherConfig.ChannelId == (int)ChannelID.HYKB; }
         }
 
         public static bool IsBiliBili
         {
-            get
-            {
-                return LauncherConfig.ChannelId == (int)ChannelID.BiliBili;
-            }
+            get { return LauncherConfig.ChannelId == (int)ChannelID.BiliBili; }
         }
 
         public static bool IsHuaWei
         {
-            get
-            {
-                return LauncherConfig.ChannelId == (int)ChannelID.HUAWEI;
-            }
+            get { return LauncherConfig.ChannelId == (int)ChannelID.HUAWEI; }
         }
     }
 }

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

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bc4adb18ebb44800a28c1150b6f3e9d4
+timeCreated: 1717839408

+ 124 - 0
GameClient/Assets/Game/HotUpdate/Platform/ShareSDK/QDShareManager.cs

@@ -0,0 +1,124 @@
+using System.Collections;
+using cn.sharesdk.unity3d;
+using GFGGame.Launcher;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class QDShareManager : SingletonBase<QDShareManager>
+    {
+        public void Init()
+        {
+            QDShareManagerInit.Instance.shareSDKListener = new ShareSDKListener();
+        }
+
+        //回传用户隐私授权结果
+
+        /// <summary>
+        /// 构造分享信息 SetShareType
+        /// </summary>
+        /// <param name="text">分享的文字</param>
+        /// <param name="imageUrl">iOS平台,本地以及网络图片都使用此方法</param>
+        /// <param name="imageUrlArr">分享一组图片</param>
+        /// <param name="title">分享的标题</param>
+        /// <param name="titleUrl">标题的网络链接(QQ和QQ空间使用 )</param>
+        /// <param name="site"></param>
+        /// <param name="siteUrl"></param>
+        /// <param name="url">分享的链接(微信,微博,易信,Facebook等平台)</param>
+        /// <param name="comment"></param>
+        /// <param name="musicUrl"></param>
+        /// <param name="shareType">分享类型(微信,易信) ContentType</param>
+        /// <returns></returns>
+        public ShareContent NewStructureShareContent(string text, string imageUrl, string[] imageUrlArr, string title,
+            string titleUrl,
+            string site,
+            string siteUrl,
+            string url,
+            string comment,
+            string musicUrl, int shareType)
+        {
+            ShareContent content = new ShareContent();
+            content.SetText(text);
+            content.SetImageUrl(imageUrl);
+            content.SetImageArray(imageUrlArr);
+            content.SetTitle(title);
+            content.SetTitleUrl(titleUrl);
+            content.SetSite(site);
+            content.SetSiteUrl(siteUrl);
+            content.SetUrl(url);
+            content.SetComment(comment);
+            content.SetMusicUrl(musicUrl);
+            content.SetShareType(shareType);
+            return content;
+        }
+
+        /// <summary>
+        /// 回传用户隐私授权结果给sdk
+        /// </summary>
+        /// <param name="granted"></param>
+        public void SubmitPolicyGrantResult(bool granted = true)
+        {
+            QDShareManagerInit.Instance.mobsdk.submitPolicyGrantResult(granted);
+        }
+
+        //通过分享菜单分享 
+        public int ShowPlatformList(PlatformType[] platforms, ShareContent shareContent)
+        {
+            return QDShareManagerInit.Instance.shareSDK.ShowPlatformList(platforms, shareContent, 100, 100);
+        }
+
+        //直接通过编辑界面分享
+        public int ShowShareContentEditor(PlatformType platformType, ShareContent shareContent)
+        {
+            return QDShareManagerInit.Instance.shareSDK.ShowShareContentEditor(platformType, shareContent);
+        }
+
+        //直接分享
+        public int ShareContent(PlatformType platformType, ShareContent shareContent)
+        {
+            return QDShareManagerInit.Instance.shareSDK.ShareContent(platformType, shareContent);
+        }
+    }
+
+    public class ShareSDKListener : IShareSDKListener
+    {
+        public void OnAuthResult(int reqID, ResponseState state, PlatformType type, Hashtable result)
+        {
+            Debug.Log($"OnAuthResult");
+        }
+
+        public void OnGetUserInfoResult(int reqID, ResponseState state, PlatformType type,
+            Hashtable result)
+        {
+            Debug.Log($"OnGetUserInfoResult");
+        }
+
+        public void OnShareResult(int reqID, ResponseState state, PlatformType type, Hashtable result)
+        {
+            if (state == ResponseState.Success)
+            {
+                ShareRecordSProxy.ReqShareRecord().Coroutine();
+            }
+
+            Debug.Log($"OnShareResult state:" + state);
+        }
+
+        public void OnGetFriendsResult(int reqID, ResponseState state, PlatformType type,
+            Hashtable result)
+        {
+            Debug.Log($"OnGetFriendsResult");
+        }
+
+        public void OnFollowFriendResult(int reqID, ResponseState state, PlatformType type,
+            Hashtable result)
+        {
+            Debug.Log($"OnFollowFriendResult");
+        }
+
+        public void OnIsClientValidForAndroidResult(int reqID, ResponseState state, PlatformType type,
+            Hashtable result)
+        {
+            Debug.Log($"OnFollowFriendResult");
+        }
+    }
+}

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

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b74c0b4ef0234630ad3dcda87b3ef29a
+timeCreated: 1717839417

+ 66 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/CollegeSproxy.cs

@@ -0,0 +1,66 @@
+using ET;
+using GFGGame;
+using System;
+using System.Collections.Generic;
+
+namespace ET
+{
+    public static class CollegeSProxy
+    {
+        public static async ETTask<bool> ReqCollectUpgradeInfo()
+        {
+            var response = (M2C_GetDressUpSkillDes)await MessageHelper.SendToServer(new C2M_GetDressUpSkillDes());
+            if (!(response is { Error: ErrorCode.ERR_Success })) return false;
+            int Count = response.CollectPartInfos.Count;
+            CollegeBoostCfg collectcfg;
+            for (int i = 0; i < response.CollectPartInfos.Count; i++)
+            {
+                    List<int> item = new List<int>() { response.CollectPartInfos[i].Stage, response.CollectPartInfos[i].Lvl };
+                    collectcfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(i, item[0], item[1]);
+                    if (collectcfg == null)
+                    {
+                        item.Add(0);
+                    }
+                    else
+                    {
+                        item.Add(collectcfg.value);
+                    }
+                    if (CollectPartDataManager.Instance.CollectPartDataDic.ContainsKey(response.CollectPartInfos[i].CollectPartType))
+                    {
+                        CollectPartDataManager.Instance.CollectPartDataDic[response.CollectPartInfos[i].CollectPartType] = item;
+                    }
+                    else
+                    {
+                        CollectPartDataManager.Instance.CollectPartDataDic.Add(response.CollectPartInfos[i].CollectPartType, item);
+                    }
+            }
+            return true;
+    }
+
+        public static async ETTask<bool> ReqCollectUpgrade(int partType,int stage,int lv)
+        {
+            var response = (M2C_UpDressUpSkill)await MessageHelper.SendToServer(new C2M_UpDressUpSkill(){ CollectPartType = partType, Stage = stage,Lvl = lv });
+            if (!(response is { Error: ErrorCode.ERR_Success })) return false;
+            List<int> item = new List<int>() { response.CollectPartInfo.Stage, response.CollectPartInfo.Lvl };
+            CollegeBoostCfg collectcfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(response.CollectPartInfo.CollectPartType, item[0], item[1]);
+            if (collectcfg == null)
+            {
+                item.Add(0);
+            }
+            else
+            {
+                item.Add(collectcfg.value);
+            }
+            if (CollectPartDataManager.Instance.CollectPartDataDic.ContainsKey(response.CollectPartInfo.CollectPartType))
+            {
+                CollectPartDataManager.Instance.CollectPartDataDic[response.CollectPartInfo.CollectPartType] = item;
+            }
+            else
+            {
+                CollectPartDataManager.Instance.CollectPartDataDic.Add(response.CollectPartInfo.CollectPartType, item);
+            }
+            EventAgent.DispatchEvent(ConstMessage.COLLEGE_UPGRADE);
+            return true;
+        }
+    }
+}

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

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

+ 2 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/RoleInfoSProxy.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using ET;
+using GFGGame.Launcher;
 
 namespace GFGGame
 {
@@ -130,6 +131,7 @@ namespace GFGGame
                 {
                     GameGlobal.zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole().Name = response.Name;
                     EventAgent.DispatchEvent(ConstMessage.CHANGE_ROLE_NAME);
+                    QDManager.PushRoleAction(DouYouRoleLogReportType.LevelUp);
                     return true;
                 }
             }

+ 32 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/ShareRecordSProxy.cs

@@ -0,0 +1,32 @@
+using ET;
+
+namespace GFGGame
+{
+    public class ShareRecordSProxy
+    {
+        /// <summary>
+        /// 分享成功请求服务端进行分享次数记录
+        /// </summary>
+        /// <returns></returns>
+        public static async ETTask<bool> ReqShareRecord()
+        {
+            M2C_ShareRecordTimes response;
+            response = (M2C_ShareRecordTimes)await MessageHelper.SendToServer(new C2M_ShareRecordTimes());
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    if (response.RewardList.Count > 0)
+                    {
+                        // 奖励弹窗
+                        BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.RewardList));
+                    }
+
+                    return true;
+                }
+            }
+
+            return false;
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/ShareRecordSProxy.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1528643098e44dbdb608418961271e07
+timeCreated: 1718375771

+ 16 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/ShareSProxy.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Net;
+using System.Net.Http;
+using ET;
+using FairyGUI;
+using UnityEngine;
+using UnityEngine.Networking;
+
+namespace GFGGame
+{
+    public static class ShareSProxy
+    {
+    }
+}

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

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

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

@@ -163,7 +163,7 @@ namespace GFGGame
             {
                 if(response.AllKs[i] == 6200123)
                 {
-                    TimeTracingDataManager.SuitID = (int)response.AllVs[i];
+                    TimeTracingDataManager.SuitID = (int)response.AllVs[i]; 
                     return true;
                 }
             }

+ 2 - 6
GameClient/Assets/Game/HotUpdate/Utils/LogUtil.cs

@@ -34,11 +34,10 @@ namespace GFGGame
 
         public static void LogDev(string content)
         {
-            if(LauncherConfig.onDebug > 0 || LauncherConfig.ChannelId == (int)ChannelID.Test)
+            if (LauncherConfig.onDebug > 0 || LauncherConfig.ChannelId == (int)ChannelID.Test)
             {
                 Debug.Log($"dev log : {content}");
             }
-
         }
 
         public static void LogFormatDev(string content, params object[] args)
@@ -47,7 +46,6 @@ namespace GFGGame
             {
                 Debug.LogFormat($"dev log : {content}", args);
             }
-
         }
 
         public static void LogWarningDev(string content)
@@ -65,7 +63,5 @@ namespace GFGGame
                 Debug.LogWarningFormat($"dev warning {content}", args);
             }
         }
-        
     }
-}
-
+}

+ 5 - 0
GameClient/Assets/Game/HotUpdate/Utils/ResPathUtil.cs

@@ -309,5 +309,10 @@ namespace GFGGame
         {
             return $"{LUCKY_BOX_TITLE_PATH}{res}.{extName}";
         }
+        
+        public static string GetEmojiResPath(string dir, string res, string extName = "prefab")
+        {
+            return $"{ANIMATION_DIR_PATH}/{dir}/{res}.{extName}";
+        }
     }
 }

+ 2 - 5
GameClient/Assets/Game/HotUpdate/Views/ActivityAfternoonTea/ActivitySyntheticView.cs

@@ -38,7 +38,6 @@ namespace GFGGame
             _valueBarController = new ValueBarController(_ui.m_valueBar);
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
             _ui.m_listSynthetic.itemRenderer = RenderListSyntheticItem;
-            _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("gf_hdzy_bj");
         }
 
         protected override void OnShown()
@@ -99,10 +98,8 @@ namespace GFGGame
         private void RefreshTimeText()
         {
             var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.ItemSynthetic);
-            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
-            long time = TimeUtil.DateTimeToTimestamp(activityOpenCfg.endTime) - TimeHelper.ServerNow();
-            string strTime = TimeUtil.FormattingTimeTo_DDHHmm(time);
-            _ui.m_txtTime.text = "剩余:" + strTime;
+            long curTime = ActivityDataManager.Instance.GetActivityTime(activityInfo.ActivityId);
+            _ui.m_txtTime.text = "剩余:" + TimeUtil.FormattingTimeTo_DDHHmm(curTime);
         }
         
         private void RenderListSyntheticItem(int index, GObject obj)

+ 2 - 5
GameClient/Assets/Game/HotUpdate/Views/ActivityAfternoonTea/ActivityTeaMainView.cs

@@ -46,11 +46,8 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-            _ui.m_Bg.url = ResPathUtil.GetBgImgPath("gfxwc_zymbj");
-            _ui.m_BgOne.url = ResPathUtil.GetBgImgPath("gfxwc_zjmlp");
-            _ui.m_oneTimeIcon.visible = false;
-            _ui.m_threeTimeIcon.visible = false;
-            _ui.m_twoTimeIcon.visible = false;
+            _ui.m_Bg.url = ResPathUtil.GetBgImgPath("gfxwc_xrbj");
+            _ui.m_BgOne.url = "";
             RedDotController.Instance.SetComRedDot(_ui.m_twoViewIcon, ActivityTeaDataManager.Instance.GetRewardRed()|| ActivityTeaDataManager.Instance.CheckVisitTaskRed());
             RedDotController.Instance.SetComRedDot(_ui.m_oneViewIcon, ActivityTeaDataManager.Instance.CheckHRDRed(),"",-85);
             RedDotController.Instance.SetComRedDot(_ui.m_threeViewIcon, ActivityTeaDataManager.Instance.GetActivitySyntheticRed(),"",-85);

+ 6 - 13
GameClient/Assets/Game/HotUpdate/Views/ActivityAfternoonTea/ActivityTeaVisitView.cs

@@ -50,18 +50,14 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-            _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("xnbh_bg");
+            _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("bg_hybh");
             _ui.m_ruleIcon.data = 300028;
             activityID = 5004;
             RoleLimitData limitData = RoleLimitDataManager.GetLimitData(ActivityVisitCfgArray.Instance.dataArray[0].limitId);
             time = limitData.TotalPlayMax - limitData.PlayTimes;
             _ui.m_visitNum.text = "当前拜访次数:" + time + "/" + limitData.TotalPlayMax;
             _ui.m_taskList.numItems = ActivityVisitCfgArray.Instance.dataArray.Length;
-            ActivityOpenCfg _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(activityID);
-            long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime);
-            long curTime = TimeHelper.ServerNow();
-            TimeUtil.FormattingTime(curTime, endTime, out int num, out string str);
-            _ui.m_time.text = "剩余时间:" + TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
+            _ui.m_time.text = "剩余时间:" + TimeUtil.FormattingTimeTo_DDHHmm(ActivityDataManager.Instance.GetActivityTime(activityID));
             Timers.inst.Add(1, 0, UpdateTime);
         }
 
@@ -87,18 +83,15 @@ namespace GFGGame
         
         private void UpdateTime(object param = null)
         {
-            ActivityOpenCfg _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(activityID);
-            long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime);
-            long curTime = TimeHelper.ServerNow();
-            if (endTime < curTime)
+            long curTime = ActivityDataManager.Instance.GetActivityTime(activityID);
+            if (curTime <= 0)
             {
                 PromptController.Instance.ShowFloatTextPrompt("拜访活动已结束");
                 Timers.inst.Remove(UpdateTime);
                 GameController.GoBackToMainView();
                 return;
             }
-            TimeUtil.FormattingTime(curTime, endTime, out int num, out string str);
-            _ui.m_time.text = "剩余时间:" + TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
+            _ui.m_time.text = "剩余时间:" + TimeUtil.FormattingTimeTo_DDHHmm(curTime);
         }
 
         private void UpdateVisitNum(EventContext context = null)
@@ -109,7 +102,7 @@ namespace GFGGame
             }
             RoleLimitData limitData = RoleLimitDataManager.GetLimitData(ActivityVisitCfgArray.Instance.dataArray[0].limitId);
             time = limitData.TotalPlayMax - limitData.PlayTimes;
-            _ui.m_visitNum.text = "当前拜访次数" + time + "/" + limitData.TotalPlayMax;
+            _ui.m_visitNum.text = "当前拜访次数:" + time + "/" + limitData.TotalPlayMax;
         }
 
         private void RenderTaskList(int index, GObject obj)

+ 3 - 5
GameClient/Assets/Game/HotUpdate/Views/ActivityHuaRongDao/ActivityHuaRongDaoEntryView.cs

@@ -245,12 +245,10 @@ namespace GFGGame
 
         private void UpdateTime(object param)
         {
-            long curTime = TimeHelper.ServerNow();
-            var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(_activityID);
-            if (activityInfo != null)
+            long curTime = ActivityDataManager.Instance.GetActivityTime(_activityID);
+            if (curTime <= 0)
             {
-                long endTime = activityInfo.EndTime;
-                _ui.m_txtTime.text = "剩余" + TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
+                _ui.m_txtTime.text = "剩余" + TimeUtil.FormattingTimeTo_DDHHmm(curTime);
             }
         }
 

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/ActivityHuaRongDao/ActivityHuaRongDaoView.cs

@@ -573,7 +573,7 @@ namespace GFGGame
 
         private void CheckActivityEnd(object param)
         {
-            if (!ActivityFYJYDataManager.Instance.CheckOpen())
+            if (!ActivityDataManager.Instance.CheckActivityByRoleTime(5003))
             {
                 // 活动结束时强行退回主界面
                 ViewManager.Show<MainUIView>(null, true);

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/ZCJBBuyTipsView.cs

@@ -2,7 +2,6 @@
 using System.Collections.Generic;
 using UI.ActivityMain;
 using FairyGUI;
-using UI.CommonGame;
 
 namespace GFGGame
 {
@@ -26,14 +25,15 @@ namespace GFGGame
         protected override void OnInit()
         {
             base.OnInit();
+            packageName = UI_ZCJBBuyTips.PACKAGE_NAME;
             _ui = UI_ZCJBBuyTips.Create();
             this.viewCom = _ui.target;
             this.viewCom.Center();
             this.modal = true;
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
 
             _ui.m_btnRight.onClick.Add(OnClickBtnSure);
             _ui.m_btnLeft.onClick.Add(OnClickBtnCancel);
-            _ui.m_graph.onClick.Add(OnClickBtnCancel);
         }
 
         protected override void OnShown()

+ 25 - 9
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/ZGTHgiftDCTipsView.cs

@@ -43,7 +43,7 @@ namespace GFGGame
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
 
             _ui.m_Itemlist.itemRenderer = ListItemRender;
-            _ui.m_btnCharge.onClick.Add(OnBtnGetClick);
+            _ui.m_btnCharge.target.onClick.Add(OnBtnGetClick);
             _ui.m_btnClose.onClick.Add(this.Hide);
             _ui.m_notTips.onClick.Add(OnClickTips);
         }
@@ -51,13 +51,13 @@ namespace GFGGame
         protected override void AddEventListener()
         {
             base.AddEventListener();
-            EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, OnNumericChange);
+            EventAgent.AddEventListener(ConstMessage.SHOP_BUY, UpdateBtn);
         }
 
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
-            EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, OnNumericChange);
+            EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, UpdateBtn);
         }
 
         protected override void OnShown()
@@ -92,7 +92,22 @@ namespace GFGGame
         {
             //修改直购逻辑,根据时间判断传入不用的直购id,是折扣还是现价
             await ReqShopBuy(giftShopId);
-            _ui.m_btnCharge.visible = false;
+        }
+        private void UpdateBtn()
+        {
+            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(giftShopId); 
+            var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
+            if (remainBuyNum == 0)
+            {
+                //已售完
+                _ui.m_btnCharge.target.visible = false;
+            }
+            else
+            {
+                //未售完
+                _ui.m_btnCharge.target.visible = true;
+            }
+
         }
         private void OnClickTips()
         {
@@ -122,21 +137,22 @@ namespace GFGGame
             _ui.m_suitIcon.url = string.Format("ui://ActivityMain/{0}", suitCfg.res);
             _ui.m_Itemlist.numItems = item.itemsArr.Length;
             _ui.m_txtName.text = suitCfg.name;
-            _ui.m_btnCharge.GetChild("title").text = string.Format("{0}元/购买", shopCfg.configPrice.ToString());
+            _ui.m_btnCharge.target.GetChild("txtPrice").text = string.Format("{0}", shopCfg.configPrice.ToString());
+            _ui.m_btnCharge.target.GetChild("txtOriginalPrice").text = string.Format("{0}", shopCfg.originalPrice.ToString());
             _ui.m_discountText.text = discount.ToString();
             int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
             if (shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum)
             {
-                _ui.m_btnCharge.visible = true;
+                _ui.m_btnCharge.target.visible = true;
             }
             else
             {
-                _ui.m_btnCharge.visible = false;
+                _ui.m_btnCharge.target.visible = false;
             }
             //判断这个直购id是否购买是否显示按钮
             if (false)
             {
-                _ui.m_btnCharge.visible = false;
+                _ui.m_btnCharge.target.visible = false;
             }
         }
 
@@ -182,7 +198,7 @@ namespace GFGGame
             if (timeSale <= 0)
             {
                 _ui.m_timeText.text = "";
-                _ui.m_btnCharge.visible = false;
+                _ui.m_btnCharge.target.visible = false;
                 Timers.inst.Remove(UpdateTime);
                 return;
             }

+ 24 - 10
GameClient/Assets/Game/HotUpdate/Views/ActivityMainTips/ZGTHgiftTipsView.cs

@@ -13,6 +13,7 @@ namespace GFGGame
         private int giftItemId = 0;
         private ItemCfg itemcfg;
         private int shopId = 0;
+        private ShopCfg shopCfg;
         public override void Dispose()
         {
 
@@ -37,7 +38,7 @@ namespace GFGGame
 
             _ui.m_Itemlist.itemRenderer = ListItemRender;
 
-            _ui.m_btnBuy.onClick.Add(OnBtnGetClick);
+            _ui.m_btnBuy.target.onClick.Add(OnBtnGetClick);
             _ui.m_btnClose.onClick.Add(this.Hide);
             _ui.m_notTips.onClick.Add(OnClickTips);
         }
@@ -45,19 +46,20 @@ namespace GFGGame
         protected override void AddEventListener()
         {
             base.AddEventListener();
-
+            EventAgent.AddEventListener(ConstMessage.SHOP_BUY, UpdateBtn);
         }
 
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, UpdateBtn);
         }
 
         protected override void OnShown()
         {
             base.OnShown();
             
-            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(ActivityOpenCfgArray.Instance.GetCfg(6002).paramsArr[0]);
+            shopCfg = ShopCfgArray.Instance.GetCfg(ActivityOpenCfgArray.Instance.GetCfg(6002).paramsArr[0]);
             giftItemId = shopCfg.itemId;
             shopId = shopCfg.id;
             itemcfg = ItemCfgArray.Instance.GetCfg(giftItemId);
@@ -65,13 +67,14 @@ namespace GFGGame
             int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
             if (shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum)
             {
-                _ui.m_btnBuy.visible = true;
+                _ui.m_btnBuy.target.visible = true;
             }
             else
             {
-                _ui.m_btnBuy.visible = false;
+                _ui.m_btnBuy.target.visible = false;
             }
-            _ui.m_btnBuy.GetChild("title").text = string.Format("{0}元/购买", shopCfg.configPrice.ToString());
+            _ui.m_btnBuy.target.GetChild("txtPrice").text = string.Format("{0}", shopCfg.configPrice.ToString());
+            _ui.m_btnBuy.target.GetChild("txtOriginalPrice").text = string.Format("{0}", shopCfg.originalPrice.ToString());
 
             var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(6002);
             long endTime = 0;
@@ -83,7 +86,7 @@ namespace GFGGame
             if (leftTime <= 0)
             {
                 _ui.m_timeText.text = "";
-                _ui.m_btnBuy.visible = false;
+                _ui.m_btnBuy.target.visible = false;
                 Timers.inst.Remove(UpdateTime);
                 return;
             }
@@ -106,12 +109,23 @@ namespace GFGGame
         }
         private void OnBtnGetClick()
         {
-            _ui.m_btnBuy.visible = false;
+            //_ui.m_btnBuy.target.visible = false;
             ReqShopBuy(shopId).Coroutine();
         }
         private void UpdateBtn()
         {
-            _ui.m_btnBuy.visible = false;
+            var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
+            if (remainBuyNum == 0)
+            {
+                //已售完
+                _ui.m_btnBuy.target.visible = false;
+            }
+            else
+            {
+                //未售完
+                _ui.m_btnBuy.target.visible = true;
+            }
+            
         }
         private void OnClickTips()
         {
@@ -148,7 +162,7 @@ namespace GFGGame
             if (leftTime <= 0)
             {
                 _ui.m_timeText.text = "";
-                _ui.m_btnBuy.visible = false;
+                _ui.m_btnBuy.target.visible = false;
                 Timers.inst.Remove(UpdateTime);
                 return;
             }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Card/CardDetailView.cs

@@ -147,7 +147,7 @@ namespace GFGGame
             listItem.m_txtLv.text = data.lv + "级";
             listItem.m_txtName.text = data.itemCfg.name;
             RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.GetCardRed(data.id), "", 5, -10);
-
+            RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.CheckCardCanSynthetic(data.id), "", 5, -10);
             listItem.m_rarity.selectedIndex = data.itemCfg.rarity;
 
             if (data.itemCfg.rarity == 5)

+ 7 - 3
GameClient/Assets/Game/HotUpdate/Views/Card/CardFosterView.cs

@@ -129,7 +129,7 @@ namespace GFGGame
 
             _ui.m_btnLeft.onClick.Add(OnClickBtnLeft);
             _ui.m_btnRight.onClick.Add(OnClickBtnRight);
-
+            _ui.m_cardSyntheticBtn.onClick.Add(OnClickBtnCardSyntheticView);
             //_ui.m_loaCard.onClick.Add(OnClickLoaCard);
             //_ui.m_loaListener1.onClick.Add(OnClickLoaCard);
             //_ui.m_comImgCard.target.onClick.Add(OnClickLoaCard);
@@ -279,7 +279,6 @@ namespace GFGGame
 
             _ui.m_ComFosterTop.m_c1.selectedIndex = _ui.m_ComFosterBottom.m_c_from.selectedIndex;
             _nowIndex = _cardData.index;
-
             RefCardFosterInfo();
         }
         protected override void AddEventListener()
@@ -1285,7 +1284,7 @@ namespace GFGGame
             //RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnLv, RedDotDataManager.Instance.GetCardUpLvRed(_cardData.id), "", 0, 0);
             //RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnStar, RedDotDataManager.Instance.GetCardUpStarRed(_cardData.id), "", 0, 0);
             RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id), "", 0, 0);
-
+            RedDotController.Instance.SetComRedDot(_ui.m_cardSyntheticBtn, RedDotDataManager.Instance.CheckCardCanSynthetic(_cardData.id),"",-10,10);
         }
         protected override void OnHide()
         {
@@ -1364,5 +1363,10 @@ namespace GFGGame
             _ui.m_comImgCard.target.SetXY(_ui.m_comImgCard.target.x, _ui.m_comImgCard.target.y - ViewGlobal.GetRealTopOffset());
             _ui.m_comImgCard.target.SetSize(_ui.m_comImgCard.target.width, ViewGlobal.GetRealTopOffset() + _ui.target.height);
         }
+
+        private void OnClickBtnCardSyntheticView()
+        {
+              ViewManager.Show<CardSyntheticView>(new object[] { _cardData.id });
+        }
     }
 }

+ 27 - 0
GameClient/Assets/Game/HotUpdate/Views/Card/CardSyntheticView.cs

@@ -84,6 +84,8 @@ namespace GFGGame
 
             _valueBarController.OnShown();
             _ui.m_loaBg2.url = ResPathUtil.GetBgImgPath("hc_bj_1");
+            ItemCfg item = ItemCfgArray.Instance.GetCfg(_cardItem.transItem);
+            _ui.m_skillIcon.url = ResPathUtil.GetIconPath(item.res,"png");
             var response = await ClothingSyntheticSProxy.GetCardSyntheticCount(_cardId);
             cardSyntheticCount = response;
             UpdateView();
@@ -161,7 +163,19 @@ namespace GFGGame
             UpdateName(_cardItem.name);
             _ui.m_comImgCard.m_ComCardImgRes.m_loaCard.url = ResPathUtil.GetCardPath(_cardItem.res);
             _ui.m_timesText.text = string.Format("合成次数:{0}/{1}", cardSyntheticCount, _cardItem.syntheticTimes);
+            ItemData itemCount;
+            long count;
+            if (BagDataManager.Instance.GetBagData().TryGetValue(_cardItem.transItem, out itemCount))
+            {
+                count = itemCount.num;
+            }
+            else
+            {
+                count = 0;
+            }
+            _ui.m_skillCountText.text = string.Format("已拥有:{0}", count.ToString());
             UpdateSelectedItemInfo();
+            RedDotController.Instance.SetComRedDot(_ui.m_btnProduction, RedDotDataManager.Instance.CheckCardCanSynthetic(_cardId),"");
         }
 
         private void UpdateSelectedItemInfo()
@@ -281,7 +295,20 @@ namespace GFGGame
             cardSyntheticCount = response;
             //这里应该是制作卡牌次数
             _ui.m_btnProduction.grayed = cardSyntheticCount > _cardItem.syntheticTimes;
+            RedDotController.Instance.SetComRedDot(_ui.m_btnProduction, RedDotDataManager.Instance.CheckCardCanSynthetic(_cardId), "");
             _ui.m_timesText.text = string.Format("合成次数:{0}/{1}", cardSyntheticCount, _cardItem.syntheticTimes);
+            ItemData itemCount;
+            long count;
+            if (BagDataManager.Instance.GetBagData().TryGetValue(_cardItem.transItem, out itemCount))
+            {
+                count = itemCount.num;
+            }
+            else
+            {
+                count = 0;
+            }
+            _ui.m_skillCountText.text = string.Format("已拥有:{0}", count.ToString());
+
         }
         private async void GetCardSyntheticCount(int cardID)
         {

+ 142 - 0
GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingAnsweringView.cs

@@ -0,0 +1,142 @@
+using System;
+using System.Collections.Generic;
+using ET;
+using FairyGUI;
+using UI.CommonGame;
+using UI.ClothingUpgrade;
+using Random = System.Random;
+
+namespace GFGGame
+{
+    class ClothingAnsweringView : BaseWindow
+    {
+        private UI_ClothingAnsweringUI _ui;
+        private int _partIndex;
+        private int partIndexCommon;
+        private int level;
+        private int levelNum;
+        private int questionNum = 5;
+        private int questIndex  = 0;
+        private int questionId;
+        private int cout;
+        public override void Dispose()
+        {
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_ClothingAnsweringUI.PACKAGE_NAME;
+            _ui = UI_ClothingAnsweringUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+
+            _ui.m_listResult.itemRenderer = RenderListResultItem;
+            _ui.m_btnBack.onClick.Add(OnClickBtnBack);
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+            if (this.viewData != null)
+            {
+                _partIndex = (int)(this.viewData as object[])[0];
+                level = (int)(this.viewData as object[])[1];
+                levelNum = (int)(this.viewData as object[])[2];
+            }
+            if (_partIndex != 99)
+            {
+                partIndexCommon = 0;
+            }
+            else
+            {
+                partIndexCommon = 99;
+            }
+            _ui.m_bg.url = ResPathUtil.GetBgImgPath("gyp_bg");
+            questionNum = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndexCommon, level).NumberOfAnswers;
+            cout = LeagueQuestionCfgArray.Instance.dataArray.Length + 1;
+            questIndex = 0;
+            UpdateQuestion();
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+        private void RenderListResultItem(int index, GObject obj)
+        {
+            LeagueQuestionCfg cfg = LeagueQuestionCfgArray.Instance.GetCfg(questionId); ;
+            UI_Button123 item = UI_Button123.Proxy(obj);
+            int data = index + 1;
+            item.m_c1.selectedIndex = 2;
+            item.target.title = string.Format("{0}.{1}", data, cfg.answerArr[index]);
+            if (item.target.data == null)
+            {
+                item.target.onClick.Add(OnBtnChooseClick);
+            }
+            item.target.data = data;
+            UI_Button123.ProxyEnd();
+        }
+        private async void OnBtnChooseClick(EventContext context)
+        {
+            GObject obj = context.sender as GObject;
+            int data = (int)obj.data;
+            UI_Button123 item = UI_Button123.Proxy(obj);
+            LeagueQuestionCfg cfg = LeagueQuestionCfgArray.Instance.GetCfg(questionId);
+            //测试 正确答案
+            if (data == int.Parse(cfg.answerCorrect))
+            {
+                item.m_c1.selectedIndex = 1;
+                if (questIndex >= questionNum)
+                {
+                    //发送升级
+                    var result = await CollegeSProxy.ReqCollectUpgrade(_partIndex, level, levelNum);
+                    string exitTip = "恭喜恭喜!晋升成功!";
+                    AlertUI.Show(exitTip)
+                    .SetLeftButton(false, "取消", (object data) =>
+                    {
+                    })
+                    .SetRightButton(true, "确定", (object data) =>
+                    {
+                        //退出
+                        ViewManager.GoBackFrom(typeof(ClothingAnsweringView).FullName);
+                    });
+                }
+                else
+                {
+                    UpdateQuestion();
+                }
+                PromptController.Instance.ShowFloatTextPrompt("回答正确!");
+            }
+            else
+            {
+                PromptController.Instance.ShowFloatTextPrompt("回答错误!");
+                item.m_c1.selectedIndex = 0;  
+            }
+            UI_Button123.ProxyEnd();
+        }
+        private void UpdateQuestion()
+        {
+            questIndex++;
+            Random random = new Random();
+            questionId = random.Next(1, cout); // 生成1到cout之间的随机整数
+            LeagueQuestionCfg questionCfg = LeagueQuestionCfgArray.Instance.GetCfg(questionId);
+            _ui.m_txtAnswerNum.text = string.Format("第{0}/{1}题", questIndex,questionNum);
+            _ui.m_txtContent.text = questionCfg.question;
+            _ui.m_listResult.numItems = questionCfg.answerArr.Length;
+        }
+        private void OnClickBtnBack()
+        {
+            string exitTip = "是否退出,退出后将不保存答题进度,并且下次题目将随机出现";
+            AlertUI.Show(exitTip)
+            .SetLeftButton(true, "取消", (object data) =>
+            {
+            })
+            .SetRightButton(true, "确定", (object data) =>
+            {
+                ViewManager.GoBackFrom(typeof(ClothingAnsweringView).FullName);
+            }); 
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingAnsweringView.cs.meta

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

+ 168 - 7
GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingSelectView.cs

@@ -5,15 +5,29 @@ using FairyGUI;
 using UI.CommonGame;
 using UI.ClothingUpgrade;
 using UnityEngine;
+using System.Text.RegularExpressions;
 
 namespace GFGGame
 {
     public class ClothingSelectView : BaseWindow
     {
         private UI_ClothingSelectUI _ui;
+        private int partIndex1;
+        private int partIndex2;
+        private EffectUI _effectUI1;
+        private EffectUI _effectUI2;
 
         public override void Dispose()
         {
+            EffectUIPool.Recycle(_effectUI1);
+            _effectUI1 = null;
+            EffectUIPool.Recycle(_effectUI2);
+            _effectUI2 = null;
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
             base.Dispose();
         }
 
@@ -23,49 +37,196 @@ namespace GFGGame
             packageName = UI_ClothingSelectUI.PACKAGE_NAME;
             _ui = UI_ClothingSelectUI.Create();
             this.viewCom = _ui.target;
+            isReturnView = true;
             isfullScreen = true;
             modal = true;
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
             _ui.m_selectList.itemRenderer = RenderListItem;
+
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_gyp", "GYP_ALL");
+            _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_birdEffect, "ui_gyp", "GYP_Bird");
+        }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.COLLEGE_UPGRADE, UpdateList);
         }
 
         protected override void OnShown()
         {
             base.OnShown();
+            _ui.m_bg.url = ResPathUtil.GetBgImgPath("gyp_bg");
             UpdateList();
+            Timers.inst.AddUpdate(CheckGuide);
         }
 
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.COLLEGE_UPGRADE, UpdateList);
+        }
         protected override void OnHide()
         {
             base.OnHide();
+            Timers.inst.Remove(CheckGuide);
+        }
+        private void UpdateList()
+        {
+            _ui.m_selectList.numItems = CollectPartDataManager.Count;
         }
-
         private void RenderListItem(int index, GObject obj)
         {
             UI_clothingSelectItem listItem = UI_clothingSelectItem.Proxy(obj);
-            if (listItem.target.data == null)
+            int level;
+            int levelNum;
+            int addNum;
+            if(index < CollectPartDataManager.Count - 1)
             {
-                listItem.target.onClick.Add(OnBtnItem);
+                //0表示所有部位,1~7表示各个部位
+                partIndex1 = 0;
+                partIndex2 = index + 1;
+            }
+            else
+            {
+                partIndex1 = 99;
+                partIndex2 = 99;
+            }
+            level = CollectPartDataManager.Instance.CollectPartDataDic[partIndex2][0];
+            levelNum = CollectPartDataManager.Instance.CollectPartDataDic[partIndex2][1];
+            if (IsOpenRank(partIndex2))
+            {
+                listItem.target.visible = true;
+                RedDotController.Instance.SetComRedDot(listItem.target, CollectPartDataManager.Instance.CheckPartCanUP(partIndex2), "");
+                if (levelNum > 0)
+                {
+                    addNum = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(partIndex2, level, levelNum).value;
+                    float addNumPercentage = (float)addNum / CollectPartDataManager.Instance.AddtitionRatio;
+                    listItem.m_c1.selectedIndex = 0;
+                    listItem.m_partIcon.url = string.Format("ui://ClothingUpgrade/{0}", CollectPartDataManager.Instance.partImage[partIndex2]);
+                    CollegeRankCfg rankItemList = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndex1, level);
+                    listItem.m_levelText.text = rankItemList.gradeName;
+                    listItem.m_levelNumText.text = string.Format("{0}级", levelNum.ToString());
+                    listItem.m_nameText.text = CollectPartDataManager.Instance.partNameDic[partIndex2];
+                    listItem.m_levelDescText.text = string.Format("{0}%", addNumPercentage);
+
+                }
+                else
+                {
+
+                    listItem.m_c1.selectedIndex = 0;
+                    listItem.m_partIcon.url = string.Format("ui://ClothingUpgrade/{0}", CollectPartDataManager.Instance.partImage[partIndex2]);
+                    CollegeRankCfg rankItemList = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndex1, level);
+                    listItem.m_levelText.text = rankItemList.gradeName;
+                    listItem.m_levelNumText.text = string.Format("{0}级", "0");
+                    listItem.m_nameText.text = CollectPartDataManager.Instance.partNameDic[partIndex2];
+                    listItem.m_levelDescText.text = string.Format("{0}%", "0");
+                }
+                if (listItem.target.data == null)
+                {
+                    listItem.target.onClick.Add(OnBtnItem);
+                }
+                listItem.target.data = partIndex2;
+            }
+            else
+            {
+                listItem.m_c1.selectedIndex = 1;
+                listItem.target.visible = false;
             }
-            listItem.target.data = index;
             UI_clothingSelectItem.ProxyEnd();
         }
+        private bool IsOpenRank(int partIndex,int levelNum = 9)
+        {
+            List<int> openList;
+            bool isRank = false;
+            bool isLevel = false;
+            bool isPassStory = false ;
+            CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);
+            openList = GetOpenList(partIndex);
+            //判断段位
+            if (openitem.OpenPreconditionArr == null || openitem.OpenPreconditionArr.Length == 0)
+            {
+                isRank = true;
+            }
+            else
+            {
+                if (CollectPartDataManager.Instance.CollectPartDataDic[openList[0]][0] >= openList[1])
+                {
+                    if (CollectPartDataManager.Instance.CollectPartDataDic[openList[0]][1] >= openList[2])
+                    {
+                        isRank = true;
+                    }
+                }
+            }
+            //判断等级
+            if(RoleDataManager.lvl >= openitem.needRoleLv)
+            {
+                isLevel = true;
+            }
+            //判断关卡
+            if(openitem.needStoryLevelId == 0 || InstanceZonesDataManager.CheckLevelPass(openitem.needStoryLevelId))
+            {
+                isPassStory = true;
+            }
+            else
+            {
+                isPassStory = false;
+            }
+
+            return isRank&&isLevel&&isPassStory;
+        }
+        private List<int> GetOpenList(int partIndex)
+        {
+            List<int> openList = new List<int>();
+            string pattern = @"\d+";
+            CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);
+            for (int i = 0; i < openitem.OpenPreconditionArr.Length; i++)
+            {
+                MatchCollection matches = Regex.Matches(openitem.OpenPreconditionArr[i], pattern);
+                foreach (Match match in matches)
+                {
+                    openList.Add(int.Parse(match.Value));
+                }
+            }
+            return openList;
+        }
 
         private void OnBtnItem(EventContext context)
         {
             GObject Item = context.sender as GObject;
             int partIndex = (int)Item.data;
-            ViewManager.Show<ClothingUpgradeView>(new object[] {partIndex });
+            if(IsOpenRank(partIndex))
+            {
+                ViewManager.Show<ClothingUpgradeView>(new object[] { partIndex });
+            }
+            else
+            {
+                //string openString = "";
+                //string partName = CollectPartDataManager.Instance.partNameDic[partIndex];
+                //List<int> openList = GetOpenList(partIndex);
+                //openString = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndex2, openList[1]).gradeName;
+                //string descString = string.Format("该部位需要达到{0}{1}{2}开启", partName, openString, openList[2]);
+                PromptController.Instance.ShowFloatTextPrompt("需要达到特定条件开启");
+            }
         }
-
         private void OnClickBtnBack()
         {
             ViewManager.GoBackFrom(typeof(ClothingSelectView).FullName);
         }
 
-        private void UpdateList()
+        private void CheckGuide(object param)
         {
+            GRoot.inst.touchable = true;
+            if (GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0)
+                UpdateCheckGuide(null);
+            else
+                Timers.inst.Remove(CheckGuide);
+        }
 
+        protected void UpdateCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(null, "ClothingSelectView", 4, "“估衣铺”里可以通过升级各个部位获得加成。", -1, true, _ui.target.height - 600);
+            GuideController.TryGuide(_ui.m_selectList, "ClothingSelectView", 5, "选择升级部位。",0);
         }
     }
 }

+ 186 - 4
GameClient/Assets/Game/HotUpdate/Views/ClothingUpgarde/ClothingUpgradeView.cs

@@ -12,6 +12,16 @@ namespace GFGGame
     {
         private UI_ClothingUpgradeUI _ui;
         private int _partIndex;
+        private int partIndexCommon;
+        private int maxRank;
+        private int level;
+        private int levelNum;
+        private float AddNum;
+        private int status = 0;
+        private CollegeBoostCfg collegegBoostCfg;
+        private CollegeBoostCfg collegeBoostNextCfg;
+        private List<GObject> itemList = new List<GObject>();
+        private CollectPartData nextPartData = new CollectPartData();
         public override void Dispose()
         {
             base.Dispose();
@@ -26,6 +36,8 @@ namespace GFGGame
             isfullScreen = true;
             modal = true;
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
+            _ui.m_upgradeBtn.onClick.Add(OnClickUpgrade);
+            _ui.m_levelUpBtn.onClick.Add(OnClickLevelUp);
         }
 
         protected override void OnShown()
@@ -35,22 +47,192 @@ namespace GFGGame
             {
                 _partIndex = (int)(this.viewData as object[])[0];
             }
-            UpdateItems();
+            _ui.m_bg.url = ResPathUtil.GetBgImgPath("gyp_bg");
+            InitDate();
+
+            //更新数据
+            Update();
+            Timers.inst.AddUpdate(CheckGuide);
         }
 
         protected override void OnHide()
         {
+            itemList.Clear();
             base.OnHide();
+            Timers.inst.Remove(CheckGuide);
+        }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, Update);
+            EventAgent.AddEventListener(ConstMessage.COLLEGE_UPGRADE, Update);
+            EventAgent.AddEventListener(ConstMessage.COLLEGE_UPGRADE, LevelUpSuccessTip);
+        }
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, Update);
+            EventAgent.RemoveEventListener(ConstMessage.COLLEGE_UPGRADE, Update);
+            EventAgent.RemoveEventListener(ConstMessage.COLLEGE_UPGRADE, LevelUpSuccessTip);
+        }
+        private void Update()
+        {
+            UpdateData();
+            UpdateView();
+        }
+        private void UpdateData()
+        {
+            level = CollectPartDataManager.Instance.CollectPartDataDic[_partIndex][0];
+            levelNum = CollectPartDataManager.Instance.CollectPartDataDic[_partIndex][1];
+            if (levelNum > 0)
+            {
+                //当前数据
+                collegegBoostCfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(_partIndex, level, levelNum);
+                AddNum = (float)collegegBoostCfg.value / CollectPartDataManager.Instance.AddtitionRatio;
+                //下一级数据
+                levelNum = CollectPartDataManager.Instance.CollectPartDataDic[_partIndex][1];
+                nextPartData.PartID = _partIndex;
+                if (levelNum + 1 > CollectPartDataManager.Instance.MaxLevel)
+                {
+                    nextPartData.LevelID = level + 1;
+                    nextPartData.LevelNum = 1;
+                    status = 2;
+                }
+                else
+                {
+                    nextPartData.LevelID = level;
+                    nextPartData.LevelNum = levelNum + 1;
+                    status = 1;
+                }
+            }
+            else
+            {
+                AddNum = 0;
+                levelNum = 0;
+                nextPartData.PartID = _partIndex;
+                nextPartData.LevelID = level;
+                nextPartData.LevelNum = levelNum + 1;
+                status = 1;
+            }
+            collegeBoostNextCfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(_partIndex, nextPartData.LevelID, nextPartData.LevelNum);
+            if(collegeBoostNextCfg == null || collegeBoostNextCfg.value == 0)
+            {
+                nextPartData.AddNum = 0;
+                status = 3;
+            }
+            else
+            {
+                nextPartData.AddNum = (float)collegeBoostNextCfg.value / CollectPartDataManager.Instance.AddtitionRatio;
+            }
+            
+        }
+        private void UpdateView()
+        {
+            _ui.m_c1.selectedIndex = status;
+            RedDotController.Instance.SetComRedDot(_ui.m_levelUpBtn, CollectPartDataManager.Instance.CheckPartCanUP(_partIndex),"");
+            RedDotController.Instance.SetComRedDot(_ui.m_upgradeBtn, CollectPartDataManager.Instance.CheckPartCanUP(_partIndex), "");
+            string name = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndexCommon, level).gradeName;
+            string partName = CollectPartDataManager.Instance.partNameDic[_partIndex];
+            _ui.m_desc1Text.text = string.Format("{0}{1}级", name,levelNum);
+            _ui.m_desc2.text = string.Format("当  前:{0}", partName);
+            _ui.m_desc2Text.text = string.Format("基础属性+{0}%", AddNum.ToString());
+            _ui.m_desc3.text = string.Format("下一级:{0}", partName);
+            _ui.m_desc3Text.text = string.Format("基础属性+{0}%", nextPartData.AddNum);
+            if(status != 3)
+            {
+                _ui.m_c2.selectedIndex = collegeBoostNextCfg.consumeArr.Length;  
+                for (int i=0;i< collegeBoostNextCfg.consumeArr.Length;i++)
+                {
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(collegeBoostNextCfg.consumeArr[i][0]);
+                    UI_ComItem item = UI_ComItem.Proxy(itemList[i]);
+                    item.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg);
+                    //item.m_txtCount.SetVar("count", itemData.num.ToString()).FlushVars();
+                    ItemData itemCount;
+                    long count;
+                    if(itemCfg.itemType == ConstItemType.DRESS_UP)
+                    { 
+                        count = ItemDataManager.GetItemNum(collegeBoostNextCfg.consumeArr[i][0]);
+                    }
+                    else
+                    {
+                        if (BagDataManager.Instance.GetBagData().TryGetValue(collegeBoostNextCfg.consumeArr[i][0], out itemCount))
+                        {
+                            count = itemCount.num;
+                        }
+                        else
+                        {
+                            count = 0;
+                        }
+                    }
+                    item.m_txtCount.text = count.ToString() + "/" + collegeBoostNextCfg.consumeArr[i][1].ToString();
+                    item.m_QualityType.selectedIndex = itemCfg.rarity - 1;
+                    item.m_ShowName.selectedIndex = 1;
+                    item.m_txtName.text = itemCfg.name;
+                    if (item.target.data == null)
+                    {
+                        item.target.onClick.Add(OnClickListDressUpItem);
+                    }
+                    item.target.data = collegeBoostNextCfg.consumeArr[i][0];
+                    UI_ComItem.ProxyEnd();
+                }
+            }
+        }
+        private void InitDate()
+        {
+            if (_partIndex != 99)
+            {
+                maxRank = CollectPartDataManager.Instance.MaxNormalRank;
+                partIndexCommon = 0;
+            }
+            else
+            {
+                maxRank = CollectPartDataManager.Instance.MaxSpecialRank;
+                partIndexCommon = _partIndex;
+            }
+            for (int i = 0; i < 3; i++)
+            {
+                GObject item = _ui.target.GetChild(string.Format("item{0}", i));
+                itemList.Add(item);
+            }
+        }
+        private void OnClickListDressUpItem(EventContext eventContext)
+        {
+            int id = (int)(eventContext.sender as GObject).data;
+            object[] sourceDatas = new object[]
+                  { id, new object[] { typeof(BagView).FullName, this.viewData } };
+            GoodsItemTipsController.ShowItemTips(id, sourceDatas);
+        }
+        private async void OnClickUpgrade()
+        {
+            var result = await CollegeSProxy.ReqCollectUpgrade(nextPartData.PartID, nextPartData.LevelID,nextPartData.LevelNum);
+        }
+        private void LevelUpSuccessTip()
+        {
+            PromptController.Instance.ShowFloatTextPrompt("升级成功!");
         }
-        private void UpdateItems()
+        private void OnClickLevelUp()
         {
-            _ui.m_c1.selectedIndex = 4;
+            //晋升先到答题界面,全答对了,晋升
+            ViewManager.Show<ClothingAnsweringView>( new object[] { _partIndex, nextPartData.LevelID, nextPartData.LevelNum });
         }
         private void OnClickBtnBack()
         {
             ViewManager.GoBackFrom(typeof(ClothingUpgradeView).FullName);
         }
+        private void CheckGuide(object param)
+        {
+            GRoot.inst.touchable = true;
+            if (GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0)
+                UpdateCheckGuide(null);
+            else
+                Timers.inst.Remove(CheckGuide);
+        }
 
-
+        protected void UpdateCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(null, "ClothingSelectView", 6, "升级部位获得加成。", -1, true, _ui.target.height - 600);
+            GuideController.TryCompleteGuide("ClothingSelectView", 6);
+        }
     }
 }

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

@@ -94,6 +94,7 @@ namespace GFGGame
             {
                 //comRes.m_loaRes.url = string.Format("ui://LuckyBox/{0}", _luckyBoxCfg.resArr[_modelIndex]);
                 comRes.m_loaRes.url = ResPathUtil.GetBgImgPath(_luckyBoxCfg.resArr[_modelIndex]);
+                EventAgent.DispatchEvent(ConstMessage.LUCKY_EFFECT_UPDATE, _luckyBoxCfg.resArr[_modelIndex]);
                 comRes.m_loaTitle.url = ResPathUtil.GetLuckyBoxTitlePath(_luckyBoxCfg.resArr[_modelIndex]);
                 comRes.m_loaRes.SetPosition(-110, -170, 1);
                 int direction = _luckyBoxCfg.scaleArr[_modelIndex] >= 0 ? 1 : -1;

+ 7 - 1
GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographSaveView.cs

@@ -24,6 +24,7 @@ namespace GFGGame
             _ui.m_btnClose.onClick.Add(this.Hide);
             _ui.m_btnSave.onClick.Add(this.OnClickBtnSave);
             _ui.m_btnSavePhoto.onClick.Add(this.OnClickBtnSavePhoto);
+            _ui.m_share.onClick.Add(this.BtnClickShare);
         }
 
         protected override void OnShown()
@@ -31,11 +32,13 @@ namespace GFGGame
             base.OnShown();
             tex = this.viewData as Texture2D;
             bytes = tex.EncodeToJPG();//将纹理数据,转化成一个jpg图片
+            ShareDataManager.Instance.imageBytes = bytes;
             _ui.m_imgRes.texture = new NTexture(tex);
             float width = _ui.m_imgBorder.width;
             float height = width * tex.height / tex.width;
             _ui.m_imgRes.SetSize(width, height);
             _ui.m_imgBorder.SetSize(width, height + 12);
+            _ui.m_share.visible = false;
             Timers.inst.AddUpdate(CheckGuide);
         }
 
@@ -210,7 +213,10 @@ namespace GFGGame
             _ui.m_btnSavePhoto.enabled = false;
 
         }
-
+        private void BtnClickShare()
+        {
+            ShareDataManager.Instance.CaptureCameraToImage(true,false);
+        }
         private void CheckGuide(object param)
         {
             if (GuideDataManager.IsGuideFinish(ConstGuideId.FREEDOM_DRESS) <= 0)

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/FieldGuide/SuitGuideListView.cs

@@ -92,7 +92,7 @@ namespace GFGGame
         private void FilterItems(EventContext context)
         {
             UpdateListSuit();
-
+            
             if (context.data.ToString() == ConstMessage.DRESS_SEARCH)
             {
                 _suitIds = DressUpMenuItemDataManager.DressSearch(_suitIds, DressFilterItemType.Suit);
@@ -152,6 +152,7 @@ namespace GFGGame
 
             _ui.m_listSuitCom.m_listSuit.numItems = _suitIds.Count;
             _ui.m_listSuitCom.m_listSuit.scrollPane.ScrollTop();
+            UpdateSuitStatus();
         }
 
         private void RenderListSuitItem(int index, GObject item)
@@ -181,7 +182,7 @@ namespace GFGGame
             UI_SuitComitem.ProxyEnd();
         }
 
-        private void UpdateSuitStatus(EventContext eventContext)
+        private void UpdateSuitStatus(EventContext eventContext = null)
         {
             int num = _ui.m_listSuitCom.m_listSuit.numChildren;
             for (int i = 0; i < num; i++)

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

@@ -95,7 +95,8 @@ namespace GFGGame
             if (GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PORCELAIN) <= 0
                 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PROPERTY) <= 0
                 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_FILING) <= 0
-                || GuideDataManager.IsGuideFinish(ConstGuideId.POEM) <= 0)
+                || GuideDataManager.IsGuideFinish(ConstGuideId.POEM) <= 0
+                || GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0)
                 //|| GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
             {
                 UpdateToCheckGuide(null);
@@ -119,7 +120,7 @@ namespace GFGGame
             _ui.m_btnPoem.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(PoemPhotoView).Name, false);
             _ui.m_btnStudio.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioView).Name, false);
             _ui.m_btnTravel.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TravelView).Name, false);
-            _ui.m_btnField.m_loaLockIcon.visible = false;//!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(FieldView).Name, false);
+            _ui.m_btnField.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TimeTracingShowView).Name, false);
             _ui.m_btnArena.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ArenaView).Name, false);
         }
 
@@ -180,6 +181,7 @@ namespace GFGGame
             //GuideController.TryGuide(_ui.m_btnPoem.target, ConstGuideId.POEM, 1, "在“拍照”中保存的图片都会保存到这里。");
             GuideController.TryGuide(_ui.m_btnArena.target, ConstGuideId.ARENA_OPEN, 3, "在这里可以与其他小伙伴比拼搭配哦~");
             GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.ENTER_CHAPTER_5, 1, "", -1, false);
+            GuideController.TryGuide(_ui.m_btnField.target, "TimeTracingShowView", 3, "合成副本可获得奖励和服装哦~");
         }
 
     }

+ 54 - 20
GameClient/Assets/Game/HotUpdate/Views/Login/LoginView.cs

@@ -16,7 +16,6 @@ namespace GFGGame
 
         public override void Dispose()
         {
-
             if (_sceneObject != null)
             {
                 GameObject.DestroyImmediate(_sceneObject);
@@ -28,6 +27,7 @@ namespace GFGGame
                 _ui.Dispose();
                 _ui = null;
             }
+
             base.Dispose();
         }
 
@@ -57,52 +57,54 @@ namespace GFGGame
             _ui.m_loaEventa.onClick.Add(() => { FullScreenTextController.Show("event:a"); });
             _ui.m_loaEventb.onClick.Add(() => { FullScreenTextController.Show("event:b"); });
             _ui.m_loaEventc.onClick.Add(() => { FullScreenTextController.Show("event:c"); });
-            //_ui.m_btnAgree.onClick.Add(OnBtnAgreeCklick);
+            _ui.m_btnAgree.onClick.Add(OnBtnAgreeCklick);
         }
+
         protected override void AddEventListener()
         {
             base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.SERVER_CHANGE, OnSeverChangeListener);
             EventAgent.AddEventListener(ConstMessage.LOGIN_SUCCESS, OnLoginSuccess);
             EventAgent.AddEventListener(ConstMessage.ON_PLATFORM_SDK_LOGINED, OnPlatformLogined);
+            EventAgent.AddEventListener(ConstMessage.OUT_LOGIN, OnOutLoginSuccess);
         }
+
         protected override void OnShown()
         {
             base.OnShown();
             MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT));
             if (_sceneObject == null)
             {
-                _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetLoginResPath("LoginSkin1/SceneLogin"));
+                _sceneObject =
+                    PrefabManager.Instance.InstantiateSync(ResPathUtil.GetLoginResPath("LoginSkin1/SceneLogin"));
             }
+
             // SceneController.UpdateLoginScene(_sceneObject);
             ServerInfosComponent serverInfosComponent = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>();
             ServerInfo recentlyServerInfo = serverInfosComponent.recentlyServerInfo;
             UpdateServer(recentlyServerInfo);
-            //_ui.m_btnAgree.selected = LocalCache.GetBool(GameConst.LAST_LOGIN_IS_AGREE_KEY, false);
+            _ui.m_btnAgree.selected = LocalCache.GetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, false);
             _ui.m_btnAgree.selected = true;
-
-            if(GameConfig.openTime > TimeHelper.ClientNow())
+            if (GameConfig.openTime > TimeHelper.ClientNow())
             {
                 var date = DateTimeUtil.LongTimeStampToDateTime(GameConfig.openTime);
                 string minuteText = "";
-                if(date.Minute > 0)
+                if (date.Minute > 0)
                 {
                     minuteText = date.Minute + "分";
                 }
+
                 AlertUI.Show($"    亲爱的研究员,万世镜将于{date.Year}年{date.Month}月{date.Day}日{date.Hour}点{minuteText}开放,敬请期待!")
-                        .SetLeftButton(true, "好的", (obj) =>
-                        {
-                            Application.Quit();
-                        });
+                    .SetLeftButton(true, "好的", (obj) => { Application.Quit(); });
                 return;
             }
+
             if (!autoLogined)
             {
                 autoLogined = true;
                 ResetLoginButton();
                 TryLogin();
             }
-
         }
 
         protected override void OnHide()
@@ -113,14 +115,17 @@ namespace GFGGame
                 PrefabManager.Instance.Restore(_sceneObject);
                 _sceneObject = null;
             }
+
             base.OnHide();
         }
+
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
             EventAgent.RemoveEventListener(ConstMessage.SERVER_CHANGE, OnSeverChangeListener);
             EventAgent.RemoveEventListener(ConstMessage.LOGIN_SUCCESS, OnLoginSuccess);
             EventAgent.RemoveEventListener(ConstMessage.ON_PLATFORM_SDK_LOGINED, OnPlatformLogined);
+            EventAgent.RemoveEventListener(ConstMessage.OUT_LOGIN, OnOutLoginSuccess);
         }
 
         private void UpdateServer(ServerInfo info)
@@ -131,8 +136,10 @@ namespace GFGGame
                 _ui.m_btnChange.visible = false;
                 return;
             }
+
             _ui.m_btnChange.visible = serverInfosComponent.ServerInfoList.Count > 1;
-            _ui.m_btnChange.title = string.Format("{0}区  {1}", NumberUtil.GetChiniseNumberText((int)info.Id), info.ServerName);
+            _ui.m_btnChange.title =
+                string.Format("{0}区  {1}", NumberUtil.GetChiniseNumberText((int)info.Id), info.ServerName);
 
             LogServerHelperHttp.SendNodeLog((int)LogNode.ShowSelectServer);
         }
@@ -165,18 +172,23 @@ namespace GFGGame
 
             UpdateServer(serverInfosComponent.ServerInfoList[serverInfosComponent.CurrentServerId]);
         }
+
         private void OnBtnChangeClick()
         {
             ViewManager.Show<ServerListView>();
         }
+
         private void OnClickBtnNotice()
         {
-            if (NoticeDataManager.Instance.LastNoticeInfo == null || NoticeDataManager.Instance.LastNoticeInfo.noticeId == 0)
+            if (NoticeDataManager.Instance.LastNoticeInfo == null ||
+                NoticeDataManager.Instance.LastNoticeInfo.noticeId == 0)
             {
                 PromptController.Instance.ShowFloatTextPrompt("暂无公告发布");
                 return;
             }
-            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 });
         }
 
         private void OnClickBtnStart()
@@ -187,8 +199,22 @@ namespace GFGGame
         private void OnClickBtnLogout()
         {
             ResetLoginButton();
-            QDManager.Logout(false);
+
+            switch (LauncherConfig.ChannelId)
+            {
+                case (int)ChannelID.Test:
+
+                    break;
+                case (int)ChannelID.DouYou:
+                    QDDouYouManager.Instance.LoginOutBefore();
+                    break;
+                default:
+                    break;
+            }
+
+            QDManager.Logout();
         }
+
         private void OnClickBtnAge()
         {
             ViewManager.Show<SystemNoticeView>(new object[] { LoginController.ageTipsTitle, LoginController.ageTips });
@@ -208,13 +234,12 @@ namespace GFGGame
                     {
                         LauncherConfig.statusPrompt = "游戏正在更新维护中,请稍后再试。";
                     }
+
                     AlertSystem.Show(LauncherConfig.statusPrompt)
-                        .SetLeftButton(true, "知道了", (data) =>
-                        {
-                            Application.Quit();
-                        });
+                        .SetLeftButton(true, "知道了", (data) => { Application.Quit(); });
                     return;
                 }
+
                 var serverInfosComponent = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>();
                 if (serverInfosComponent.ServerInfoList.Count <= 0)
                 {
@@ -227,10 +252,15 @@ namespace GFGGame
                         PromptController.Instance.ShowFloatTextPrompt("请仔细阅读并同意游戏用户协议、隐私保护指引、儿童隐私政策");
                         return;
                     }
+
                     LoginController.GetRoles().Coroutine();
                 }
             });
+        }
 
+        private void OnOutLoginSuccess(EventContext context)
+        {
+            ResetLoginButton();
         }
 
         private void ResetLoginButton()
@@ -239,5 +269,9 @@ namespace GFGGame
             _ui.m_btnTapLogin.visible = QDManager.IsTaptap;
             _ui.m_btnStart.visible = !QDManager.IsTaptap;
         }
+        private void OnBtnAgreeCklick()
+        {
+            LocalCache.SetBool(LauncherConfig.LAST_LOGIN_IS_AGREE_KEY, _ui.m_btnAgree.selected);
+        }
     }
 }

+ 49 - 19
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxBonusShowView.cs

@@ -164,6 +164,18 @@ namespace GFGGame
                     UpdateItem(_ui.target.GetChild("item" + i).asCom, i, 10);
                 }
             }
+
+            //修改,因为加了抽奖动画,在进入后就直接筛选掉所有不是新的
+            for (int i = 0; i < _rewardList.Count; i++)
+            {
+                UI_LuckyBoxBonusShowItem item = UI_LuckyBoxBonusShowItem.Proxy(_itemObjList[i]);
+                if (!item.m_comIcon.m_imgNew.visible)
+                {
+                    _recordTurnIndex.Add(i);
+                    _recordOpenIndex.Add(i);
+                }
+                UI_LuckyBoxBonusShowItem.ProxyEnd();
+            }
             Timers.inst.Add(0.5f, 1, UpDataTimeTouchLoaBg);
         }
 
@@ -274,7 +286,7 @@ namespace GFGGame
             item.m_t0.Play();
             if (item.target.data == null)
             {
-                //item.target.onClick.Add(ShowItemTips);
+                item.target.onClick.Add(ShowItemTips);
             }
             item.target.data = index;
 
@@ -296,7 +308,8 @@ namespace GFGGame
             GObject obj = context.sender as GObject;
             int index = (int)obj.data;
             _chooseIndex = index;
-            HandClickItem(index);
+            GoodsItemTipsController.ShowItemTips(_itemIdList[index]);
+            //HandClickItem(index);
         }
 
         private void HandClickItem(int index)
@@ -327,7 +340,9 @@ namespace GFGGame
                 _ui.m_BtnPass.visible = false;
 
             if (!_recordOpenIndex.Contains(index))
+            {
                 TurnItem(index);
+            }
             else
             {
                 if (!_recordTurnIndex.Contains(index))
@@ -350,24 +365,23 @@ namespace GFGGame
             }
             _touchLoaBg = false;
             Timers.inst.Add(0.5f, 1, UpDataTimeTouchLoaBg);
-
             if (_recordOpenIndex.Count >= _rewardList.Count)
             {
                 _chooseIndex = -1;
                 this.Hide();
             }
-            //else
-            //{
-            //    for (int index = 0; index < _rewardList.Count; index++)
-            //    {
-            //        if (!_recordOpenIndex.Contains(index))
-            //        {
-            //            _chooseIndex = index;
-            //            HandClickItem(index);
-            //            break;
-            //        }
-            //    }
-            //}
+            else
+            {
+                for (int index = 0; index < _rewardList.Count; index++)
+                {
+                    if (!_recordOpenIndex.Contains(index))
+                    {
+                        _chooseIndex = index;
+                        HandClickItem(index);
+                        break;
+                    }
+                }
+            }
         }
 
         private void OnClickBtnPass()
@@ -547,7 +561,13 @@ namespace GFGGame
 
                 UI_LuckyBoxBonusShowItem item = UI_LuckyBoxBonusShowItem.Proxy(_itemObjList[index]);
                 if (!item.m_comIcon.m_imgNew.visible)
-                    _recordTurnIndex.Add(index);
+                {
+                    if(!_recordTurnIndex.Contains(index))
+                    {
+                        _recordTurnIndex.Add(index);
+                    }
+                }
+                    
 
                 //先翻开牌面 
                 //item.m_comIcon.m_FlipOpenType.selectedIndex = 0;
@@ -557,8 +577,15 @@ namespace GFGGame
                 ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemIdList[index]);
 
                 // 点击特效
-                _effectUIDic.Add("CK_Cirle_DJ" + index, EffectUIPool.CreateEffectUI(item.m_comIcon.m_click_eff, "ui_LuckyBox", "CK_Cirle_DJ"));
-                // 翻开特效
+                if (!_effectUIDic.ContainsKey("CK_Cirle_DJ" + index))
+                {
+                    _effectUIDic.Add("CK_Cirle_DJ" + index, EffectUIPool.CreateEffectUI(item.m_comIcon.m_click_eff, "ui_LuckyBox", "CK_Cirle_DJ"));
+                }
+                else
+                {
+                    _effectUIDic["CK_Cirle_DJ" + index] = EffectUIPool.CreateEffectUI(item.m_comIcon.m_click_eff, "ui_LuckyBox", "CK_Cirle_DJ");
+                }
+                    // 翻开特效
                 switch (itemCfg.rarity)
                 {
                     case 1:
@@ -585,7 +612,10 @@ namespace GFGGame
 
 
                 //item.m_comIcon.m_t0.Play();
-                _recordOpenIndex.Add(index);
+                if(!_recordOpenIndex.Contains(index))
+                {
+                    _recordOpenIndex.Add(index);
+                }
                 UI_LuckyBoxBonusShowItem.ProxyEnd();
             }
         }

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxVideoView.cs

@@ -23,6 +23,7 @@ namespace GFGGame
         public void Show(List<ItemData> _reward = null)
         {
             MusicManager.Instance.Stop();
+            FairyGUI.GRoot.inst.touchable = false;
             string path = ResPathUtil.GetUUIPrefabPath("UILuckyBox");
             handle = YooAssets.LoadAssetSync<GameObject>(path);
             _ui = handle.InstantiateSync(UGUIManager.Instance.desktop.transform);
@@ -126,6 +127,7 @@ namespace GFGGame
             videoHandle = null;
             GameObject.Destroy(_ui);
             _ui = null;
+            FairyGUI.GRoot.inst.touchable = true;
             ViewManager.Show<LuckyBoxBonusShowView>(_rewardList);
         }
     }

+ 48 - 17
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs

@@ -23,7 +23,7 @@ namespace GFGGame
         private string activityEndTime = "[2024][2][2][00:00]";
 
         Dictionary<int,GObject> _listActivityBtnObj = new Dictionary<int, GObject>();
-        private List<string> effectNameList = new List<string>() { "CK_ZWH_01", "CK_ZWH_02", "CK_TWH_01", "CK_TWH_02" }; 
+        private Dictionary<string, GGraph> effectNameDic = new Dictionary<string, GGraph>() { }; 
 
         private int _activeBoxId = 0;
         private int _curIndex = 0;
@@ -32,6 +32,8 @@ namespace GFGGame
 
         private EffectUI _effectUI1;
         private EffectUI _effectUI2;
+        private EffectUI _effectUI3;
+        private EffectUI _effectUI4;
 
         public override void Dispose()
         {
@@ -44,6 +46,10 @@ namespace GFGGame
             _effectUI1 = null;
             EffectUIPool.Recycle(_effectUI2);
             _effectUI2 = null;
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+            EffectUIPool.Recycle(_effectUI4);
+            _effectUI4 = null;
 
             _effectUIDic.Clear();
 
@@ -96,8 +102,15 @@ namespace GFGGame
             _ui.m_listBg.SetVirtualAndLoop();  //虚拟循环列表
             _ui.m_listBg.scrollPane.onScrollEnd.Add(OnScrollEnd);
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("zx_bg");
+
+            effectNameDic.Add("zx_zwy_ll", _ui.m_effectZWH);
+            effectNameDic.Add("zx_twy_cx", _ui.m_effectTWH);
+            effectNameDic.Add("zx_twy_xh", _ui.m_effectTWH2);
+            effectNameDic.Add("zx_zwy_yjzh", _ui.m_effectZWH2);
             _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_effectTWH, "ui_LuckyBox", "CK_TWH_01");
             _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_effectZWH, "ui_LuckyBox", "CK_ZWH_01");
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_effectTWH2, "ui_LuckyBox", "CK_TWH_02");
+            _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_effectZWH2, "ui_LuckyBox", "CK_ZWH_02");
             AdaptScreen();
         }
         protected override void AddEventListener()
@@ -109,6 +122,8 @@ namespace GFGGame
             EventAgent.AddEventListener(ConstMessage.LUCKY_BOX_FREE_TIME_CHANGED, UpdateFreeInfo);
             EventAgent.AddEventListener(ConstMessage.LUCKY_BOX_ACTIVITY_REWARD, UpdateBtnReward);
             EventAgent.AddEventListener(ConstMessage.ACTIVITY_LUCKY_BOX, UpdateBtnReward);
+            EventAgent.AddEventListener(ConstMessage.LUCKY_EFFECT_UPDATE, UpdateEffectVisible);
+
         }
         protected override void OnShown()
         {
@@ -346,22 +361,22 @@ namespace GFGGame
         }
         private void UpdateEffect()
         {
-            LuckyBoxCfg luckybox = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxDataManager.Instance.currentBoxId);
-            if(luckybox.name == "紫薇垣")
-            {
-                _ui.m_effectZWH.visible = true;
-                _ui.m_effectTWH.visible = false;
-            }
-            else if (luckybox.name == "太微垣")
-            {
-                _ui.m_effectZWH.visible = false;
-                _ui.m_effectTWH.visible = true;
-            }
-            else
-            {
-                _ui.m_effectZWH.visible = false;
-                _ui.m_effectTWH.visible = false;
-            }
+            //LuckyBoxCfg luckybox = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxDataManager.Instance.currentBoxId);
+            //if(luckybox.name == "紫薇垣")
+            //{
+            //    _ui.m_effectZWH.visible = true;
+            //    _ui.m_effectTWH.visible = false;
+            //}
+            //else if (luckybox.name == "太微垣")
+            //{
+            //    _ui.m_effectZWH.visible = false;
+            //    _ui.m_effectTWH.visible = true;
+            //}
+            //else
+            //{
+            //    _ui.m_effectZWH.visible = false;
+            //    _ui.m_effectTWH.visible = false;
+            //}
         }
 
         private void UpdateBtnReward()
@@ -652,6 +667,7 @@ namespace GFGGame
             EventAgent.RemoveEventListener(ConstMessage.LUCKY_BOX_FREE_TIME_CHANGED, UpdateFreeInfo);
             EventAgent.RemoveEventListener(ConstMessage.LUCKY_BOX_ACTIVITY_REWARD, UpdateBtnReward);
             EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_LUCKY_BOX, UpdateBtnReward);
+            EventAgent.RemoveEventListener(ConstMessage.LUCKY_EFFECT_UPDATE, UpdateEffectVisible);
         }
 
         private void OnClickBtnBack()
@@ -734,5 +750,20 @@ namespace GFGGame
             float offsetY = _ui.m_grpTop.y + ViewGlobal.GetRealTopOffset();
             _ui.m_grpTop.SetXY(_ui.m_grpTop.x, offsetY);
         }
+        private void UpdateEffectVisible(EventContext eventContext)
+        {
+            var resStr = (string)eventContext.data;
+            foreach(var item in effectNameDic)
+            {
+                if(item.Key == resStr)
+                {
+                    item.Value.visible = true;
+                }
+                else
+                {
+                    item.Value.visible = false;
+                }
+            }
+        }
     }
 }

+ 20 - 0
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs

@@ -22,6 +22,7 @@ namespace GFGGame
 
         private EffectUI _effectUI1;
         private EffectUI _effectUI2;
+        private EffectUI _effectUI3;
 
         public override void Dispose()
         {
@@ -29,6 +30,8 @@ namespace GFGGame
             _effectUI1 = null;
             EffectUIPool.Recycle(_effectUI2);
             _effectUI2 = null;
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
 
             //EffectUIPool.Recycle(_effectUI3);
             //_effectUI3 = null;
@@ -229,6 +232,14 @@ namespace GFGGame
                 //EffectUI _effectUI = EffectUIPool.CreateEffectUI(item.m_comEff.m_holder, "ui_fight_new", "kp_Select");
                 // _effects.Add(_effectUI);
             }
+            if(index == 0)
+            {
+                item.m_useIcon.visible = true;
+            }
+            else
+            {
+                item.m_useIcon.visible = false;
+            }
 
             item.target.asCom.RemoveChild(_comSelected);
             if (_selectedIndex == index) { 
@@ -241,9 +252,18 @@ namespace GFGGame
 
         private void OnListCardItemClick(EventContext context)
         {
+            GObject obj = context.data as GObject;
+            UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj);
+            item.m_t0.Play();
+
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+            _effectUI3 = EffectUIPool.CreateEffectUI(item.m_effect, "ui_KP", "KP_Select");
+
             UpdateView(_ui.m_listCard.selectedIndex);
 
             OnCardSelected(cardList[_ui.m_listCard.selectedIndex].id);
+
         }
 
         private void OnCardSelected(int cardId)

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterListView.cs

@@ -291,6 +291,7 @@ namespace GFGGame
             _chapterCfgs = StoryChapterCfgArray.Instance.GetCfgsBysubType(subType);
             //这里+2,只是为了list左右两边为空白的表现,对于数据没啥意义
             _ui.m_listChapter.numItems = _chapterCfgs.Count + 2;
+            //_ui.m_listChapter.numItems = MainStoryDataManager.CheckChapterPassIndex(subType) + 2;
             int currentChapterIndex = 0;
             for (int i = 0; i < _ui.m_listChapter.numChildren; i++) 
             {
@@ -436,7 +437,6 @@ namespace GFGGame
             //GuideController.TryGuide(_ui.m_listChapter, ConstGuideId.ENTER_CHAPTER_4, 3, "", 1, true, _ui.target.height / 2);
             //GuideController.TryGuide(_ui.m_listChapter, ConstGuideId.ENTER_CHAPTER_5, 3, "", 1, true, _ui.target.height / 2);
             GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.STUDIO_PORCELAIN, 1, "点击返回主界面。");
-            GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.STUDIO_FILING, 1, "点击返回主界面。");
         }
 
         private void DoSpecialEffect(object parm = null)

+ 7 - 1
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryChapterView.cs

@@ -571,7 +571,10 @@ namespace GFGGame
              || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_4) <= 0
              || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_5) <= 0
              || GuideDataManager.IsGuideFinish(ConstGuideId.UP_CARD_STAR) <= 0
-             || GuideDataManager.IsGuideFinish(ConstGuideId.ARENA_OPEN) <= 0)
+             || GuideDataManager.IsGuideFinish(ConstGuideId.ARENA_OPEN) <= 0
+             || GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0
+             || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_FILING) <=0
+             || GuideDataManager.IsGuideFinish("TimeTracingShowView") <=0)
             //|| GuideDataManager.IsGuideFinish(ConstGuideId.CLOTHING_DECOMPOSE) <= 0)
             {
                 UpdateToCheckGuide(null);
@@ -613,6 +616,9 @@ namespace GFGGame
             bool isGuide9 = GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.UP_CARD_STAR, 1, "点击返回主界面。");
             bool isGuide12 = GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.ARENA_OPEN, 1, "点击返回主界面。");
 
+            bool isGuide13 = GuideController.TryGuide(_ui.m_btnHome, "ClothingSelectView", 1, "点击返回主界面。");
+            bool isGuide14 = GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.STUDIO_FILING, 1, "点击返回主界面。");
+            bool isGuide15 = GuideController.TryGuide(_ui.m_btnHome, "TimeTracingShowView", 1, "点击返回主界面。");
             //&& !isGuide6 && !isGuide8
             _ui.m_chapter.target.scrollPane.touchEffect = !isGuide0 && !isGuide1 && !isGuide2 && !isGuide3 && !isGuide4 && !isGuide5 && !isGuide7 && !isGuide9 && !isGuide10;
 

+ 72 - 10
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryDialogView.cs

@@ -20,6 +20,7 @@ namespace GFGGame
         private GameObject _sceneObject;
         private GameObject _animObject;
         private EffectUI _effectUI1;
+        private EffectUI _effect;
         private DressUpObj _dressUpObj;
         private GameObject _dressUpSceneObj;
         private GameObject _selfHeadImgObj;
@@ -70,6 +71,8 @@ namespace GFGGame
             _isShowLetters = false;
             EffectUIPool.Recycle(_effectUI1);
             _effectUI1 = null;
+            EffectUIPool.Recycle(_effect);
+            _effect = null;
             _onScreenEffectComplete = null;
             _typingEffect = null;
             if (_ui != null)
@@ -146,7 +149,8 @@ namespace GFGGame
             IsTeaParty = (bool)datas[4];
             _autoPlay = _lastStartAutoPlay;
 
-            if (LauncherConfig.ChannelId != (int)ChannelID.Test && !InstanceZonesDataManager.CheckLevelPass(MainStoryDataManager.currentLevelCfgId))
+            if ((LauncherConfig.ChannelId != (int)ChannelID.Test) &&
+                !InstanceZonesDataManager.CheckLevelPass(MainStoryDataManager.currentLevelCfgId))
             {
                 // 临时设置都可以跳过对话
                 skipable = false;
@@ -155,8 +159,12 @@ namespace GFGGame
             {
                 skipable = true;
             }
-
+            if (MainStoryDataManager.currentLevelCfgId == 100001001 && !InstanceZonesDataManager.CheckLevelPass(MainStoryDataManager.currentLevelCfgId))
+            {
+                skipable = false;
+            }
             _ui.m_btnSkip.visible = skipable;
+
             _ui.m_c1.selectedIndex = 0;
 
             if (_storyStartID == MainStoryDataManager.priorId)
@@ -355,6 +363,7 @@ namespace GFGGame
             _ui.m_dialogName.target.visible = false;
             _ui.m_dialogHead.target.visible = false;
             float delay = 0;
+            bool isWait = false;
             //屏幕效果
             if (_currentStepCfg != null)
             {
@@ -365,11 +374,12 @@ namespace GFGGame
                 }
                 else if (_currentStepCfg.blankScreenDur > 0)
                 {
+                    isWait = true;
                     delay = _currentStepCfg.blankScreenDur;
                     UpdatePic("0");
                 }
             }
-            if (delay > 0)
+            if (delay > 0 && !isWait)
             {
                 //转换成秒
                 delay = delay / 1000f;
@@ -377,6 +387,22 @@ namespace GFGGame
                 Timers.inst.Add(delay, 1, OnScreenEffectComplete);
                 StoryDialogDataManager.Instance.dialogShowDelay = 0.6f;
             }
+            else if (isWait)
+            {
+                if (_autoPlay)
+                {
+                    //转换成秒
+                    delay = delay / 1000f;
+                    _onScreenEffectComplete = OnScreenEffectComplete;
+                    Timers.inst.Add(delay, 1, OnScreenEffectComplete);
+                    StoryDialogDataManager.Instance.dialogShowDelay = 0.6f;
+                }
+                else
+                {
+                    _onScreenEffectComplete = OnScreenEffectComplete;
+                    StoryDialogDataManager.Instance.dialogShowDelay = 0.6f;
+                }
+            }
             else
             {
                 OnScreenEffectComplete();
@@ -412,7 +438,7 @@ namespace GFGGame
             _currentStepCfg = storyDialogCfg;
             UpdateMusic(storyDialogCfg.musicRes);
             UpdateBg(storyDialogCfg.bgRes);
-            UpdatePic(storyDialogCfg.picRes, storyDialogCfg.faceRes);
+            UpdatePic(storyDialogCfg.picRes, storyDialogCfg.faceRes, storyDialogCfg.emojiRes);
 
             UpdateAnim(storyDialogCfg.aniRes);
             UpdateRoleObj(storyDialogCfg.name);
@@ -500,7 +526,7 @@ namespace GFGGame
                 //}
             }
 
-            _ui.m_loaMask.url = ResPathUtil.GetBgImgPath(storyDialogCfg.maskRes);
+            _ui.m_loaMask.url = ResPathUtil.GetSceneBgPath(storyDialogCfg.maskRes);
             _ui.m_btnAutoPlay.enabled = true;
             _ui.m_list.visible = false;
             var content = storyDialogCfg.content.Replace("self", RoleDataManager.roleName);
@@ -790,7 +816,7 @@ namespace GFGGame
             }
         }
 
-        private void UpdatePic(string value, string faceValue = "")
+        private void UpdatePic(string value, string faceValue = "", string emojiValue = "")
         {
             if (IsTeaParty)
             {
@@ -801,13 +827,26 @@ namespace GFGGame
             {
                 SceneController.UpdateDialogPic(value, _sceneObject);
             }
-
             if (faceValue.Length > 0)
             {
                 SceneController.InitPicFace(faceValue, _sceneObject);
             }
+            if (emojiValue.Length > 0)
+            {
+                if(emojiValue != "0")
+                {
+                    SceneController.UpdateDialogPic("0", _sceneObject);
+                }
+                UpdateLiveEmoji(emojiValue);
+            }
+        }
+        private void UpdateLiveEmoji(string EmojiRes)
+        {
+            if (EmojiRes.Length > 0 && !IsTeaParty)
+            {
+                SceneController.UpdateEmojiAni(EmojiRes, ref _animObject);
+            }
         }
-
         private void UpdateAnim(string value)
         {
             if (value.Length > 0 && !IsTeaParty)
@@ -875,9 +914,23 @@ namespace GFGGame
             }
         }
 
-        private void PlayEffect(string[] infos)
+        private void PlayEffect(string[] value)
         {
-
+            if (value.Length > 0)
+            {
+                if (value[0] == "0")
+                {
+                    EffectUIPool.Recycle(_effect);
+                    _effect = null;
+                }
+                else
+                {
+                    EffectUIPool.Recycle(_effect);
+                    _effect = null;
+                    _effect = EffectUIPool.CreateEffectUI(_ui.m_effect, "ui_gyp", value[0]);
+                    _ui.m_effect.visible = true;
+                }
+            }
         }
 
         private void PlayShake(int[] shakeInfoArr)
@@ -1014,6 +1067,15 @@ namespace GFGGame
                         resList.Add(aniRes);
                     }
                 }
+                if (cfg.emojiRes.Length > 0 && cfg.emojiRes != "0")
+                {
+                    string EmojiPath = string.Format("DressUp/{0}", cfg.emojiRes);
+                    string aniRes = ResPathUtil.GetEmojiResPath(EmojiPath, cfg.emojiRes);
+                    if (!resList.Contains(aniRes))
+                    {
+                        resList.Add(aniRes);
+                    }
+                }
             }
 
             ResourceDownloaderOperation downloaderOperation = YooAssets.CreateBundleDownloader(resList.ToArray(), 3, 3);

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor