Selaa lähdekoodia

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

gfgios 11 kuukautta sitten
vanhempi
commit
5b8ded4631
45 muutettua tiedostoa jossa 1509 lisäystä ja 319 poistoa
  1. 68 31
      GameClient/Assets/Editor/ToolsMenu.cs
  2. 8 8
      GameClient/Assets/Game/HotUpdate/Constant/ConstCardRarity.cs
  3. 2 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs
  4. 2 0
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  5. 258 101
      GameClient/Assets/Game/HotUpdate/Data/MatchingCompetitionDataManager.cs
  6. 45 3
      GameClient/Assets/Game/HotUpdate/Data/MatchingPhotoHelper.cs
  7. 54 42
      GameClient/Assets/Game/HotUpdate/Data/MatchingTwoDataManager.cs
  8. 18 1
      GameClient/Assets/Game/HotUpdate/Data/PhotographSceneManager.cs
  9. 25 2
      GameClient/Assets/Game/HotUpdate/Data/VO/MatchingCompetitionData.cs
  10. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceZonesUI.cs
  11. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_ComRewardList.cs
  12. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_ComRewardList.cs.meta
  13. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_Component6.cs
  14. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionGatheringUI.cs
  15. 12 9
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionRankUI.cs
  16. 90 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionRewardUI.cs
  17. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionRewardUI.cs.meta
  18. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionWorksUI.cs
  19. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/poem/UI_PoemPhotoUI.cs
  20. 1 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/CommonSProxy.cs
  21. 119 10
      GameClient/Assets/Game/HotUpdate/ServerProxy/MatchingCompetitionSproxy.cs
  22. 29 0
      GameClient/Assets/Game/HotUpdate/Utils/StringUtil.cs
  23. 5 3
      GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs
  24. 146 42
      GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs
  25. 17 6
      GameClient/Assets/Game/HotUpdate/Views/InstanceZones/InstanceZonesView.cs
  26. 11 3
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  27. 19 7
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionDetailView.cs
  28. 26 1
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionGatheringView.cs
  29. 34 5
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRankView.cs
  30. 229 0
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRewardView.cs
  31. 11 0
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRewardView.cs.meta
  32. 63 16
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionSelectView.cs
  33. 64 24
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionUpLoadView.cs
  34. 3 2
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionWorkListView.cs
  35. 8 0
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionWorksView.cs
  36. 4 0
      GameClient/Assets/Game/HotUpdate/Views/Poem/PoemPhotoPreView.cs
  37. 12 2
      GameClient/Assets/Game/HotUpdate/Views/Poem/PoemPhotoView.cs
  38. 18 1
      GameClient/Assets/Game/HotUpdate/Views/Store/StoreView.cs
  39. BIN
      GameClient/Assets/ResIn/UI/InstanceZones/InstanceZones_fui.bytes
  40. BIN
      GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0!a.png
  41. BIN
      GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0.png
  42. BIN
      GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0_1!a.png
  43. BIN
      GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0_1.png
  44. BIN
      GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_fui.bytes
  45. BIN
      GameClient/Assets/ResIn/UI/Poem/Poem_fui.bytes

+ 68 - 31
GameClient/Assets/Editor/ToolsMenu.cs

@@ -32,7 +32,6 @@ namespace GFGEditor
         [MenuItem("外网DEV/")]
         public static void VersionTag()
         {
-            
         }
 #elif PT_DouYouDev
         [MenuItem("PT_DouYouDev/")]
@@ -65,12 +64,13 @@ namespace GFGEditor
             
         }
 #else
-
         [MenuItem("内网/")]
         public static void VersionTag()
         {
 
         }
+
+#endif
         [MenuItem("策划/更新并导入所有", false, (int)TOOL_MENU_PRIORITY.UpdateAndImportAll)]
         static void UpdateAndImportAll()
         {
@@ -152,7 +152,6 @@ namespace GFGEditor
         {
             DeleteUnnecessaryImage();
         }
-#endif
 
         private static void UpdateProjectRes()
         {
@@ -175,6 +174,7 @@ namespace GFGEditor
             {
                 ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "updateArtRes.bat", ImportArtResTool.ResRootDirNameDressUp);
             }
+
             EditorUtility.ClearProgressBar();
         }
 
@@ -192,12 +192,14 @@ namespace GFGEditor
             ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "commitBundles.bat");
             EditorUtility.ClearProgressBar();
         }
+
         public static void ImportArtRes()
         {
             EditorUtility.DisplayProgressBar("进度", "正在导入美术资源", 1);
             ImportArtResTool.Import();
             EditorUtility.ClearProgressBar();
         }
+
         public static void ImportExcel()
         {
             Log.ILog = new UnityLogger();
@@ -207,6 +209,13 @@ namespace GFGEditor
                 File.Delete(ExcelConfig.excelsCacheFolderPath);
             }
             ET.Options.Instance = new ET.Options();
+            //清除缓存  
+            
+            if (File.Exists(ExcelConfig.excelsCacheFolderPath))
+            {
+                File.Delete(ExcelConfig.excelsCacheFolderPath);
+            }
+            
             EditorUtility.DisplayProgressBar("进度", "正在导入表格", 1);
             SqliteController.Instance.Init(false, null);
             SQLiteHelper.Instance.OpenConnection();
@@ -220,6 +229,7 @@ namespace GFGEditor
             {
                 Directory.CreateDirectory(ExcelConfig.configCodePath);
             }
+
             if (!Directory.Exists(ExcelConfig.configArrayCodePath))
             {
                 Directory.CreateDirectory(ExcelConfig.configArrayCodePath);
@@ -242,6 +252,7 @@ namespace GFGEditor
             EditorUtility.ClearProgressBar();
             SQLiteHelper.Instance.CloseConnection();
         }
+
         static void UpdateAndImportArtRes()
         {
             UpdateArtRes();
@@ -250,7 +261,6 @@ namespace GFGEditor
 
         static void UpdateAndImportExcel()
         {
-
             UpdateExcel();
             ImportExcel();
         }
@@ -260,6 +270,7 @@ namespace GFGEditor
         {
             ImportArtResTool.Test();
         }
+
         [MenuItem("Tools/ImageClip/ReadImagePosition")]
         public static void ReadImagePosition()
         {
@@ -277,51 +288,77 @@ namespace GFGEditor
         {
             EditorUtility.DisplayProgressBar("进度", "开始清除资源", 1);
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.FieldGuideIconTargetPath, new string[] { ImportArtResTool.FieldGuideIconMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ChapterGuideIconTargetPath, new string[] { ImportArtResTool.ChapterGuideIconMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.FieldGuideIconTargetPath,
+                new string[] { ImportArtResTool.FieldGuideIconMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ChapterGuideIconTargetPath,
+                new string[] { ImportArtResTool.ChapterGuideIconMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MusicTargetPath, new string[] { ImportArtResTool.MusicMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MusicTargetPath,
+                new string[] { ImportArtResTool.MusicMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardMusicTargetPath, new string[] { ImportArtResTool.CardMusicMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardMusicTargetPath,
+                new string[] { ImportArtResTool.CardMusicMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ItemIconTargetPath, new string[] { ImportArtResTool.IconMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ItemIconTargetPath,
+                new string[] { ImportArtResTool.IconMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.DressUpTargetPath, new string[] { ImportArtResTool.BgMd5FileSaveName, ImportArtResTool.DressUpMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.DressUpTargetPath,
+                new string[] { ImportArtResTool.BgMd5FileSaveName, ImportArtResTool.DressUpMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcHeadTargetPath, new string[] { ImportArtResTool.NPCHeadMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcHeadTargetPath,
+                new string[] { ImportArtResTool.NPCHeadMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcPicTargetPath, new string[] { ImportArtResTool.PicFMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcPicTargetPath,
+                new string[] { ImportArtResTool.PicFMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcPicSTargetPath, new string[] { ImportArtResTool.PicSMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcPicSTargetPath,
+                new string[] { ImportArtResTool.PicSMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardBgTargetPath, new string[] { ImportArtResTool.CardBgMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardBgTargetPath,
+                new string[] { ImportArtResTool.CardBgMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardIconTargetPath, new string[] { ImportArtResTool.CardMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardSkillTargetPath, new string[] { ImportArtResTool.CardSkillMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardIconTargetPath,
+                new string[] { ImportArtResTool.CardMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardSkillTargetPath,
+                new string[] { ImportArtResTool.CardSkillMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityTargetPath, new string[] { ImportArtResTool.ActivityMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow1TargetPath, new string[] { ImportArtResTool.ActivityShow1Md5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityTargetPath,
+                new string[] { ImportArtResTool.ActivityMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow1TargetPath,
+                new string[] { ImportArtResTool.ActivityShow1Md5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.PhotoGraphBorderTargetPath, new string[] { ImportArtResTool.PhotoGraphBorderMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.PhotoGraphBorderTargetPath,
+                new string[] { ImportArtResTool.PhotoGraphBorderMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.UIBgTargetPath, new string[] { ImportArtResTool.UIBgMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TravelBgTargetPath, new string[] { ImportArtResTool.TravelBgMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TravelRoleTargetPath, new string[] { ImportArtResTool.TravelRoleMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.HeadTargetPath, new string[] { ImportArtResTool.HeadMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.HeadBorderTargetPath, new string[] { ImportArtResTool.HeadBorderMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.LeagueIconTargetPath, new string[] { ImportArtResTool.LeagueIconMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.UIBgTargetPath,
+                new string[] { ImportArtResTool.UIBgMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TravelBgTargetPath,
+                new string[] { ImportArtResTool.TravelBgMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TravelRoleTargetPath,
+                new string[] { ImportArtResTool.TravelRoleMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.HeadTargetPath,
+                new string[] { ImportArtResTool.HeadMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.HeadBorderTargetPath,
+                new string[] { ImportArtResTool.HeadBorderMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.LeagueIconTargetPath,
+                new string[] { ImportArtResTool.LeagueIconMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow2TargetPath, new string[] { ImportArtResTool.ActivityShow2Md5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow2TargetPath,
+                new string[] { ImportArtResTool.ActivityShow2Md5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MaterialTargetPath, new string[] { ImportArtResTool.EffectMaterialMd5FileSaveName });
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ShaderTargetPath, new string[] { ImportArtResTool.ShaderMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MaterialTargetPath,
+                new string[] { ImportArtResTool.EffectMaterialMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ShaderTargetPath,
+                new string[] { ImportArtResTool.ShaderMd5FileSaveName });
             // FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ModelTargetPath, new string[] { ImportArtResTool.ModelTargetPath });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TextureTargetPath, new string[] { ImportArtResTool.EffectTextureMd5FileSaveName });
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TextureTargetPath,
+                new string[] { ImportArtResTool.EffectTextureMd5FileSaveName });
+
+            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.LuckyBoxTitleImgTargetPath,
+                new string[] { ImportArtResTool.LuckyBoxTitleImgMd5FileSaveName });
 
-            FileUtil.DeleteUnnecessaryImage(ImportArtResTool.LuckyBoxTitleImgTargetPath, new string[] { ImportArtResTool.LuckyBoxTitleImgMd5FileSaveName });
 
-            
             DeleteFileHelper.TrySvnRemoveDeleteFile();
             EditorUtility.ClearProgressBar();
         }

+ 8 - 8
GameClient/Assets/Game/HotUpdate/Constant/ConstCardRarity.cs

@@ -3,7 +3,7 @@ using UnityEngine;
 
 namespace GFGGame
 {
-    public class ConstCardRarity 
+    public class ConstCardRarity_Type 
     {
 
         public const int Rarity_TIAN = 4;
@@ -22,15 +22,15 @@ namespace GFGGame
 
         public static SortedList CardRarityList()
         {
-            if (ConstCardRarity._cardRarityList == null)
+            if (ConstCardRarity_Type._cardRarityList == null)
             {
-                ConstCardRarity._cardRarityList = new SortedList();
-                ConstCardRarity._cardRarityList.Add(ConstCardRarity.Rarity_HUANG, ConstCardRarity.TITLE_HUANG);
-                ConstCardRarity._cardRarityList.Add(ConstCardRarity.Rarity_XUAN, ConstCardRarity.TITLE_XUAN);
-                ConstCardRarity._cardRarityList.Add(ConstCardRarity.Rarity_DI, ConstCardRarity.TITLE_DI);
-                ConstCardRarity._cardRarityList.Add(ConstCardRarity.Rarity_TIAN, ConstCardRarity.TITLE_TIAN);
+                ConstCardRarity_Type._cardRarityList = new SortedList();
+                ConstCardRarity_Type._cardRarityList.Add(ConstCardRarity_Type.Rarity_HUANG, ConstCardRarity_Type.TITLE_HUANG);
+                ConstCardRarity_Type._cardRarityList.Add(ConstCardRarity_Type.Rarity_XUAN, ConstCardRarity_Type.TITLE_XUAN);
+                ConstCardRarity_Type._cardRarityList.Add(ConstCardRarity_Type.Rarity_DI, ConstCardRarity_Type.TITLE_DI);
+                ConstCardRarity_Type._cardRarityList.Add(ConstCardRarity_Type.Rarity_TIAN, ConstCardRarity_Type.TITLE_TIAN);
             }
-            return ConstCardRarity._cardRarityList;
+            return ConstCardRarity_Type._cardRarityList;
         }
     }
 }

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

@@ -262,5 +262,7 @@ namespace GFGGame
         public const string FieldWork_STARTCHANGE = "FieldWork_STARTCHANGE";
         //奖励界面关闭
         public const string REWARDVIEW_CLOTHER = "REWARDVIEW_CLOTHER";
+        //关卡排行榜数据加载完毕
+        public const string REQ_CURRENT_RANK = "REQ_CURRENT_RANK";
     }
 }

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

@@ -283,6 +283,7 @@ namespace GFGGame
             ShopSProxy.ReqGetGrowthFundInfo().Coroutine();
             ActivityAfuGiftSProxy.GetSummerGiftInfo().Coroutine();
             //RoleInfoSProxy.ReqNewRoleGetSuitStatus().Coroutine();
+            MatchingCompetitionSproxy.ReqCurrentRank().Coroutine();
 
             int storageAutoPlay = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY);
             FightDataManager.Instance.autoPlay = storageAutoPlay <= 0 ? false : true;
@@ -369,6 +370,7 @@ namespace GFGGame
             MainDataManager.Instance.Clear();
             NewYearRedEnvelopeDataManager.Instance.Clear();
             MatchingCompetitionDataManager.Instance.MyNtextture = null;
+            MatchingCompetitionDataManager.Instance.MathingDressDate.bgId = 0;
             GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();
             GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
             GameGlobal.zoneScene.GetComponent<AccountInfoComponent>()?.Clear();

+ 258 - 101
GameClient/Assets/Game/HotUpdate/Data/MatchingCompetitionDataManager.cs

@@ -1,4 +1,5 @@
-using ET;
+
+using ET;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -7,6 +8,7 @@ using UnityEngine;
 using Live2D.Cubism.Rendering;
 using FairyGUI;
 using UI.MatchingCompetition;
+using System.IO;
 
 namespace GFGGame
 {
@@ -19,7 +21,7 @@ namespace GFGGame
         //人物位置信息
         public TransformData roleTransFormData = new TransformData();
         public GameObject roleGameobj;
-        public int roleID = -1;
+        public string roleID = "Role";
         //*********************搭配数据*********************************
         //需要传输的数据:MathingDressDate,DressUpBgID,DressPropIdList,TransformDataList,
         public DressUpData MathingDressDate = DressUpData.CreateDefault();
@@ -34,7 +36,11 @@ namespace GFGGame
         //场景名字,自己搭配的数据
         public List<string> DressPropNameList = new List<string>();
         //道具id
-        public List<int> DressPropIdList = new List<int>();
+        //public List<int> DressPropIdList = new List<int>();
+        //道具索引
+        public int DressPropIndex = 0;
+        //道具索引字典
+        public Dictionary<string, TransformData> DressPropTransInfoDic = new Dictionary<string, TransformData>();
         //道具位置信息
         public List<TransformData> TransformDataList = new List<TransformData>();
         public List<GameObject> itemGameObjs = new List<GameObject>();
@@ -64,7 +70,11 @@ namespace GFGGame
         public NTexture MyNtextture;
         public byte[] MyBytes;
         //本期排行榜数据
-        public List<MatchingPhotoWorksData> _currentRankList = new List<MatchingPhotoWorksData>();
+        public List<CurRanMatchingPhotoWorksData> _currentRankList = new List<CurRanMatchingPhotoWorksData>();
+        //本期排行榜数据--协程锁变量
+        public bool IsWork = false;
+        //本期排行榜数据--协程消息队列
+        public Queue<int> _coroutineQueue = new Queue<int>();
         //往期作品集
         public List<MatchingWorksData> _BeforeWorksList = new List<MatchingWorksData>();
         //往期排行榜数据
@@ -116,28 +126,40 @@ namespace GFGGame
             foreach(var item in MathingDressDate.itemList)
             {
                 CollocationInfo itemInfo = new CollocationInfo();
-                itemInfo.ItemId = item;
+                itemInfo.ItemId = item.ToString();
                 itemInfo.ClientPosition = "";
                 AllDressIDInfoList.Add(itemInfo);
             }
-            for(int i = 0;i< DressPropIdList.Count;i++)
+            foreach (var item in DressPropTransInfoDic)
             {
                 CollocationInfo itemInfo = new CollocationInfo();
-                itemInfo.ItemId = DressPropIdList[i];
-                string transStr = TransformDataList[i].position.x.ToString()+"_" + TransformDataList[i].position.y.ToString() + "_" 
-                    + TransformDataList[i].position.z.ToString()
-                   + "_" + TransformDataList[i].rotationZ.ToString()
-                   + "_" + TransformDataList[i].scale.x.ToString() + "_" + 
-                   TransformDataList[i].scale.y.ToString() + "_" + TransformDataList[i].scale.z.ToString();
+                itemInfo.ItemId = item.Key;
+                string transStr = item.Value.position.x.ToString() + "_" + item.Value.position.y.ToString() + "_"
+                    + item.Value.position.z.ToString()
+                   + "_" + item.Value.rotationZ.ToString()
+                   + "_" + item.Value.scale.x.ToString() + "_" +
+                   item.Value.scale.y.ToString() + "_" + item.Value.scale.z.ToString();
                 itemInfo.ClientPosition = transStr;
                 AllDressIDInfoList.Add(itemInfo);
             }
+            //for(int i = 0;i< DressPropIdList.Count;i++)
+            //{
+            //    CollocationInfo itemInfo = new CollocationInfo();
+            //    itemInfo.ItemId = DressPropIdList[i];
+            //    string transStr = TransformDataList[i].position.x.ToString()+"_" + TransformDataList[i].position.y.ToString() + "_" 
+            //        + TransformDataList[i].position.z.ToString()
+            //       + "_" + TransformDataList[i].rotationZ.ToString()
+            //       + "_" + TransformDataList[i].scale.x.ToString() + "_" + 
+            //       TransformDataList[i].scale.y.ToString() + "_" + TransformDataList[i].scale.z.ToString();
+            //    itemInfo.ClientPosition = transStr;
+            //    AllDressIDInfoList.Add(itemInfo);
+            //}
             CollocationInfo itemBgInfo = new CollocationInfo();
-            itemBgInfo.ItemId = MatchingCompetitionDataManager.Instance.DressUpBgID;
+            itemBgInfo.ItemId = MatchingCompetitionDataManager.Instance.DressUpBgID.ToString();
             itemBgInfo.ClientPosition = "";
             AllDressIDInfoList.Add(itemBgInfo);
             CollocationInfo itemActionInfo = new CollocationInfo();
-            itemActionInfo.ItemId = MatchingCompetitionDataManager.Instance.MathingDressDate.actionId;
+            itemActionInfo.ItemId = MatchingCompetitionDataManager.Instance.MathingDressDate.actionId.ToString();
             itemActionInfo.ClientPosition = "";
             AllDressIDInfoList.Add(itemActionInfo);
         }
@@ -147,59 +169,72 @@ namespace GFGGame
             List<int> dressitemIDList = new List<int>();
             List<int> propIDList = new List<int>();
             List<TransformData> transDataList = new List<TransformData>();
-            DressUpBgID = 0;
+            DressUpBgID = 180001;
+            MathingDressDate.bgId = 180001;
             MathingDressDate.actionId = 0;
+            DressPropTransInfoDic.Clear();
             for (int i = 0; i < AllDressIDInfoList.Count; i++)
             {
                 if(AllDressIDInfoList[i].ItemId == roleID)
                 {
-                    propIDList.Add(AllDressIDInfoList[i].ItemId);
-                    transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                    //propIDList.Add(AllDressIDInfoList[i].ItemId);
+                    //transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                    if (!DressPropTransInfoDic.ContainsKey(AllDressIDInfoList[i].ItemId))
+                    {
+                        DressPropTransInfoDic.Add(AllDressIDInfoList[i].ItemId.ToString(), AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                    }
                 }
                 else
                 {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(AllDressIDInfoList[i].ItemId);
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(GetIDByString(AllDressIDInfoList[i].ItemId));
                     if (itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)
                     {
                         if(itemCfg.subType == 19 || itemCfg.subType == 17 || itemCfg.subType == 21|| itemCfg.subType == 22)
                         {
                             //记录道具和位置信息
-                            propIDList.Add(AllDressIDInfoList[i].ItemId);
-                            transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
-                            if (itemCfg.resLayer2 == "t" || itemCfg.resLayer3 == "t")
+                            //propIDList.Add(GetIDByString(AllDressIDInfoList[i].ItemId));
+                            //transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                            if(GetIDListByString(AllDressIDInfoList[i].ItemId).Count > 1)
                             {
-                                propIDList.Add(-3);
-                                transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
-                            }
+                                if (!DressPropTransInfoDic.ContainsKey(AllDressIDInfoList[i].ItemId))
+                                {
+                                    DressPropTransInfoDic.Add(AllDressIDInfoList[i].ItemId.ToString(), AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                                }
+                            }                           
                         }
                         else if (itemCfg != null && itemCfg.subType == ConstDressUpItemType.BEI_JING)
                         {
                             DressUpBgID = itemCfg.id;
+                            MathingDressDate.bgId = itemCfg.id;
                         }
                         else
                         {
-                            dressitemIDList.Add(AllDressIDInfoList[i].ItemId);
+                            dressitemIDList.Add(GetIDByString(AllDressIDInfoList[i].ItemId));
                         }    
                     }
                     else if (itemCfg != null && itemCfg.itemType == ConstItemType.PHOTOGRAPH)
                     {
                         //记录道具和位置信息
-                        propIDList.Add(AllDressIDInfoList[i].ItemId);
-                        transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                        //propIDList.Add(GetIDByString(AllDressIDInfoList[i].ItemId));
+                        //transDataList.Add(AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                        if (!DressPropTransInfoDic.ContainsKey(AllDressIDInfoList[i].ItemId))
+                        {
+                            DressPropTransInfoDic.Add(AllDressIDInfoList[i].ItemId.ToString(), AnalysisStringToTransform(AllDressIDInfoList[i].ClientPosition));
+                        }
                     }
                     else if(itemCfg == null)
                     {
-                        SuitCfg actionId = SuitCfgArray.Instance.GetCfg(AllDressIDInfoList[i].ItemId);
+                        SuitCfg actionId = SuitCfgArray.Instance.GetCfg(GetIDByString(AllDressIDInfoList[i].ItemId));
                         if(actionId !=null)
                         {
-                            MathingDressDate.actionId = AllDressIDInfoList[i].ItemId;
+                            MathingDressDate.actionId = GetIDByString(AllDressIDInfoList[i].ItemId);
                         }   
                     }
                 }
             }
             MathingDressDate.itemList = dressitemIDList;
-            DressPropIdList = propIDList;
-            TransformDataList = transDataList;
+            //DressPropIdList = propIDList;
+            //TransformDataList = transDataList;
         }
         public TransformData AnalysisStringToTransform(string strTrans)
         {
@@ -222,78 +257,160 @@ namespace GFGGame
         {
             DressPropNameList.Clear();
             TransformDataList.Clear();
+            DressPropTransInfoDic.Clear();
             for (int i =0;i<itemGameObjs.Count;i++)
-            { 
-                if(itemGameObjs[i].name == "Role")
+            {
+                TransformData itemData = new TransformData();
+                if (itemGameObjs[i].name == "Role")
                 {
-                    TransformData itemData = new TransformData();
                     roleTransFormData.position = itemGameObjs[i].transform.position;
                     roleTransFormData.rotationZ = itemGameObjs[i].transform.eulerAngles.z;
                     roleTransFormData.scale = itemGameObjs[i].transform.localScale;
                     TransformDataList.Add(roleTransFormData);
                     DressPropNameList.Add(itemGameObjs[i].name);
+                    if (!DressPropTransInfoDic.ContainsKey(itemGameObjs[i].name))
+                    {
+                        DressPropTransInfoDic.Add(itemGameObjs[i].name, roleTransFormData);
+                    }
+                }
+                else if (itemGameObjs[i].name == "Border")
+                {
+                    itemData.position = itemGameObjs[i].transform.position;
+                    itemData.rotationZ = itemGameObjs[i].transform.eulerAngles.z;
+                    itemData.scale = itemGameObjs[i].transform.localScale;
+                    TransformDataList.Add(roleTransFormData);
+                    DressPropNameList.Add(itemGameObjs[i].name);
+                    if (!DressPropTransInfoDic.ContainsKey(itemGameObjs[i].name))
+                    {
+                        DressPropTransInfoDic.Add(BorderID.ToString(), itemData);
+                    }
+                }
+                else if (itemGameObjs[i].name == "Npc")
+                {
+                    itemData.position = itemGameObjs[i].transform.position;
+                    itemData.rotationZ = itemGameObjs[i].transform.eulerAngles.z;
+                    itemData.scale = itemGameObjs[i].transform.localScale;
+                    TransformDataList.Add(roleTransFormData);
+                    DressPropNameList.Add(itemGameObjs[i].name);
+                    if (!DressPropTransInfoDic.ContainsKey(itemGameObjs[i].name))
+                    {
+                        DressPropTransInfoDic.Add(NpcID.ToString(), itemData);
+                    }
                 }
                 else
                 {
-                    TransformData itemData = new TransformData();
                     itemData.position = itemGameObjs[i].transform.position;
                     itemData.rotationZ = itemGameObjs[i].transform.eulerAngles.z;
                     itemData.scale = itemGameObjs[i].transform.localScale;
                     TransformDataList.Add(itemData);
                     DressPropNameList.Add(itemGameObjs[i].name);
+                    if(!DressPropTransInfoDic.ContainsKey(itemGameObjs[i].name))
+                    {
+                        DressPropTransInfoDic.Add(itemGameObjs[i].name, itemData);
+                    }  
                 }
-
+                
             }
-            SetNameToIdList();
+            //SetNameToIdList();
         }
-        //将名字转换成道具id
-        public void SetNameToIdList()
+
+        public int GetIDByString(string name)
         {
-            DressPropIdList.Clear();
-            int flog_prefix = 0;
-            int flog_suffix = 0;
-            for (int i = 0; i < DressPropNameList.Count; i++)
+            int id = 0;
+            //使用正则表达式分割字符串
+            string[] parts = Regex.Split(name, "_");
+            if (parts.Length > 0)
             {
-                bool containsUnderscore = Regex.IsMatch(DressPropNameList[i], "_");
-                if(!containsUnderscore)
+                string vl = parts[0];
+                bool isNumeric = int.TryParse(vl, out _);
+                if (vl == "Role")
                 {
-                    if (DressPropNameList[i] == "Role")
-                    {
-                        DressPropIdList.Add(roleID);
-                    }
-                    else if (DressPropNameList[i] == "Border")
-                    {
-                        if (BorderID != 0)
-                        {
-                            DressPropIdList.Add(BorderID);
-                        }
-                    }
-                    else if (DressPropNameList[i] == "Npc")
-                    {
-                        if (NpcID != 0)
-                        {
-                            DressPropIdList.Add(NpcID);
-                        }
-                    }
+                    return -1;
                 }
-                else
+                else if (vl == "Border")
                 {
-                    // 使用正则表达式分割字符串
-                    string[] parts = Regex.Split(DressPropNameList[i], "_");
-                    int partID = int.Parse(parts[0]);
-                    if(flog_prefix == int.Parse(parts[0]))
-                    {
-                        if((flog_suffix == 3 && int.Parse(parts[1]) == 1)|| (flog_suffix == 1 && int.Parse(parts[1]) == 3))
-                        flog_prefix = 0;
-                        flog_suffix = 0;
-                        continue;
-                    }
-                    flog_prefix = int.Parse(parts[0]);
-                    flog_suffix = int.Parse(parts[1]);   
-                    DressPropIdList.Add(partID);
+                    return -2;
                 }
+                else if (vl == "Npc")
+                {
+                    return -3;
+                }
+                else if(!isNumeric)
+                {
+                    return -4;
+                }
+
+                id = int.Parse(parts[0]);
             }
+
+            return id;
+        }
+        public List<int> GetIDListByString(string name)
+        {
+            List<int> idList = new List<int>();
+            string[] parts = Regex.Split(name, "_");
+            foreach(string id in parts)
+            {
+                idList.Add(int.Parse(id));
+            }
+            return idList;
         }
+        //将名字转换成道具id
+        //public void SetNameToIdList()
+        //{
+        //    //DressPropIdList.Clear();
+        //    int flog_prefix = 0;
+        //    int flog_suffix = 0;
+        //    for (int i = 0; i < DressPropNameList.Count; i++)
+        //    {
+        //        bool containsUnderscore = Regex.IsMatch(DressPropNameList[i], "_");
+        //        if(!containsUnderscore)
+        //        {
+        //            if (DressPropNameList[i] == "Role")
+        //            {
+        //                DressPropIdList.Add(roleID);
+        //            }
+        //            else if (DressPropNameList[i] == "Border")
+        //            {
+        //                if (BorderID != 0)
+        //                {
+        //                    DressPropIdList.Add(BorderID);
+        //                }
+        //            }
+        //            else if (DressPropNameList[i] == "Npc")
+        //            {
+        //                if (NpcID != 0)
+        //                {
+        //                    DressPropIdList.Add(NpcID);
+        //                }
+        //            }
+        //        }
+        //        else
+        //        {
+        //            // 使用正则表达式分割字符串
+        //            string[] parts = Regex.Split(DressPropNameList[i], "_");
+        //            int partID = int.Parse(parts[0]);
+        //            if(flog_prefix == int.Parse(parts[0]))
+        //            {
+        //                if((flog_suffix == 3 && int.Parse(parts[1]) == 1)|| (flog_suffix == 1 && int.Parse(parts[1]) == 3))
+        //                {
+        //                    flog_prefix = 0;
+        //                    flog_suffix = 0;
+        //                    continue;
+        //                }
+        //                if ((flog_suffix == 2 && int.Parse(parts[1]) == 1) || (flog_suffix == 1 && int.Parse(parts[1]) == 2))
+        //                {
+        //                    flog_prefix = 0;
+        //                    flog_suffix = 0;
+        //                    continue;
+        //                }
+        //            }
+        //            flog_prefix = int.Parse(parts[0]);
+        //            flog_suffix = int.Parse(parts[1]);   
+        //            DressPropIdList.Add(partID);
+        //        }
+        //    }
+        //}
         //将穿戴数据分类
         //public void ClassifyEquipData()
         //{
@@ -322,12 +439,16 @@ namespace GFGGame
         //}
         public void InsertGameObjectList()
         {
-            for(int i=0;i< DressPropIdList.Count;i++)
+            int i = 0;
+            foreach(var item in DressPropTransInfoDic)
             {
-                if (DressPropIdList[i] == roleID)
+                i++;
+                if (item.Key == roleID)
                 {
                     indexRoleData = i;
+                    break;
                 }
+                indexRoleData = i;
             }
             if(itemGameObjs.Count ==0)
             {
@@ -409,7 +530,8 @@ namespace GFGGame
             Vector3 pos = Vector3.zero;
             if (!string.IsNullOrEmpty(itemCfg.resLayer3))
             {
-                GameObject parentGameObj3 = new GameObject(string.Format("{0}_{1}", itemCfg.id, 3));
+                DressPropIndex++;
+                GameObject parentGameObj3 = new GameObject(string.Format("{0}_{1}_{2}", itemCfg.id, 3,DressPropIndex));
                 await PhotographSceneManager.Instance.AddSceneItem(parentGameObj3, itemCfg, 3, setLayer,false,isLeft);
                 if (setLayer)
                 {
@@ -422,7 +544,8 @@ namespace GFGGame
             }
             if (!string.IsNullOrEmpty(itemCfg.resLayer2))
             {
-                GameObject parentGameObj2 = new GameObject(string.Format("{0}_{1}", itemCfg.id, 2));
+                DressPropIndex++;
+                GameObject parentGameObj2 = new GameObject(string.Format("{0}_{1}_{2}", itemCfg.id, 2,DressPropIndex));
                 await PhotographSceneManager.Instance.AddSceneItem(parentGameObj2, itemCfg, 2, setLayer,false, isLeft);
                 if (setLayer)
                 {
@@ -436,8 +559,8 @@ namespace GFGGame
             }
             if (!string.IsNullOrEmpty(itemCfg.resLayer1))
             {
-
-                GameObject parentGameObj1 = new GameObject(string.Format("{0}_{1}", itemCfg.id, 1));
+                DressPropIndex++;
+                GameObject parentGameObj1 = new GameObject(string.Format("{0}_{1}_{2}", itemCfg.id, 1, DressPropIndex));
                 await PhotographSceneManager.Instance.AddSceneItem(parentGameObj1, itemCfg, 1, setLayer, false, isLeft);
 
                 if (setLayer)
@@ -451,6 +574,25 @@ namespace GFGGame
                 }
             }
         }
+        public async void AddSceneItemOne(ItemCfg itemCfg, int layer,int index, int isLeft = 0, bool setLayer = true)
+        {
+            Vector3 pos = Vector3.zero;
+            if(DressPropIndex <= index)
+            {
+                DressPropIndex = index + 1;
+            }
+            GameObject parentGameObj3 = new GameObject(string.Format("{0}_{1}_{2}", itemCfg.id, layer, index));
+            await PhotographSceneManager.Instance.AddSceneItem(parentGameObj3, itemCfg, layer, setLayer, false, isLeft);
+            if (setLayer)
+            {
+                if (parentGameObj3.transform.childCount > 0)
+                {
+                    parentGameObj3.transform.localPosition = -parentGameObj3.transform.GetChild(0).localPosition;
+                    pos = parentGameObj3.transform.localPosition;
+                }
+            }
+        }
+
         public void OnClickBtnRule()
         {
             ViewManager.Show<MatchingCompetitionRuleTipsView>();
@@ -464,7 +606,7 @@ namespace GFGGame
         //人物位置信息
         public TransformData roleTransFormData = new TransformData();
         public GameObject roleGameobj;
-        public int roleID = -1;
+        public string roleID = "Role";
         //*********************搭配数据*********************************
         //需要传输的数据:MathingDressDate,DressUpBgID,DressPropIdList,TransformDataList,
         public DressUpData MathingDressDate = DressUpData.CreateDefault();
@@ -476,9 +618,13 @@ namespace GFGGame
         public int NpcID = 0;
         //道具数据,一一对应
         //道具id
-        public List<int> DressPropIdList = new List<int>();
+        //public List<int> DressPropIdList = new List<int>();
         //道具位置信息
         public List<TransformData> TransformDataList = new List<TransformData>();
+        //道具索引
+        public int DressPropIndex = 0;
+        //道具索引字典
+        public Dictionary<string, TransformData> DressPropTransInfoDic = new Dictionary<string, TransformData>();
         public List<GameObject> itemGameObjs = new List<GameObject>();
         //***************************************************************
         //解析后台获取的信息
@@ -487,27 +633,32 @@ namespace GFGGame
             List<int> dressitemIDList = new List<int>();
             List<int> propIDList = new List<int>();
             List<TransformData> transDataList = new List<TransformData>();
+            DressPropTransInfoDic.Clear();
             for (int i = 0; i < OneRoleInfo.JudgingInfo.CollocationInfoList.Count; i++)
             {
-                if (OneRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId == roleID)
+                CollocationInfo colloctItemInfo = OneRoleInfo.JudgingInfo.CollocationInfoList[i];
+                if (colloctItemInfo.ItemId == roleID)
                 {
-                    propIDList.Add(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                    transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                    //propIDList.Add(colloctItemInfo.ItemId);
+                    //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                    if(!DressPropTransInfoDic.ContainsKey(colloctItemInfo.ItemId))
+                    {
+                        DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                    }    
                 }
                 else
                 {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingCompetitionDataManager.Instance.GetIDByString( colloctItemInfo.ItemId));
                     if (itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)
                     {
                         if (itemCfg.subType == 19 || itemCfg.subType == 17 || itemCfg.subType == 21 || itemCfg.subType == 22)
                         {
                             //记录道具和位置信息
-                            propIDList.Add(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                            transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
-                            if(itemCfg.resLayer2 == "t" || itemCfg.resLayer3 == "t")
+                            //propIDList.Add(colloctItemInfo.ItemId);
+                            //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                            if (!DressPropTransInfoDic.ContainsKey(colloctItemInfo.ItemId))
                             {
-                                propIDList.Add(-3);
-                                transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                                DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                             }
                         }
                         else if (itemCfg != null && itemCfg.subType == ConstDressUpItemType.BEI_JING)
@@ -516,29 +667,35 @@ namespace GFGGame
                         }
                         else
                         {
-                            dressitemIDList.Add(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
+                            dressitemIDList.Add(MatchingCompetitionDataManager.Instance.GetIDByString(colloctItemInfo.ItemId));
                         }
                     }
                     else if (itemCfg != null && itemCfg.itemType == ConstItemType.PHOTOGRAPH)
                     {
                         //记录道具和位置信息
-                        propIDList.Add(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                        transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(OneRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                        //propIDList.Add(colloctItemInfo.ItemId);
+                        //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                        if (!DressPropTransInfoDic.ContainsKey(colloctItemInfo.ItemId))
+                        {
+                            DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                        }
                     }
                 }
             }
             MathingDressDate.itemList = dressitemIDList;
             MathingDressDate.actionId = OneRoleInfo.JudgingInfo.ActionId;
-            DressPropIdList = propIDList;
-            TransformDataList = transDataList;
+            //DressPropIdList = propIDList;
+            //TransformDataList = transDataList;
             DressUpBgID = OneRoleInfo.JudgingInfo.BagId;
         }
         public void InsertGameObjectList()
         {
             int indexRoleData = 0;
-            for (int i = 0; i < DressPropIdList.Count; i++)
+            int i = 0;
+            foreach (var item in DressPropTransInfoDic)
             {
-                if (DressPropIdList[i] == roleID)
+                i++;
+                if (item.Key == roleID)
                 {
                     indexRoleData = i;
                 }

+ 45 - 3
GameClient/Assets/Game/HotUpdate/Data/MatchingPhotoHelper.cs

@@ -33,19 +33,33 @@ namespace GFGGame
             {
                 return true;
             }
-
         }
+        
+        public static IEnumerator DownloadExt(List<CurRanMatchingPhotoWorksData> list)
+        {
+            for (int i = 0; i < list.Count; i++)
+            {
+                CurRanMatchingPhotoWorksData data = list[i];
+                if (data == null || data.Ntexture != null || !data.IsUp) continue;
+                int count = 0;
+                yield return DownloadPictureExt(data, count);
+            }
 
-
+            MatchingCompetitionDataManager.Instance.IsWork = false;
+            ET.Log.Debug("Download  finish!!!");
+            EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
+        }
+        
         public static IEnumerator Download(List<MatchingPhotoWorksData> list)
         {
             for (int i = 0; i < list.Count; i++)
             {
                 MatchingPhotoWorksData data = list[i];
-                if (data == null || data.Ntexture != null) continue;
+                if (data == null || data.Ntexture != null || !data.IsUp) continue;
                 int count = 0;
                 yield return DownloadPicture(data, count);
             }
+            
             ET.Log.Debug("Download  finish!!!");
             EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
         }
@@ -68,6 +82,34 @@ namespace GFGGame
             ET.Log.Debug("Download  finish!!!");
             EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
         }
+        
+        private static IEnumerator DownloadPictureExt(CurRanMatchingPhotoWorksData data, int count)
+        {
+            if (count >= 3)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("下载失败");
+                ET.Log.Error("PoemPhotoData Download  failed!!! data:" + JsonUtility.ToJson(data));
+                data.Ntexture = null;
+                ViewManager.Hide<ModalStatusView>();
+                yield break;
+            }
+            using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(data.JudgingInfo.PictureTempUrl))
+            {
+                yield return request.SendWebRequest();
+                if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)
+                {
+                    ET.Log.Error("Download  failed, error code:" + request.result, ",data:" + JsonUtility.ToJson(data));
+                    count += 1;
+                    yield return DownloadPictureExt(data, count);
+                }
+                else
+                {
+                    Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
+                    data.Ntexture = new NTexture(texture);
+                    data.Bytes = texture.EncodeToJPG();
+                }
+            }
+        }
 
         private static IEnumerator DownloadPicture(MatchingPhotoWorksData data, int count)
         {

+ 54 - 42
GameClient/Assets/Game/HotUpdate/Data/MatchingTwoDataManager.cs

@@ -17,7 +17,7 @@ namespace GFGGame
         //人物位置信息
         public TransformData roleTransFormData = new TransformData();
         public GameObject roleGameobj;
-        public int roleID = -1;
+        public string roleID = "Role";
         //*********************搭配数据*********************************
         //需要传输的数据:MathingDressDate,DressUpBgID,DressPropIdList,TransformDataList,
         public DressUpData MathingDressDate = DressUpData.CreateDefault();
@@ -29,9 +29,13 @@ namespace GFGGame
         public int NpcID = 0;
         //道具数据,一一对应
         //道具id
-        public List<int> DressPropIdList = new List<int>();
+        //public List<int> DressPropIdList = new List<int>();
         //道具位置信息
-        public List<TransformData> TransformDataList = new List<TransformData>();
+        //public List<TransformData> TransformDataList = new List<TransformData>();
+        //道具索引
+        public int DressPropIndex = 0;
+        //道具索引字典
+        public Dictionary<string, TransformData> DressPropTransInfoDic = new Dictionary<string, TransformData>();
         public List<GameObject> itemGameObjs = new List<GameObject>();
         //***************************************************************
         //解析后台获取的信息
@@ -40,28 +44,27 @@ namespace GFGGame
             List<int> dressitemIDList = new List<int>();
             List<int> propIDList = new List<int>();
             List<TransformData> transDataList = new List<TransformData>();
+            DressPropTransInfoDic.Clear();
             for (int i = 0; i < LeftRoleInfo.JudgingInfo.CollocationInfoList.Count; i++)
             {
-                if (LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId == roleID)
+                CollocationInfo colloctItemInfo = LeftRoleInfo.JudgingInfo.CollocationInfoList[i];
+                if (colloctItemInfo.ItemId == roleID)
                 {
-                    propIDList.Add(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                    transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                    //propIDList.Add(colloctItemInfo.ItemId);
+                    //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                    DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                 }
                 else
                 {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingCompetitionDataManager.Instance.GetIDByString( colloctItemInfo.ItemId));
                     if (itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)
                     {
                         if (itemCfg.subType == 19 || itemCfg.subType == 17 || itemCfg.subType == 21 || itemCfg.subType == 22)
                         {
                             //记录道具和位置信息
-                            propIDList.Add(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                            transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
-                            if (itemCfg.resLayer2 == "t" || itemCfg.resLayer3 == "t")
-                            {
-                                propIDList.Add(-3);
-                                transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
-                            }
+                            //propIDList.Add(colloctItemInfo.ItemId);
+                            //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                            DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                         }
                         else if (itemCfg != null && itemCfg.subType == ConstDressUpItemType.BEI_JING)
                         {
@@ -69,29 +72,32 @@ namespace GFGGame
                         }
                         else
                         {
-                            dressitemIDList.Add(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
+                            dressitemIDList.Add(MatchingCompetitionDataManager.Instance.GetIDByString(colloctItemInfo.ItemId));
                         }
                     }
                     else if (itemCfg != null && itemCfg.itemType == ConstItemType.PHOTOGRAPH)
                     {
                         //记录道具和位置信息
-                        propIDList.Add(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                        transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(LeftRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                        //propIDList.Add(colloctItemInfo.ItemId);
+                        //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                        DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                     }
                 }
             }
             MathingDressDate.itemList = dressitemIDList;
             MathingDressDate.actionId = LeftRoleInfo.JudgingInfo.ActionId;
-            DressPropIdList = propIDList;
-            TransformDataList = transDataList;
+            //DressPropIdList = propIDList;
+            //TransformDataList = transDataList;
             DressUpBgID = LeftRoleInfo.JudgingInfo.BagId;
         }
         public void InsertGameObjectList()
         {
             int indexRoleData = 0;
-            for (int i = 0; i < DressPropIdList.Count; i++)
+            int i = 0;
+            foreach (var item in DressPropTransInfoDic)
             {
-                if (DressPropIdList[i] == roleID)
+                i++;
+                if (item.Key == roleID)
                 {
                     indexRoleData = i;
                 }
@@ -121,7 +127,7 @@ namespace GFGGame
         //人物位置信息
         public TransformData roleTransFormData = new TransformData();
         public GameObject roleGameobj;
-        public int roleID = -1;
+        public string roleID = "Role";
         //*********************搭配数据*********************************
         //需要传输的数据:MathingDressDate,DressUpBgID,DressPropIdList,TransformDataList,
         public DressUpData MathingDressDate = DressUpData.CreateDefault();
@@ -133,9 +139,13 @@ namespace GFGGame
         public int NpcID = 0;
         //道具数据,一一对应
         //道具id
-        public List<int> DressPropIdList = new List<int>();
+        //public List<int> DressPropIdList = new List<int>();
         //道具位置信息
-        public List<TransformData> TransformDataList = new List<TransformData>();
+       // public List<TransformData> TransformDataList = new List<TransformData>();
+        //道具索引
+        public int DressPropIndex = 0;
+        //道具索引字典
+        public Dictionary<string, TransformData> DressPropTransInfoDic = new Dictionary<string, TransformData>();
         public List<GameObject> itemGameObjs = new List<GameObject>();
         //***************************************************************
         //解析后台获取的信息
@@ -144,28 +154,27 @@ namespace GFGGame
             List<int> dressitemIDList = new List<int>();
             List<int> propIDList = new List<int>();
             List<TransformData> transDataList = new List<TransformData>();
+            DressPropTransInfoDic.Clear();
             for (int i = 0; i < RightRoleInfo.JudgingInfo.CollocationInfoList.Count; i++)
             {
-                if (RightRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId == roleID)
+                CollocationInfo colloctItemInfo = RightRoleInfo.JudgingInfo.CollocationInfoList[i];
+                if (colloctItemInfo.ItemId == roleID)
                 {
-                    propIDList.Add(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                    transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                    //propIDList.Add(colloctItemInfo.ItemId);
+                    //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                    DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                 }
                 else
                 {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingCompetitionDataManager.Instance.GetIDByString(colloctItemInfo.ItemId));
                     if (itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)
                     {
                         if (itemCfg.subType == 19 || itemCfg.subType == 17 || itemCfg.subType == 21 || itemCfg.subType == 22)
                         {
                             //记录道具和位置信息
-                            propIDList.Add(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                            transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
-                            if ( itemCfg.resLayer2 == "t" || itemCfg.resLayer3 == "t")
-                            {
-                                propIDList.Add(-3);
-                                transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
-                            }
+                            //propIDList.Add(colloctItemInfo.ItemId);
+                            //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                            DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                         }
                         else if (itemCfg != null && itemCfg.subType == ConstDressUpItemType.BEI_JING)
                         {
@@ -173,29 +182,32 @@ namespace GFGGame
                         }
                         else
                         {
-                            dressitemIDList.Add(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
+                            dressitemIDList.Add(MatchingCompetitionDataManager.Instance.GetIDByString(colloctItemInfo.ItemId));
                         }
                     }
                     else if (itemCfg != null && itemCfg.itemType == ConstItemType.PHOTOGRAPH)
                     {
                         //记录道具和位置信息
-                        propIDList.Add(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ItemId);
-                        transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(RightRoleInfo.JudgingInfo.CollocationInfoList[i].ClientPosition));
+                        //propIDList.Add(colloctItemInfo.ItemId);
+                        //transDataList.Add(MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
+                        DressPropTransInfoDic.Add(colloctItemInfo.ItemId, MatchingCompetitionDataManager.Instance.AnalysisStringToTransform(colloctItemInfo.ClientPosition));
                     }
                 }
             }
             MathingDressDate.itemList = dressitemIDList;
             MathingDressDate.actionId = RightRoleInfo.JudgingInfo.ActionId;
-            DressPropIdList = propIDList;
-            TransformDataList = transDataList;
+            //DressPropIdList = propIDList;
+            //TransformDataList = transDataList;
             DressUpBgID = RightRoleInfo.JudgingInfo.BagId;
         }
         public void InsertGameObjectList()
         {
             int indexRoleData = 0;
-            for (int i = 0; i < DressPropIdList.Count; i++)
+            int i = 0;
+            foreach (var item in DressPropTransInfoDic)
             {
-                if (DressPropIdList[i] == roleID)
+                i++;
+                if (item.Key == roleID)
                 {
                     indexRoleData = i;
                 }

+ 18 - 1
GameClient/Assets/Game/HotUpdate/Data/PhotographSceneManager.cs

@@ -207,7 +207,24 @@ namespace GFGGame
         private void AddItemGameObjectToList(GameObject parentGameObj, bool setLayer)
         {
             List<GameObject> itemGameObjs = PhotographDataManager.Instance.itemGameObjs;
-            itemGameObjs.Add(parentGameObj);
+            bool hasSame = false;
+            for(int i =0; i<itemGameObjs.Count;i++)
+            {
+                if (itemGameObjs[i].name == parentGameObj.name && parentGameObj.name == "Npc")
+                {
+                    hasSame = true;
+                    itemGameObjs[i] = parentGameObj;
+                }
+                else if (itemGameObjs[i].name == parentGameObj.name && parentGameObj.name == "Border")
+                {
+                    hasSame = true;
+                    itemGameObjs[i] = parentGameObj;
+                }
+            }
+            if(!hasSame)
+            {
+                itemGameObjs.Add(parentGameObj);
+            }        
 
             if (setLayer)
             {

+ 25 - 2
GameClient/Assets/Game/HotUpdate/Data/VO/MatchingCompetitionData.cs

@@ -37,13 +37,36 @@ namespace GFGGame
     //道具的位置信息
     public class TransformData
     {
-        public Vector3 position = new Vector3();
+        public Vector3 position = new Vector3(0,0,0);
         public float rotationZ = 0f;
-        public Vector3 scale = new Vector3();
+        public Vector3 scale = new Vector3(1,1,1);
     }
+    
+    //搭配赛当期排行榜作品信息
+    public class CurRanMatchingPhotoWorksData
+    {
+        public long RoleId { get; set; }
+
+        public bool IsUp = true;
+
+        public JudgingRoundRoleInfo JudgingInfo;
+        /// <summary>
+        /// 照片数据
+        /// </summary>
+        public byte[] Bytes;
+        /// <summary>
+        /// 照片资源
+        /// </summary>
+        public NTexture Ntexture;//个人相册数据
+    }
+    
     //搭配赛作品信息
     public class MatchingPhotoWorksData
     {
+        public long RoleId { get; set; }
+
+        public bool IsUp = true;
+
         public JudgingRoundRoleInfo JudgingInfo;
         /// <summary>
         /// 照片数据

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceZonesUI.cs

@@ -14,6 +14,7 @@ namespace UI.InstanceZones
         public UI_ButtonModle9 m_btnStudio;
         public UI_ButtonModle9 m_btnTravel;
         public UI_ButtonModle9 m_btnPoem;
+        public GButton m_btnPoemGudie;
         public UI_ButtonModle9 m_btnField;
         public UI_ButtonModle9 m_btnArena;
         public GGraph m_eff;
@@ -74,6 +75,7 @@ namespace UI.InstanceZones
             m_btnStudio = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnStudio"));
             m_btnTravel = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnTravel"));
             m_btnPoem = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnPoem"));
+            m_btnPoemGudie = (GButton)comp.GetChild("btnPoemGudie");
             m_btnField = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnField"));
             m_btnArena = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnArena"));
             m_eff = (GGraph)comp.GetChild("eff");
@@ -94,6 +96,7 @@ namespace UI.InstanceZones
             m_btnTravel = null;
             m_btnPoem.Dispose();
             m_btnPoem = null;
+            m_btnPoemGudie = null;
             m_btnField.Dispose();
             m_btnField = null;
             m_btnArena.Dispose();

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_ComRewardList.cs

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

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_ComRewardList.cs.meta

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

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_Component6.cs

@@ -9,6 +9,7 @@ namespace UI.MatchingCompetition
         public GComponent target;
         public Controller m_c1;
         public GLoader m_playerImage;
+        public GTextField m_descText;
         public GComponent m_head;
         public GTextField m_nameText;
         public GTextField m_countText;
@@ -61,6 +62,7 @@ namespace UI.MatchingCompetition
         {
             m_c1 = comp.GetController("c1");
             m_playerImage = (GLoader)comp.GetChild("playerImage");
+            m_descText = (GTextField)comp.GetChild("descText");
             m_head = (GComponent)comp.GetChild("head");
             m_nameText = (GTextField)comp.GetChild("nameText");
             m_countText = (GTextField)comp.GetChild("countText");
@@ -69,6 +71,7 @@ namespace UI.MatchingCompetition
         {
             m_c1 = null;
             m_playerImage = null;
+            m_descText = null;
             m_head = null;
             m_nameText = null;
             m_countText = null;

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionGatheringUI.cs

@@ -15,6 +15,7 @@ namespace UI.MatchingCompetition
         public GTextField m_titleText;
         public GTextField m_timeText;
         public GTextField m_suitName;
+        public GGroup m_desc;
         public GButton m_btnUploadWorks;
         public GButton m_btnShop;
         public GButton m_BtnBack;
@@ -73,6 +74,7 @@ namespace UI.MatchingCompetition
             m_titleText = (GTextField)comp.GetChild("titleText");
             m_timeText = (GTextField)comp.GetChild("timeText");
             m_suitName = (GTextField)comp.GetChild("suitName");
+            m_desc = (GGroup)comp.GetChild("desc");
             m_btnUploadWorks = (GButton)comp.GetChild("btnUploadWorks");
             m_btnShop = (GButton)comp.GetChild("btnShop");
             m_BtnBack = (GButton)comp.GetChild("BtnBack");
@@ -87,6 +89,7 @@ namespace UI.MatchingCompetition
             m_titleText = null;
             m_timeText = null;
             m_suitName = null;
+            m_desc = null;
             m_btnUploadWorks = null;
             m_btnShop = null;
             m_BtnBack = null;

+ 12 - 9
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionRankUI.cs

@@ -10,12 +10,13 @@ namespace UI.MatchingCompetition
         public Controller m_c1;
         public GLoader m_bg;
         public GLoader m_playerImage;
-        public GLoader m_ruleBtn;
-        public GTextField m_titleText;
-        public GButton m_btnBefore;
+        public GLoader m_outBg;
         public GList m_RankList;
         public UI_Component3 m_playerHead;
         public GButton m_btnLook;
+        public GLoader m_ruleBtn;
+        public GTextField m_titleText;
+        public GButton m_btnBefore;
         public GButton m_BtnBack;
         public const string URL = "ui://ri3cveycp3ft1g";
         public const string PACKAGE_NAME = "MatchingCompetition";
@@ -67,12 +68,13 @@ namespace UI.MatchingCompetition
             m_c1 = comp.GetController("c1");
             m_bg = (GLoader)comp.GetChild("bg");
             m_playerImage = (GLoader)comp.GetChild("playerImage");
-            m_ruleBtn = (GLoader)comp.GetChild("ruleBtn");
-            m_titleText = (GTextField)comp.GetChild("titleText");
-            m_btnBefore = (GButton)comp.GetChild("btnBefore");
+            m_outBg = (GLoader)comp.GetChild("outBg");
             m_RankList = (GList)comp.GetChild("RankList");
             m_playerHead = (UI_Component3)UI_Component3.Create(comp.GetChild("playerHead"));
             m_btnLook = (GButton)comp.GetChild("btnLook");
+            m_ruleBtn = (GLoader)comp.GetChild("ruleBtn");
+            m_titleText = (GTextField)comp.GetChild("titleText");
+            m_btnBefore = (GButton)comp.GetChild("btnBefore");
             m_BtnBack = (GButton)comp.GetChild("BtnBack");
         }
         public void Dispose(bool disposeTarget = false)
@@ -80,13 +82,14 @@ namespace UI.MatchingCompetition
             m_c1 = null;
             m_bg = null;
             m_playerImage = null;
-            m_ruleBtn = null;
-            m_titleText = null;
-            m_btnBefore = null;
+            m_outBg = null;
             m_RankList = null;
             m_playerHead.Dispose();
             m_playerHead = null;
             m_btnLook = null;
+            m_ruleBtn = null;
+            m_titleText = null;
+            m_btnBefore = null;
             m_BtnBack = null;
             if(disposeTarget && target != null)
             {

+ 90 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionRewardUI.cs

@@ -0,0 +1,90 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.MatchingCompetition
+{
+    public partial class UI_MatchingCompetitionRewardUI
+    {
+        public GComponent target;
+        public GGraph m_mask;
+        public GGraph m_holderBgCom;
+        public GGraph m_holderTitle;
+        public GGroup m_downTipsText;
+        public UI_ComRewardList m_comList;
+        public GGroup m_grp;
+        public Transition m_openViewAction;
+        public const string URL = "ui://ri3cveycjw093x";
+        public const string PACKAGE_NAME = "MatchingCompetition";
+        public const string RES_NAME = "MatchingCompetitionRewardUI";
+        private static UI_MatchingCompetitionRewardUI _proxy;
+
+        public static UI_MatchingCompetitionRewardUI Create(GObject gObject = null)
+        {
+            var ui = new UI_MatchingCompetitionRewardUI();
+            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_MatchingCompetitionRewardUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_MatchingCompetitionRewardUI();
+            }
+            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_holderBgCom = (GGraph)comp.GetChild("holderBgCom");
+            m_holderTitle = (GGraph)comp.GetChild("holderTitle");
+            m_downTipsText = (GGroup)comp.GetChild("downTipsText");
+            m_comList = (UI_ComRewardList)UI_ComRewardList.Create(comp.GetChild("comList"));
+            m_grp = (GGroup)comp.GetChild("grp");
+            m_openViewAction = comp.GetTransition("openViewAction");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_mask = null;
+            m_holderBgCom = null;
+            m_holderTitle = null;
+            m_downTipsText = null;
+            m_comList.Dispose();
+            m_comList = null;
+            m_grp = null;
+            m_openViewAction = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionRewardUI.cs.meta

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

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionWorksUI.cs

@@ -10,6 +10,7 @@ namespace UI.MatchingCompetition
         public GLoader m_bg;
         public GTextField m_titleText;
         public GList m_worksList;
+        public GTextField m_descText;
         public GButton m_BtnBack;
         public const string URL = "ui://ri3cveycp3ft1n";
         public const string PACKAGE_NAME = "MatchingCompetition";
@@ -61,6 +62,7 @@ namespace UI.MatchingCompetition
             m_bg = (GLoader)comp.GetChild("bg");
             m_titleText = (GTextField)comp.GetChild("titleText");
             m_worksList = (GList)comp.GetChild("worksList");
+            m_descText = (GTextField)comp.GetChild("descText");
             m_BtnBack = (GButton)comp.GetChild("BtnBack");
         }
         public void Dispose(bool disposeTarget = false)
@@ -68,6 +70,7 @@ namespace UI.MatchingCompetition
             m_bg = null;
             m_titleText = null;
             m_worksList = null;
+            m_descText = null;
             m_BtnBack = null;
             if(disposeTarget && target != null)
             {

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/poem/UI_PoemPhotoUI.cs

@@ -23,6 +23,7 @@ namespace UI.Poem
         public GTextField m_txtCount;
         public GButton m_btnChooseAll;
         public GButton m_btnRule;
+        public GTextField m_descText;
         public const string URL = "ui://iyz778gkv4825";
         public const string PACKAGE_NAME = "Poem";
         public const string RES_NAME = "PoemPhotoUI";
@@ -86,6 +87,7 @@ namespace UI.Poem
             m_txtCount = (GTextField)comp.GetChild("txtCount");
             m_btnChooseAll = (GButton)comp.GetChild("btnChooseAll");
             m_btnRule = (GButton)comp.GetChild("btnRule");
+            m_descText = (GTextField)comp.GetChild("descText");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -105,6 +107,7 @@ namespace UI.Poem
             m_txtCount = null;
             m_btnChooseAll = null;
             m_btnRule = null;
+            m_descText = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 1 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/CommonSProxy.cs

@@ -72,6 +72,7 @@ namespace GFGGame
                     await NewYearRedEnvelopeSProxy.ReqGetRedPacketInfo();
                     await ActivityGetYuanXiaoProxy.ReqGetActivityGameInfos();
                     await ActivityFYJYProxy.ReqGetActivityGameInfos();
+                    await MatchingCompetitionSproxy.ReqMatchingCompetitionInfo();
                     ActivityDataManager.Instance.todayActivityTips = GameGlobal.myNumericComponent.GetAsInt(NumericType.IsPropYchmActivity);
                     ActivityDataManager.Instance.todayMonthlyCardTips = GameGlobal.myNumericComponent.GetAsInt(NumericType.IsPropCzykActivity);
                     EventAgent.DispatchEvent(ConstMessage.RESET_DAILY_DATA);

+ 119 - 10
GameClient/Assets/Game/HotUpdate/ServerProxy/MatchingCompetitionSproxy.cs

@@ -1,9 +1,12 @@
-using ET;
+using System;
+using System.Collections;
+using ET;
 using GFGGame;
 using FairyGUI;
 using UnityEngine;
 using UnityEngine.Networking;
 using System.Collections.Generic;
+using System.Linq;
 
 namespace ET
 {
@@ -35,6 +38,7 @@ namespace GFGGame
             if(response.MyWorks != null)
             {
                 MatchingCompetitionDataManager.Instance.myWorks = response.MyWorks;
+                MatchingCompetitionDataManager.Instance.WorksID = response.MyWorks.WorksId;
                 MatchingCompetitionDataManager.Instance.AllDressIDInfoList = response.MyWorks.CollocationInfoList;
             }
             else
@@ -56,6 +60,7 @@ namespace GFGGame
         //    if (!(response is { Error: ErrorCode.ERR_Success })) return false;
         //    return true;
         //}
+        
         //获取一个热门推荐的玩家
         public static async ETTask<bool> ReqGetOnePlayers()
         {
@@ -151,20 +156,123 @@ namespace GFGGame
             return true;
         }
         //获取当前排行榜
-        public static async ETTask<bool> ReqCurrentRank()
+        public static async ETTask<bool> ReqCurrentRank(bool isPushEvent = false)
         {
-            var response = (S2C_GetCurJudgingRoundRankList)await MessageHelper.SendToServer(new C2S_GetCurJudgingRoundRankList { });
+            MatchingCompetitionDataManager.Instance.IsWork = true;
+            var response =
+                (S2C_GetCurJudgingRoundRankList)await MessageHelper.SendToServer(new C2S_GetCurJudgingRoundRankList
+                    { });
             if (!(response is { Error: ErrorCode.ERR_Success })) return false;
-            MatchingCompetitionDataManager.Instance._currentRankList.Clear();
-            foreach (var item in response.JudgingRoundRoleInfoList)
+
+            //需要从缓存里清理的数据
+            List<long> delRoleIds = new List<long>();
+            foreach (var item in MatchingCompetitionDataManager.Instance._currentRankList)
             {
-                MatchingPhotoWorksData data = new MatchingPhotoWorksData();
-                data.JudgingInfo = item;
-                MatchingCompetitionDataManager.Instance._currentRankList.Add(data);
+                if (response.JudgingRoundRoleInfoList.All(a => a.RoleId != item.RoleId))
+                {
+                    delRoleIds.Add(item.RoleId);
+                }
+            }
+
+            //执行清理
+            if (delRoleIds.Count != 0)
+            {
+                foreach (var roleId in delRoleIds)
+                {
+                    var itemToRemove =
+                        MatchingCompetitionDataManager.Instance._currentRankList.FirstOrDefault(item =>
+                            item.RoleId == roleId);
+                    if (itemToRemove != null)
+                    {
+                        MatchingCompetitionDataManager.Instance._currentRankList.Remove(itemToRemove);
+                    }
+                }
             }
-            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingCompetitionDataManager.Instance._currentRankList));
+            
+            foreach (var judgingRoundRoleInfo in response.JudgingRoundRoleInfoList)
+            {
+                CurRanMatchingPhotoWorksData matchingPhotoWorksData =
+                    MatchingCompetitionDataManager.Instance._currentRankList.FirstOrDefault(a =>
+                        a.RoleId == judgingRoundRoleInfo.RoleId);
+                if (matchingPhotoWorksData == null)
+                {
+                    matchingPhotoWorksData = new CurRanMatchingPhotoWorksData
+                    {
+                        RoleId = judgingRoundRoleInfo.RoleId,
+                        JudgingInfo = judgingRoundRoleInfo
+                    };
+                    MatchingCompetitionDataManager.Instance._currentRankList.Add(matchingPhotoWorksData);
+                }
+                else
+                {
+                    int index = MatchingCompetitionDataManager.Instance._currentRankList
+                        .IndexOf(matchingPhotoWorksData);
+                    if (matchingPhotoWorksData.JudgingInfo != null)
+                    {
+                        string newTempFileName = StringUtil.GetUrlFileName(matchingPhotoWorksData.JudgingInfo.PictureTempUrl);
+                        string oldTempFileName = StringUtil.GetUrlFileName(judgingRoundRoleInfo.PictureTempUrl);
+                        matchingPhotoWorksData.IsUp = newTempFileName != oldTempFileName;
+                    }
+
+                    matchingPhotoWorksData.JudgingInfo = judgingRoundRoleInfo;
+                    matchingPhotoWorksData.RoleId = judgingRoundRoleInfo.RoleId;
+                    if (matchingPhotoWorksData.IsUp)
+                    {
+                        matchingPhotoWorksData.Ntexture = null;
+                    }
+                    
+                    MatchingCompetitionDataManager.Instance._currentRankList[index] = matchingPhotoWorksData;
+                }
+            }
+
+            //排序
+            MatchingCompetitionDataManager.Instance._currentRankList.Sort((a, b) =>
+            {
+                // 假设列表项具有一个名为 'score' 的属性,你想要按照分数进行排序
+                if (a.JudgingInfo.Score > b.JudgingInfo.Score)
+                {
+                    return -1; // a在b之前
+                }
+                else if (a.JudgingInfo.Score < b.JudgingInfo.Score)
+                {
+                    return 1; // b在a之前
+                }
+                else
+                {
+                    return 0; // a和b相同
+                }
+            });
+            
+            var enumerator = MatchingPhotoHelper.DownloadExt(MatchingCompetitionDataManager.Instance._currentRankList);
+            Timers.inst.StartCoroutine(enumerator);
+            
+            //推送事件
+            if (isPushEvent)
+            {
+                EventAgent.DispatchEvent(ConstMessage.REQ_CURRENT_RANK);
+            }
+
             return true;
         }
+        
+        public static void UseCoroutine()
+        {
+            if (!MatchingCompetitionDataManager.Instance.IsWork)
+            {
+                if (MatchingCompetitionDataManager.Instance._coroutineQueue.Count == 0)
+                {
+                    return;
+                }
+                
+                int vl = MatchingCompetitionDataManager.Instance._coroutineQueue.Dequeue();
+                if (vl == 1)
+                {
+                    //缓存里面存在数据,那也要再次请求服务器进行更新数据,只是用协程的形式,接着处理完数据后抛出事件
+                    ReqCurrentRank(true).Coroutine();
+                }
+            }
+        }
+        
         //获取往期作品集
         public static async ETTask<bool> ReqBeforeWorks()
         {
@@ -183,12 +291,13 @@ namespace GFGGame
         //获取往期作品排行榜
         public static async ETTask<bool> ReqBeforeRank(int id)
         {
-            var response = (S2C_GetOldJudgingRoundRankList)await MessageHelper.SendToServer(new C2S_GetOldJudgingRoundRankList { JudgingRoundOpenId = id});
+             var response = (S2C_GetOldJudgingRoundRankList)await MessageHelper.SendToServer(new C2S_GetOldJudgingRoundRankList { JudgingRoundOpenId = id});
             if (!(response is { Error: ErrorCode.ERR_Success })) return false;
             MatchingCompetitionDataManager.Instance._BeforeRankList.Clear();
             foreach (var item in response.JudgingRoundRoleInfoList)
             {
                 MatchingPhotoWorksData data = new MatchingPhotoWorksData();
+                data.RoleId = item.RoleId;
                 data.JudgingInfo = item;
                 MatchingCompetitionDataManager.Instance._BeforeRankList.Add(data);
             }

+ 29 - 0
GameClient/Assets/Game/HotUpdate/Utils/StringUtil.cs

@@ -66,6 +66,35 @@ namespace GFGGame
             return posValue;
 
         }
+
+        /// <summary>
+        /// 获取下载地址的文件名, 包含后缀
+        /// </summary>
+        /// <param name="url"></param>
+        /// <returns></returns>
+        public static string GetUrlFileName(string url)
+        {
+            try
+            {
+                // 创建一个 Uri 对象
+                Uri uri = new Uri(url);
+
+                // 获取 URL 的路径部分
+                string path = uri.AbsolutePath;
+
+                // 从路径中提取文件名
+                string fileName = System.IO.Path.GetFileName(path);
+
+                // // 获取不包含扩展名的文件名
+                // string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName);
+                return fileName;
+            }
+            catch
+            {
+                //增加容错
+                return url;
+            }
+        }
     }
 }
 

+ 5 - 3
GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs

@@ -332,11 +332,12 @@ namespace GFGGame
             if (_currentMenuType == ConstDressUpItemType.TAO_ZHUANG)
             {
                 partsListScrollingPosY = _ui.m_partsList.m_list.scrollPane.scrollingPosY;
-
+                MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.Clear();
                 OnBtnNormalClick(context);
             }
             else if (_currentMenuType == ConstDressUpItemType.DONG_ZUO)
             {
+                MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.Clear();
                 MyDressUpHelper.dressUpObj.PutOnOrTakeOffAction(id);
             }
             else
@@ -472,6 +473,7 @@ namespace GFGGame
         {
             MyDressUpHelper.dressUpObj.TakeOffAll();
             MyDressUpHelper.dressUpObj.AddOrRemove(ConstItemID.DEFULT_BG, false);
+            MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.Clear();
             UpdateBtnAction();
             _ui.m_partsList.m_list.numItems = _currentList3.Count;
             _ui.m_partsList2.m_list.numItems = _currentList4.Count;
@@ -517,7 +519,7 @@ namespace GFGGame
             }
             else
             {
-                _ui.m_comListType1.m_listType.numItems = DressUpMenuItemCfg1Array.Instance.dataArray.Length - 3;
+                _ui.m_comListType1.m_listType.numItems = DressUpMenuItemCfg1Array.Instance.dataArray.Length - 2;
             }
             GTween.To(_ui.target.width, listType1X, 0.5f)
                 .SetTarget(_ui.m_comListType1.target)
@@ -734,7 +736,7 @@ namespace GFGGame
             DressUpMenuItemCfg1 item1 = DressUpMenuItemCfg1Array.Instance.dataArray[index];
             if(this.viewData != null && (int)this.viewData == 2)
             {
-                if(index == DressUpMenuItemCfg1Array.Instance.dataArray.Length - 4)
+                if(index == DressUpMenuItemCfg1Array.Instance.dataArray.Length - 2)
                 {
                     item1 = DressUpMenuItemCfg1Array.Instance.dataArray[index+1];
                 }

+ 146 - 42
GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs

@@ -127,6 +127,7 @@ namespace GFGGame
             _equipSceneData = PhotographDataManager.Instance._equipSceneData;
 
             PhotographDataManager.Instance.itemGameObjs.Clear();
+            MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.Clear();
             _itemGameObjs = PhotographDataManager.Instance.itemGameObjs;
             if (_sceneObject == null)
             {
@@ -155,7 +156,12 @@ namespace GFGGame
             //Timers.inst.Add(0.5f, 1, UpdateSceneTransform);
             if(this.viewData != null && (int)this.viewData == 2)
             {
-                await UpdateSceneTransform();
+                if (MyDressUpHelper.dressUpObj.bgId != 0)
+                {
+                    MatchingCompetitionDataManager.Instance.DressUpBgID = MyDressUpHelper.dressUpObj.bgId;
+                    MatchingCompetitionDataManager.Instance.MathingDressDate.bgId = MatchingCompetitionDataManager.Instance.DressUpBgID;
+                }
+                //await UpdateSceneTransform();
             }  
         }
 
@@ -264,6 +270,7 @@ namespace GFGGame
             {
                 case EnumPhotographType.BG:
                     MatchingCompetitionDataManager.Instance.DressUpBgID = itemCfg.id;
+                    MatchingCompetitionDataManager.Instance.MathingDressDate.bgId = itemCfg.id;
                     PhotographSceneManager.Instance.AddBgItem(itemCfg);
                     break;
 
@@ -285,7 +292,14 @@ namespace GFGGame
                     break;
 
                 case EnumPhotographType.SCENE:
-                    AddSceneItem(itemCfg, true);
+                    if (this.viewData == null || (int)this.viewData != 2)
+                    {
+                        AddSceneItem(itemCfg, true);
+                    }
+                    else
+                    {
+                        MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, true);
+                    }
                     break;
                 case EnumPhotographType.EFFECT:
 
@@ -309,16 +323,37 @@ namespace GFGGame
             }
             else
             {
+                ICollection keys = _equipSceneData.Keys;
+                foreach (int key in keys)
+                {
+                    for (int i = 0; i < _equipSceneData[key].Count; i++)
+                    {
+                        bool isAdd = false;
+                        foreach (var item in MatchingCompetitionDataManager.Instance.DressPropTransInfoDic)
+                        {
+                            if (MatchingCompetitionDataManager.Instance.GetIDByString(item.Key).ToString() == _equipSceneData[key][0].ToString())
+                            {
+                                isAdd = true;
+                                break;
+                            }                            
+                        }
+                        if(!isAdd)
+                        {
+                            MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.Add(key.ToString(), new TransformData());
+                        }
+                    }
+                }
                 //对搭配赛特殊处理
-                for (int i = 0; i < MatchingCompetitionDataManager.Instance.DressPropIdList.Count; i++)
+                foreach(var item in MatchingCompetitionDataManager.Instance.DressPropTransInfoDic)
                 {
-                    if(MatchingCompetitionDataManager.Instance.DressPropIdList[i] == MatchingCompetitionDataManager.Instance.roleID)
+                    if(item.Key == MatchingCompetitionDataManager.Instance.roleID)
                     {
                         continue;
                     }
                     else
                     {
-                        ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingCompetitionDataManager.Instance.DressPropIdList[i]);
+                        List<int> idList = MatchingCompetitionDataManager.Instance.GetIDListByString(item.Key);
+                        ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(idList[0]);
                         if (itemCfg.itemType == ConstItemType.PHOTOGRAPH && itemCfg.subType == ConstItemSubType.PHOTOGRAPH_BOREDR)
                         {
                             PhotographSceneManager.Instance.AddBorderItem(itemCfg);
@@ -329,7 +364,15 @@ namespace GFGGame
                         }
                         else
                         {
-                            AddSceneItem(itemCfg, true);
+                            if(idList.Count > 1)
+                            {
+                                MatchingCompetitionDataManager.Instance.AddSceneItemOne(itemCfg, idList[1],idList[2]);
+                            }
+                            else
+                            {
+                                MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, false);
+                            }
+                           
                         }                
                     }
                 }
@@ -345,7 +388,7 @@ namespace GFGGame
             }
             else
             {
-                PhotographSceneManager.Instance.AddBgItem(ItemCfgArray.Instance.GetCfg(MatchingCompetitionDataManager.Instance.DressUpBgID));
+                PhotographSceneManager.Instance.AddBgItem(ItemCfgArray.Instance.GetCfg(MatchingCompetitionDataManager.Instance.DressUpBgID));  
             }
             await Task.Delay(100);
             if (MatchingCompetitionDataManager.Instance.BorderID != 0)
@@ -359,10 +402,14 @@ namespace GFGGame
                 MatchingCompetitionDataManager.Instance.itemGameObjs.Add(NpcGameObj);
             }
             MatchingCompetitionDataManager.Instance.InsertGameObjectList();
-            for (int i = 0; i < MatchingCompetitionDataManager.Instance.TransformDataList.Count; i++)
+            for (int i = 0; i < MatchingCompetitionDataManager.Instance.itemGameObjs.Count; i++)
             {
-                TransformData itemdata = MatchingCompetitionDataManager.Instance.TransformDataList[i];
                 GameObject itemGObj = MatchingCompetitionDataManager.Instance.itemGameObjs[i];
+                TransformData itemdata = new TransformData();
+                if (MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.ContainsKey(itemGObj.name))
+                {
+                    itemdata = MatchingCompetitionDataManager.Instance.DressPropTransInfoDic[itemGObj.name];
+                }
                 MatchingCompetitionDataManager.Instance.itemGameObjs[i].transform.position = itemdata.position;
                 MatchingCompetitionDataManager.Instance.itemGameObjs[i].transform.Rotate(itemGObj.transform.eulerAngles.x, itemGObj.transform.eulerAngles.y, itemdata.rotationZ);
                 MatchingCompetitionDataManager.Instance.itemGameObjs[i].transform.localScale = itemdata.scale;
@@ -643,6 +690,7 @@ namespace GFGGame
             }
             else
             {
+                MatchingCompetitionDataManager.Instance.DressPropTransInfoDic.Remove(memoryHitGameObj.name);
                 GameObject.DestroyImmediate(memoryHitGameObj);
             }
             _itemGameObjs.Remove(memoryHitGameObj);
@@ -756,50 +804,106 @@ namespace GFGGame
                 if(MatchingCompetitionDataManager.Instance.NpcID != 0)
                 {
                     GameObject NpcGameObj = PhotographSceneManager.Instance.sceneObject.transform.Find("Scene/Npc").gameObject;
-                    MatchingCompetitionDataManager.Instance.itemGameObjs.Add(NpcGameObj);
+                    //MatchingCompetitionDataManager.Instance.itemGameObjs.Add(NpcGameObj);
                 }
                 MatchingCompetitionDataManager.Instance.MathingDressDate = MyDressUpHelper.dressUpObj.DressUpDataClone();
                 MatchingCompetitionDataManager.Instance.SetTransformData();
 
-                AlertUI.Show("作品已保存,是否确认上传此作品?")
-                .SetLeftButton(true, "否").SetRightButton(true, "是", async (object data) =>
+                if(MatchingCompetitionDataManager.Instance.WorksID == 0)
                 {
-                    ViewManager.Show<ModalStatusView>("上传中...");
-                    //await MatchingCompetitionSproxy.ReqMatchingCompetitionInfo();
-                    object[] rsp = await MatchingCompetitionSproxy.UpLoadMatchingCompetitionDressData();
-                    if (rsp == null) return;
-                    byte[] bytes = tex.EncodeToJPG();
-                    if(rsp[0] == null)
-                    {
-                        ViewManager.Hide<ModalStatusView>();
-                        PromptController.Instance.ShowFloatTextPrompt("网络异常,上传失败!");
-                        return;
-                    }
-                    bool pushResult = await PictureStorageHelper.PushToHWCloud(rsp[0].ToString(), bytes);
-                    if (!pushResult)
+                    OnUpLoad(tex);
+                }
+                else
+                {
+                    AlertUI.Show("作品已保存,是否确认上传并替换作品?")
+                    .SetLeftButton(true, "否").SetRightButton(true, "是", async (object data) =>
                     {
-                        ViewManager.Hide<ModalStatusView>();
-                        PromptController.Instance.ShowFloatTextPrompt("网络异常,上传失败!");
-                        return;
-                    }
+                        ViewManager.Show<ModalStatusView>("上传中...");
+                        //await MatchingCompetitionSproxy.ReqMatchingCompetitionInfo();
+                        object[] rsp = await MatchingCompetitionSproxy.UpLoadMatchingCompetitionDressData();
+                        if (rsp == null) return;
+                        byte[] bytes = tex.EncodeToJPG();
+                        MatchingCompetitionDataManager.Instance.MyNtextture = new NTexture(tex);
+                        if (rsp[0] == null)
+                        {
+                            ViewManager.Hide<ModalStatusView>();
+                            PromptController.Instance.ShowFloatTextPrompt("网络异常,上传失败!");
+                            return;
+                        }
+                        bool pushResult = await PictureStorageHelper.PushToHWCloud(rsp[0].ToString(), bytes);
+                        if (!pushResult)
+                        {
+                            ViewManager.Hide<ModalStatusView>();
+                            PromptController.Instance.ShowFloatTextPrompt("网络异常,上传失败!");
+                            return;
+                        }
 
-                    bool result = await MatchingCompetitionSproxy.UploadSuccess();
-                    if (result)
-                    {
+                        bool result = await MatchingCompetitionSproxy.UploadSuccess();
+                        if (result)
+                        {
+                            ViewManager.Hide<ModalStatusView>();
+                            PromptController.Instance.ShowFloatTextPrompt("上传成功!");
+                            this.Hide();
+                            EventAgent.DispatchEvent(ConstMessage.CLOSE_PHOTOGRAPHVIEW);
+                            ViewManager.GoBackFrom(typeof(DressUpView).FullName);
+                        }
                         ViewManager.Hide<ModalStatusView>();
-                        PromptController.Instance.ShowFloatTextPrompt("上传成功!");
-                        OnClickBtnBack();
-                        ViewManager.GoBackFrom(typeof(DressUpView).FullName);
-                    }
-                    ViewManager.Hide<ModalStatusView>();
-                });
+                    });
+                }
+
             }
         }
-        private void OnClickBtnBack()
+        private async void OnUpLoad(Texture2D tex)
         {
-            this.Hide();
+            ViewManager.Show<ModalStatusView>("上传中...");
+            object[] rsp = await MatchingCompetitionSproxy.UpLoadMatchingCompetitionDressData();
+            if (rsp == null) return;
+            byte[] bytes = tex.EncodeToJPG();
+            MatchingCompetitionDataManager.Instance.MyNtextture = new NTexture(tex);
+            if (rsp[0] == null)
+            {
+                ViewManager.Hide<ModalStatusView>();
+                PromptController.Instance.ShowFloatTextPrompt("网络异常,上传失败!");
+                return;
+            }
+            bool pushResult = await PictureStorageHelper.PushToHWCloud(rsp[0].ToString(), bytes);
+            if (!pushResult)
+            {
+                ViewManager.Hide<ModalStatusView>();
+                PromptController.Instance.ShowFloatTextPrompt("网络异常,上传失败!");
+                return;
+            }
+
+            bool result = await MatchingCompetitionSproxy.UploadSuccess();
+            if (result)
+            {
+                ViewManager.Hide<ModalStatusView>();
+                PromptController.Instance.ShowFloatTextPrompt("上传成功!");
+                this.Hide();
+                EventAgent.DispatchEvent(ConstMessage.CLOSE_PHOTOGRAPHVIEW);
+                ViewManager.GoBackFrom(typeof(DressUpView).FullName);
+            }
+            ViewManager.Hide<ModalStatusView>();
+        }
+        private void OnClickBtnBack()
+        {           
             //ViewManager.Show<DressUpView>();
-            EventAgent.DispatchEvent(ConstMessage.CLOSE_PHOTOGRAPHVIEW);
+            if (_ui.m_c1.selectedIndex == 2)
+            {
+                AlertUI.Show("返回将清空搭配道具,是否确定返回?")
+                .SetLeftButton(true, "否").SetRightButton(true, "是", async (object data) =>
+                {
+                    this.Hide();
+                    EventAgent.DispatchEvent(ConstMessage.CLOSE_PHOTOGRAPHVIEW);
+                    ViewManager.GoBackFrom(typeof(PhotographView).FullName);
+                });
+             }
+            else
+            {
+                this.Hide();
+                EventAgent.DispatchEvent(ConstMessage.CLOSE_PHOTOGRAPHVIEW);
+            }
+            
         }
         protected override void OnHide()
         {
@@ -809,7 +913,7 @@ namespace GFGGame
                 PrefabManager.Instance.Restore(_sceneObject);
                 _sceneObject = null;
             }
-
+            MatchingCompetitionDataManager.Instance.DressPropIndex = 0;
             _equipSceneData.Clear();
             hitGameObj = null;
             memoryHitGameObj = null;

+ 17 - 6
GameClient/Assets/Game/HotUpdate/Views/InstanceZones/InstanceZonesView.cs

@@ -52,6 +52,7 @@ namespace GFGGame
             _ui.m_btnStudio.target.onClick.Add(OnClickBtnStudio);
             _ui.m_btnTravel.target.onClick.Add(OnClickBtnTravel);
             _ui.m_btnPoem.target.onClick.Add(OnClickBtnPoem);
+            _ui.m_btnPoemGudie.onClick.Add(OnClickBtnPoem);
             _ui.m_btnField.target.onClick.Add(OnTimeTracingClick);
             _ui.m_btnArena.target.onClick.Add(OnClickBtnArena);
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
@@ -97,8 +98,10 @@ namespace GFGGame
                 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PROPERTY) <= 0
                 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_FILING) <= 0
                 || GuideDataManager.IsGuideFinish(ConstGuideId.POEM) <= 0
-                || GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0)
-                //|| GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
+                || GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0
+                || (GuideDataManager.IsGuideFinish("DAPEISAI_1") <=0 && MatchingCompetitionDataManager.Instance.MatchingState == 1 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
+                || (GuideDataManager.IsGuideFinish("DAPEISAI_2") <= 0 && MatchingCompetitionDataManager.Instance.MatchingState == 2 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004)))
+            //|| GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
             {
                 UpdateToCheckGuide(null);
             }
@@ -118,7 +121,7 @@ namespace GFGGame
 
         private void CheckFunOpen()
         {
-            //_ui.m_btnPoem.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(MatchingCompetitionGatheringView).Name, false);
+            _ui.m_btnPoem.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(MatchingCompetitionGatheringView).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 = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TimeTracingShowView).Name, false);
@@ -157,13 +160,14 @@ namespace GFGGame
                     }
                     else
                     {
-                        PromptController.Instance.ShowFloatTextPrompt("暂无玩家数据!");
+                        await MatchingCompetitionSproxy.ReqMatchingCompetitionInfo();
+                        //PromptController.Instance.ShowFloatTextPrompt("暂无玩家数据!");
                     }
                 }
             }
             else
             {
-                PromptController.Instance.ShowFloatTextPrompt("搭配赛未开启!");
+                PromptController.Instance.ShowFloatTextPrompt("美人图未开启!");
             }
         }
 
@@ -201,7 +205,14 @@ namespace GFGGame
             GuideController.TryGuide(_ui.m_btnStudio.target, ConstGuideId.STUDIO_FILING, 3, "工作室有新的任务啦。");
             //GuideController.TryGuide(_ui.m_btnField.target, ConstGuideId.FIELD, 2, "外出进行历史考察,会有意想不到的收获哦。");
             GuideController.TryGuide(_ui.m_btnStudio.target, ConstGuideId.STUDIO_PROPERTY, 2, "");
-            //GuideController.TryGuide(_ui.m_btnPoem.target, ConstGuideId.POEM, 1, "在“拍照”中保存的图片都会保存到这里。");
+            if(MatchingCompetitionDataManager.Instance.MatchingState == 1 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
+            {
+                GuideController.TryGuide(_ui.m_btnPoemGudie, "DAPEISAI_1", 1, "进入搭配赛,进行搭配!");
+            }
+            else if(MatchingCompetitionDataManager.Instance.MatchingState == 2 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
+            {
+                GuideController.TryGuide(_ui.m_btnPoemGudie, "DAPEISAI_2", 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, "合成副本可获得奖励和服装哦~");

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

@@ -735,7 +735,7 @@ namespace GFGGame
                 {
                     _ui.m_btnGiftBag1.m_txtTime.text =
                         TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime);
-                    _ui.m_btnGiftBag1.target.visible = true;
+                    _ui.m_btnGiftBag1.target.visible = false;
                 }
             }
 
@@ -838,7 +838,7 @@ namespace GFGGame
             _ui.m_btnSevenReward.target.visible = !ActivityDataManager.Instance.AllSevenDayBonusGot();
             _ui.m_btnPearRebate.target.visible = ActivityDataManager.Instance.CheckPearRebateTips(6000);
 
-            _ui.m_btnGiftBag1.target.visible = ActivityDataManager.Instance.CheckPearRebateTips(6002);
+            _ui.m_btnGiftBag1.target.visible = false;//ActivityDataManager.Instance.CheckPearRebateTips(6002);
             var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(6002);
             long endTime = 0;
             if (activityInfo != null)
@@ -1518,9 +1518,13 @@ namespace GFGGame
             //直购648弹窗
             if (GameGlobal.AutoZGTHTips)
             {
+                if(TimeHelper.ServerNow() > 1724637600000)
+                {
+                    return;
+                }
                 GameGlobal.AutoZGTHTips = false;
                 long tips;
-                if(!ActivityDataManager.Instance.TipsStatusDic.TryGetValue(6002, out tips))
+                if (!ActivityDataManager.Instance.TipsStatusDic.TryGetValue(6002, out tips))
                 {
                     if (ActivityDataManager.Instance.CheckPearRebateTips(6002))
                     {
@@ -1538,6 +1542,10 @@ namespace GFGGame
             //直购特惠弹窗
             if (GameGlobal.AutoZGTHDCTips)
             {
+                if (TimeHelper.ServerNow() > 1724637600000)
+                {
+                    return;
+                }
                 GameGlobal.AutoZGTHDCTips = false;
                 long tips;
                 if (!ActivityDataManager.Instance.TipsStatusDic.TryGetValue(6001, out tips))

+ 19 - 7
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionDetailView.cs

@@ -55,7 +55,8 @@ namespace GFGGame
             //    MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject, false, false);
             //}
             AllIdList = this.viewData as List<int>;
-            _ui.m_dressList.visible = false;
+            _ui.m_dressList.visible = true;
+            _ui.m_nameList.visible = false;
             UpdateDress();
             UpdateView();
         }
@@ -82,7 +83,18 @@ namespace GFGGame
         }
         private void UpdateView()
         {
-            _ui.m_nameList.numItems = DressUpMenuItemCfg1Array.Instance.dataArray.Length - 1;
+            //_ui.m_nameList.numItems = DressUpMenuItemCfg1Array.Instance.dataArray.Length - 1;
+            AllIdList.Remove(10000);
+            AllIdList.Remove(20000);
+            AllIdList.Remove(30000);
+            AllIdList.Remove(50000);
+            AllIdList.Remove(60000);
+            AllIdList.Remove(-1);
+            AllIdList.Remove(0);
+            AllIdList.Remove(-2);
+            AllIdList.Remove(-3);
+            AllIdList.Remove(-4);
+            _ui.m_dressList.numItems = AllIdList.Count;
         }
         private void UpdateDress()
         {
@@ -175,14 +187,14 @@ namespace GFGGame
         private void ListItemType2Render(int index, GObject obj)
         {
             UI_MatchingDressItem item = UI_MatchingDressItem.Proxy(obj);
-            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(IdList[index]);
-            SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(IdList[index]);
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(AllIdList[index]);
+            SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(AllIdList[index]);
             if (itemCfg != null)
             {
                 item.m_icon.url = ResPathUtil.GetIconPath(itemCfg.res, "png");
                 item.m_txtTitle.text = itemCfg.name;
             }
-            else if (suitCfg != null)
+            if (suitCfg != null)
             {
                 item.m_icon.url = ResPathUtil.GetIconPath(suitCfg.res, "png");
                 item.m_txtTitle.text = suitCfg.name;
@@ -238,8 +250,8 @@ namespace GFGGame
 
         private void OnClickBtn(EventContext context)
         {
-            _ui.m_nameList.visible = true;
-            _ui.m_dressList.visible = false;
+            //_ui.m_nameList.visible = true;
+            //_ui.m_dressList.visible = false;
         }
 
         private void OnClickBtnBack()

+ 26 - 1
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionGatheringView.cs

@@ -69,6 +69,7 @@ namespace GFGGame
             _ui.m_suitName.text = suitCfg.name;
             UpdateView();
             Timers.inst.AddUpdate(UpdateTime);
+            Timers.inst.AddUpdate(CheckGuide);
         }
 
         protected override void OnHide()
@@ -81,12 +82,19 @@ namespace GFGGame
             _ui.m_suitShow.data = null;
             base.OnHide();
             Timers.inst.Remove(UpdateTime);
+            Timers.inst.Remove(CheckGuide);
         }
 
         private void UpdateView()
         {
+            if(MatchingCompetitionDataManager.Instance.WorksID == 0)
+            {
+                MatchingCompetitionDataManager.Instance.MyNtextture = null;
+            }
             if (MatchingCompetitionDataManager.Instance.MyNtextture == null)
             {
+                _ui.m_playerImage.texture = null;
+                _ui.m_desc.visible = true;
                 DressUpObjUI dressUpObjUI;
                 if (_ui.m_suitShow.data == null)
                 {
@@ -105,6 +113,7 @@ namespace GFGGame
                 {
                     dressUpObjUI.Dispose();
                 }
+                _ui.m_desc.visible = false;
                 _ui.m_suitShow.data = null;
                 _ui.m_playerImage.texture = MatchingCompetitionDataManager.Instance.MyNtextture;
             }
@@ -140,6 +149,22 @@ namespace GFGGame
         {
             ViewManager.Show<StoreView>(new object[] { ConstStoreTabId.STORE_EXCHANGE, 3 });
         }
-
+        private void CheckGuide(object param)
+        {
+            if (GuideDataManager.IsGuideFinish("DAPEISAI_1") <= 0 && MatchingCompetitionDataManager.Instance.MatchingState == 1)
+            {
+                UpdateToCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+        protected override void UpdateToCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(_ui.m_btnUploadWorks, "DAPEISAI_1", 2, "进行搭配!");
+            GuideController.TryCompleteGuide("DAPEISAI_1", 2);
+        }
     }
 }

+ 34 - 5
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRankView.cs

@@ -40,6 +40,7 @@ namespace GFGGame
         {
             base.OnShown();
             _ui.m_bg.url = ResPathUtil.GetBgImgPath("pxs_bj");
+            _ui.m_outBg.url = ResPathUtil.GetBgImgPath("pxs_pmdb");
             _ui.m_titleText.text = JudgingRoundOpenCfgArray.Instance.dataArray[MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason - 1].Name;
             UpdateView();
             UpdateHead();
@@ -53,17 +54,45 @@ namespace GFGGame
         {
             base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.DOWNLOAD_FINISH, UpdateView);
+            EventAgent.AddEventListener(ConstMessage.REQ_CURRENT_RANK, UpdateView);
+            EventAgent.AddEventListener(ConstMessage.DOWNLOAD_FINISH, ViewUseCoroutine);
         }
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
             EventAgent.RemoveEventListener(ConstMessage.DOWNLOAD_FINISH, UpdateView);
+            EventAgent.RemoveEventListener(ConstMessage.REQ_CURRENT_RANK, UpdateView);
+            EventAgent.RemoveEventListener(ConstMessage.DOWNLOAD_FINISH, ViewUseCoroutine);
         }
+
+        private void ViewUseCoroutine()
+        {
+            MatchingCompetitionSproxy.UseCoroutine();
+        }
+
         private void UpdateView()
         {
+            //排序
+            MatchingCompetitionDataManager.Instance._currentRankList.Sort((a, b) =>
+            {
+                // 假设列表项具有一个名为 'score' 的属性,你想要按照分数进行排序
+                if (a.JudgingInfo.Score > b.JudgingInfo.Score)
+                {
+                    return -1; // a在b之前
+                }
+                else if (a.JudgingInfo.Score < b.JudgingInfo.Score)
+                {
+                    return 1; // b在a之前
+                }
+                else
+                {
+                    return 0; // a和b相同
+                }
+            });
+            
             if(MatchingCompetitionDataManager.Instance._currentRankList.Count > 0)
             {
-                MatchingPhotoWorksData otherInfo = MatchingCompetitionDataManager.Instance._currentRankList[0];
+                CurRanMatchingPhotoWorksData otherInfo = MatchingCompetitionDataManager.Instance._currentRankList[0];
                 _ui.m_playerImage.texture = otherInfo.Ntexture;
             }
             else
@@ -83,7 +112,7 @@ namespace GFGGame
         private void RenderRankList(int index, GObject obj)
         {
             UI_Component3 item = UI_Component3.Proxy(obj);
-            MatchingPhotoWorksData otherdata = MatchingCompetitionDataManager.Instance._currentRankList[index];
+            CurRanMatchingPhotoWorksData otherdata = MatchingCompetitionDataManager.Instance._currentRankList[index];
             JudgingRoundRoleInfo otherInfo = otherdata.JudgingInfo;
             otherInfo.Rank = index + 1;
             RoleInfoManager.Instance.UpdateHead(item.m_head, otherInfo.HeadItemId, otherInfo.HeadBorderItemId);
@@ -97,12 +126,12 @@ namespace GFGGame
             item.target.data = index;
             UI_Component3.ProxyEnd();
         }
-        private void OnClickBtnItem(EventContext context)
+       private void OnClickBtnItem(EventContext context)
         {
             GObject item = context.sender as GObject;
             int index = (int)item.data; 
             _currentIndex = index;
-            MatchingPhotoWorksData otherInfo = MatchingCompetitionDataManager.Instance._currentRankList[index];
+            CurRanMatchingPhotoWorksData otherInfo = MatchingCompetitionDataManager.Instance._currentRankList[index];
             _ui.m_playerImage.texture = otherInfo.Ntexture;
         }
         private void OnClickBtnBack()
@@ -126,7 +155,7 @@ namespace GFGGame
             List<int> AllIdList = new List<int>();
             foreach (var info in MatchingCompetitionDataManager.Instance._currentRankList[_currentIndex].JudgingInfo.CollocationInfoList)
             {
-                AllIdList.Add(info.ItemId);
+                AllIdList.Add(MatchingCompetitionDataManager.Instance.GetIDByString(info.ItemId));
             }
             MatchingCompetitionDataManager.Instance.DetailNtexture = MatchingCompetitionDataManager.Instance._currentRankList[_currentIndex].Ntexture;
             ViewManager.Show<MatchingCompetitionDetailView>(AllIdList);

+ 229 - 0
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRewardView.cs

@@ -0,0 +1,229 @@
+using System.Collections;
+using UnityEngine;
+using UI.MatchingCompetition;
+using FairyGUI;
+using System.Collections.Generic;
+using System;
+
+namespace GFGGame
+{
+    public class MatchingCompetitionRewardView : BaseWindow
+    {
+        private UI_MatchingCompetitionRewardUI _ui;
+        private List<ItemData> _listItemDatas;
+
+        private Action onSuccess = null;
+
+        private List<EffectUI> _effects = new List<EffectUI>();
+
+        private const int maxHeight = 1030;
+
+        private EffectUI _effectUI1;
+        private EffectUI _effectUI2;
+        private int counTime = 0;  //定时器计数
+
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            _ui = UI_MatchingCompetitionRewardUI.Create();
+            this.viewCom = _ui.target;
+            //this.viewCom.Center();
+            //this.modal = true;
+            //viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+            isfullScreen = true;
+
+            _ui.m_comList.m_listReward.itemRenderer = RenderListRewardItem;
+            _ui.m_mask.onClick.Add(this.Hide);
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _ui.m_mask.touchable = false;
+            if ((this.viewData as object[]).Length > 0)
+            {
+                _listItemDatas = (this.viewData as object[])[0] as List<ItemData>;
+                onSuccess = (this.viewData as object[])[1] as Action;
+            }
+            else
+            {
+                _listItemDatas = this.viewData as List<ItemData>;
+            }
+
+            List<ItemData> suitPart = new List<ItemData>(); ;
+            for (int i = _listItemDatas.Count - 1; i >= 0; i--)
+            {
+                SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_listItemDatas[i].id);
+                if (suitCfg != null)
+                {
+                    for (int j = 0; j < suitCfg.partsArr.Length; j++)
+                    {
+                        suitPart.Add(ItemUtil.createItemData(suitCfg.partsArr[j], _listItemDatas[i].num));
+                    }
+                    _listItemDatas.RemoveAt(i);
+                }
+            }
+            _listItemDatas.AddRange(suitPart);
+            //_ui.m_listReward.SetVirtual();  //有虚拟列表的时候,没有办法居中显示列表
+
+            _ui.m_downTipsText.visible = false;
+            _ui.m_comList.m_listReward.numItems = 0;
+            counTime = 0;
+            Timers.inst.Add(0.1f, 3, OnTimerUpdate, 1);
+            Timers.inst.Add(0.5f, 1, OnTimerClick);
+        }
+
+        private void OnTimerClick(object param)
+        {
+            _ui.m_mask.touchable = true;
+        }
+
+        private void OnTimerUpdate(object param)
+        {
+            counTime += 1;
+            if (counTime == 1)
+            {
+                _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderTitle, "ui_hd", "GXHD_Text");
+                _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderBgCom, "ui_hd", "TC_Quad_ALL");
+            }
+            else if (counTime == 2)
+            {
+                _ui.m_comList.m_listReward.numItems = _listItemDatas.Count;
+
+                _ui.m_comList.m_listReward.ResizeToFit();
+                if (_ui.m_comList.m_listReward.height > maxHeight)
+                {
+                    _ui.m_comList.m_listReward.height = maxHeight;
+                }
+            }
+            else if (counTime == 3)
+            {
+                _ui.m_downTipsText.visible = true;
+                Timers.inst.Remove(OnTimerUpdate);
+            }
+        }
+
+        protected override void OnHide()
+        {
+            EffectUIPool.Recycle(_effectUI1);
+            _effectUI1 = null;
+            EffectUIPool.Recycle(_effectUI2);
+            _effectUI2 = null;
+
+            Timers.inst.Remove(OnTimerUpdate);
+            Timers.inst.Remove(OnTimerClick);
+            _ui.m_mask.touchable = true;
+            for (int i = 0; i < _effects.Count; i++)
+            {
+                if (_effects[i] != null)
+                {
+                    EffectUIPool.Recycle(_effects[i]);
+                    _effects[i] = null;
+                }
+            }
+            _effects.Clear();
+
+            if (onSuccess != null)
+            {
+                onSuccess();
+            }
+            base.OnHide();
+            //_effects.Clear();
+            //EventAgent.DispatchEvent(ConstMessage.REWARDVIEW_CLOTHER);
+            GetSuitItemController.TryShow(0);
+        }
+        private void RenderListRewardItem(int index, GObject obj)
+        {
+            // obj.data = _listItemDatas[index];
+            UI.CommonGame.UI_ComItem item = UI.CommonGame.UI_ComItem.Proxy(obj);
+            string name = "";
+            string iconRes = "";
+            string ext = "png";
+            int rarity = 0;
+            int id = 0;
+            bool isSuit = false;
+
+            SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_listItemDatas[index].id);
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_listItemDatas[index].id);
+
+            if (suitCfg != null)
+            {
+                name = suitCfg.name;
+                iconRes = suitCfg.res;
+                rarity = suitCfg.rarity;
+                id = suitCfg.id;
+                isSuit = true;
+            }
+            else
+            {
+                name = itemCfg.name;
+                ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType, true);
+                iconRes = itemCfg.res;
+                id = itemCfg.id;
+                isSuit = false;
+                //if (itemCfg.itemType == ConstItemType.DRESS_UP)
+                rarity = itemCfg.rarity;
+            }
+
+            item.m_txtName.text = name;
+            // item.m_txtCount.text = _listItemDatas[index].num==1?"": string.Format("{0}", _listItemDatas[index].num);
+            item.m_txtCount.text = string.Format("{0}", _listItemDatas[index].num);
+            item.m_loaIcon.url = ResPathUtil.GetIconPath(iconRes, ext);
+            if (rarity > 0)
+            {
+                item.m_QualityType.selectedIndex = rarity - 1;
+            }
+            else
+            {
+                item.m_QualityType.selectedIndex = 0;
+            }
+
+            RarityIconController.UpdateRarityIcon(item.m_loaRarity, id, false, isSuit);
+
+            item.m_imgOnceBonus.visible = _listItemDatas[index].isOnceBonus;
+            //特效("ui_ck", "ui_ck_zl");
+            int childIndex = _ui.m_comList.m_listReward.ItemIndexToChildIndex(index);
+            if (_effects.Count <= childIndex)
+            {
+                EffectUI _effectUI = EffectUIPool.CreateEffectUI(item.m_holderReware, "ui_hd", "GXHD_WuPin", 120);
+                _effects.Add(_effectUI);
+            }
+
+            if (item.target.data == null)
+            {
+                item.target.onClick.Add(OnClickListReward);
+            }
+            item.target.data = _listItemDatas[index];
+            UI.CommonGame.UI_ComItem.ProxyEnd();
+        }
+
+        private void OnClickListReward(EventContext context)
+        {
+            if (this.ShowTips)
+            {
+                ItemData data = (context.sender as GObject).data as ItemData;
+                GoodsItemTipsController.ShowItemTips(data.id);
+            }
+        }
+
+        private bool _showTips = true;
+        /// <summary>
+        /// 是否展示物品详情,默认展示
+        /// </summary>
+        private bool ShowTips
+        {
+            get { return _showTips; }
+            set { _showTips = value; }
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRewardView.cs.meta

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

+ 63 - 16
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionSelectView.cs

@@ -63,6 +63,7 @@ namespace GFGGame
             UpdatePlayer();
             //UpdateDressLeft();
             ViewManager.Hide<ModalStatusView>();
+            Timers.inst.AddUpdate(CheckGuide);
         }
 
         protected override void OnHide()
@@ -77,6 +78,8 @@ namespace GFGGame
                 PrefabManager.Instance.Restore(_sceneObjectRight);
                 _sceneObjectRight = null;
             }
+            MatchingCompetitionDataManager.Instance.DressPropIndex = 0;
+            Timers.inst.Remove(CheckGuide);
             base.OnHide();
         }
         protected override void AddEventListener()
@@ -95,9 +98,9 @@ namespace GFGGame
         }
         private void ShowReward()
         {
-            if(MatchingCompetitionDataManager.Instance.SpecialBonusList != null && MatchingCompetitionDataManager.Instance.SpecialBonusList.Count > 0)
+            if (MatchingCompetitionDataManager.Instance.SpecialBonusList != null && MatchingCompetitionDataManager.Instance.SpecialBonusList.Count > 0)
             {
-                BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(MatchingCompetitionDataManager.Instance.SpecialBonusList)); ;
+                ViewManager.Show<MatchingCompetitionRewardView>(new object[] { ItemUtil.CreateItemDataList(MatchingCompetitionDataManager.Instance.SpecialBonusList), null });
                 MatchingCompetitionDataManager.Instance.SpecialBonusList = null;
             }
         }
@@ -138,24 +141,37 @@ namespace GFGGame
             PhotographDataManager.Instance.dressUpObj.PutOnDressUpData(MatchingLeftDataManager.Instance.MathingDressDate);
 
             //对搭配赛特殊处理
-            for (int i = 0; i < MatchingLeftDataManager.Instance.DressPropIdList.Count; i++)
+            foreach (var item in MatchingLeftDataManager.Instance.DressPropTransInfoDic)
             {
-                if (MatchingLeftDataManager.Instance.DressPropIdList[i] <= 0)
+                if (item.Key == MatchingLeftDataManager.Instance.roleID)
                 {
                     continue;
                 }
                 else
                 {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingLeftDataManager.Instance.DressPropIdList[i]);
-                    MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, true,1);
+                    List<int> idList = MatchingCompetitionDataManager.Instance.GetIDListByString(item.Key);
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(idList[0]);
+                    if (idList.Count > 1)
+                    {
+                        MatchingCompetitionDataManager.Instance.AddSceneItemOne(itemCfg, idList[1], idList[2]);
+                    }
+                    else
+                    {
+                        MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, false);
+                    }
+                    //MatchingCompetitionDataManager.Instance.AddSceneItemOne(itemCfg, idList[1], idList[2]);
                 }
             }
             await Task.Delay(200);
             MatchingLeftDataManager.Instance.InsertGameObjectList();
-            for (int i = 0; i < MatchingLeftDataManager.Instance.TransformDataList.Count; i++)
+            for (int i = 0; i < MatchingLeftDataManager.Instance.itemGameObjs.Count; i++)
             {
-                TransformData itemdata = MatchingLeftDataManager.Instance.TransformDataList[i];
                 GameObject itemGObj = MatchingLeftDataManager.Instance.itemGameObjs[i];
+                TransformData itemdata = new TransformData();
+                if (MatchingLeftDataManager.Instance.DressPropTransInfoDic.ContainsKey(itemGObj.name))
+                {
+                    itemdata = MatchingLeftDataManager.Instance.DressPropTransInfoDic[itemGObj.name];
+                }
                 MatchingLeftDataManager.Instance.itemGameObjs[i].transform.position = itemdata.position;
                 if (MatchingLeftDataManager.Instance.itemGameObjs[i].name == "Role")
                 {
@@ -209,24 +225,37 @@ namespace GFGGame
             PhotographDataManager.Instance.dressUpObj.PutOnDressUpData(MatchingRightDataManager.Instance.MathingDressDate);
 
             //对搭配赛特殊处理
-            for (int i = 0; i < MatchingRightDataManager.Instance.DressPropIdList.Count; i++)
+            foreach (var item in MatchingRightDataManager.Instance.DressPropTransInfoDic)
             {
-                if (MatchingRightDataManager.Instance.DressPropIdList[i] <= 0)
+                if (item.Key == MatchingRightDataManager.Instance.roleID)
                 {
                     continue;
                 }
                 else
                 {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingRightDataManager.Instance.DressPropIdList[i]);
-                    MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, true,2);
+                    List<int> idList = MatchingCompetitionDataManager.Instance.GetIDListByString(item.Key);
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(idList[0]);
+                    if (idList.Count > 1)
+                    {
+                        MatchingCompetitionDataManager.Instance.AddSceneItemOne(itemCfg, idList[1], idList[2]);
+                    }
+                    else
+                    {
+                        MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, false);
+                    }
+                    //MatchingCompetitionDataManager.Instance.AddSceneItemOne(itemCfg, idList[1], idList[2]);
                 }
             }
             await Task.Delay(200);
             MatchingRightDataManager.Instance.InsertGameObjectList();
-            for (int i = 0; i < MatchingRightDataManager.Instance.TransformDataList.Count; i++)
+            for (int i = 0; i < MatchingRightDataManager.Instance.itemGameObjs.Count; i++)
             {
-                TransformData itemdata = MatchingRightDataManager.Instance.TransformDataList[i];
                 GameObject itemGObj = MatchingRightDataManager.Instance.itemGameObjs[i];
+                TransformData itemdata = new TransformData();
+                if (MatchingRightDataManager.Instance.DressPropTransInfoDic.ContainsKey(itemGObj.name))
+                {
+                    itemdata = MatchingRightDataManager.Instance.DressPropTransInfoDic[itemGObj.name];
+                }
                 MatchingRightDataManager.Instance.itemGameObjs[i].transform.position = itemdata.position;
                 if (MatchingRightDataManager.Instance.itemGameObjs[i].name == "Role")
                 {
@@ -314,7 +343,7 @@ namespace GFGGame
                         PrefabManager.Instance.Restore(_sceneObjectRight);
                         _sceneObjectRight = null;
                     }
-                    UpdateDressLeft();
+                    //UpdateDressLeft();
                     UpdateView();
                 }
             });
@@ -352,10 +381,28 @@ namespace GFGGame
                         PrefabManager.Instance.Restore(_sceneObjectRight);
                         _sceneObjectRight = null;
                     }
-                    UpdateDressLeft();
+                   // UpdateDressLeft();
                     UpdateView();
                 }
             });
         }
+
+        private void CheckGuide(object param)
+        {
+            if (GuideDataManager.IsGuideFinish("DAPEISAI_2") <= 0)
+            {
+                UpdateToCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+        protected override void UpdateToCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(_ui.m_select1.target, "DAPEISAI_2", 3, "选择你喜欢的搭配!");
+            GuideController.TryCompleteGuide("DAPEISAI_2", 3);
+        }
     }
 }

+ 64 - 24
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionUpLoadView.cs

@@ -60,6 +60,9 @@ namespace GFGGame
             UpdateHead();
             UpdateDress();
             Timers.inst.AddUpdate(UpdateTime);
+            Timers.inst.AddUpdate(CheckGuide);
+            //临时处理,后续下载做好了替换
+            //result = await MatchingCompetitionSproxy.ReqCurrentRank();
         }
 
         protected override void OnHide()
@@ -71,6 +74,8 @@ namespace GFGGame
             }
             Timers.inst.Remove(UpdateTime);
             Timers.inst.Remove(UpdateCountTime);
+            Timers.inst.Remove(CheckGuide);
+            MatchingCompetitionDataManager.Instance.DressPropIndex = 0;
             base.OnHide();     
         }
         protected override void AddEventListener()
@@ -111,43 +116,48 @@ namespace GFGGame
                 GameObject bodyParent = _sceneObject.transform.Find("Scene/Role").gameObject;
                 PhotographDataManager.Instance.dressUpObj.setSceneObj(_sceneObject, false, true, bodyParent, false, null);
                 PhotographDataManager.Instance.dressUpObj.PutOnDressUpData(MatchingOneDataManager.Instance.MathingDressDate);
-                
+
                 //对搭配赛特殊处理
-                for (int i = 0; i < MatchingOneDataManager.Instance.DressPropIdList.Count; i++)
+                foreach (var item in MatchingCompetitionDataManager.Instance.DressPropTransInfoDic)
                 {
-                    if (MatchingOneDataManager.Instance.DressPropIdList[i] <= 0 )
+                    if (item.Key == MatchingCompetitionDataManager.Instance.roleID)
                     {
                         continue;
                     }
                     else
                     {
-                        ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(MatchingOneDataManager.Instance.DressPropIdList[i]);
-                        MatchingCompetitionDataManager.Instance.AddSceneItem(itemCfg, true);
+                        List<int> idList = MatchingCompetitionDataManager.Instance.GetIDListByString(item.Key);
+                        ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(idList[0]);
+                        MatchingCompetitionDataManager.Instance.AddSceneItemOne(itemCfg, idList[1], idList[2]);
                     }
                 }
                 await Task.Delay(200);
                 MatchingOneDataManager.Instance.InsertGameObjectList();
-                for (int i = 0; i < MatchingOneDataManager.Instance.TransformDataList.Count; i++)
+                for (int i = 0; i < MatchingOneDataManager.Instance.itemGameObjs.Count; i++)
                 {
-                    TransformData itemdata = MatchingOneDataManager.Instance.TransformDataList[i];
                     GameObject itemGObj = MatchingOneDataManager.Instance.itemGameObjs[i];
-                    MatchingOneDataManager.Instance.itemGameObjs[i].transform.position = itemdata.position;
-                    if (MatchingOneDataManager.Instance.itemGameObjs[i].name == "Role")
+                    TransformData itemdata = new TransformData();
+                    if (MatchingOneDataManager.Instance.DressPropTransInfoDic.ContainsKey(itemGObj.name))
                     {
-                        if(itemdata.position.y >= -5 || itemdata.position.y <= 5)
-                        {
-                            MatchingOneDataManager.Instance.itemGameObjs[i].transform.position = new Vector3(itemdata.position.x,0,0);
-                        }
-                        if(itemdata.position.x >= -5 || itemdata.position.x <= 5)
-                        {
-                            MatchingOneDataManager.Instance.itemGameObjs[i].transform.position = new Vector3(0, MatchingOneDataManager.Instance.itemGameObjs[i].transform.position.y, 0);
-                        }
+                        itemdata = MatchingOneDataManager.Instance.DressPropTransInfoDic[itemGObj.name];
                     }
+                    MatchingOneDataManager.Instance.itemGameObjs[i].transform.position = itemdata.position;
+                    //if (MatchingOneDataManager.Instance.itemGameObjs[i].name == "Role")
+                    //{
+                    //    if(itemdata.position.y >= -5 || itemdata.position.y <= 5)
+                    //    {
+                    //        MatchingOneDataManager.Instance.itemGameObjs[i].transform.position = new Vector3(itemdata.position.x,0,0);
+                    //    }
+                    //    if(itemdata.position.x >= -5 || itemdata.position.x <= 5)
+                    //    {
+                    //        MatchingOneDataManager.Instance.itemGameObjs[i].transform.position = new Vector3(0, MatchingOneDataManager.Instance.itemGameObjs[i].transform.position.y, 0);
+                    //    }
+                    //}
                     MatchingOneDataManager.Instance.itemGameObjs[i].transform.Rotate(itemGObj.transform.eulerAngles.x, itemGObj.transform.eulerAngles.y, itemdata.rotationZ);
                     MatchingOneDataManager.Instance.itemGameObjs[i].transform.localScale = itemdata.scale;
                     PhotographUtil.Instance.ChangeLayer(MatchingOneDataManager.Instance.itemGameObjs[i], (i+1) * PhotographDataManager.layerCount, "up");
                 }
-                PhotographUtil.Instance.ChangeLayer(MatchingOneDataManager.Instance.roleGameobj, 2 * PhotographDataManager.layerCount, "up");
+                //PhotographUtil.Instance.ChangeLayer(MatchingOneDataManager.Instance.roleGameobj, 2 * PhotographDataManager.layerCount, "up");
             }
             else
             {
@@ -254,16 +264,29 @@ namespace GFGGame
         }
         private async void OnClickBtnRank()
         {
-            bool result = await MatchingCompetitionSproxy.ReqCurrentRank();
-            if(result)
+            if (MatchingCompetitionDataManager.Instance._currentRankList.Count == 0)
             {
-                ViewManager.Show<MatchingCompetitionRankView>();
-            }   
+                //缓存里面不存在数据的话就进行同步加载数据
+                bool result = await MatchingCompetitionSproxy.ReqCurrentRank();
+                if (result)
+                {
+                    ViewManager.Show<MatchingCompetitionRankView>();
+                }
+                else
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("暂无玩家上榜!");
+                }
+            }
             else
             {
-                PromptController.Instance.ShowFloatTextPrompt("暂无玩家上榜!");
+                MatchingCompetitionDataManager.Instance._coroutineQueue.Enqueue(1);
+                MatchingCompetitionSproxy.UseCoroutine();
+                
+                //那就直接显示界面
+                ViewManager.Show<MatchingCompetitionRankView>();
             }
         }
+        
         private async void OnClickBtnExchange()
         {
             if (isCountTime)
@@ -296,10 +319,27 @@ namespace GFGGame
             List<int> AllIdList = new List<int>();
             foreach (var info in MatchingOneDataManager.Instance.OneRoleInfo.JudgingInfo.CollocationInfoList)
             {
-                AllIdList.Add(info.ItemId);
+                AllIdList.Add(MatchingCompetitionDataManager.Instance.GetIDByString(info.ItemId));
             }
             MatchingCompetitionDataManager.Instance.DetailNtexture = MatchingOneDataManager.Instance.OneRoleInfo.Ntexture;
             ViewManager.Show<MatchingCompetitionDetailView>(AllIdList);
         }
+
+        private void CheckGuide(object param)
+        {
+            if (GuideDataManager.IsGuideFinish("DAPEISAI_2") <= 0 && MatchingCompetitionDataManager.Instance.MatchingState == 2)
+            {
+                UpdateToCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+        protected override void UpdateToCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(_ui.m_btnUploadWorks, "DAPEISAI_2", 2, "进行评选!");
+        }
     }
 }

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionWorkListView.cs

@@ -61,7 +61,7 @@ namespace GFGGame
         {
             _ui.m_workList.numItems = MatchingCompetitionDataManager.Instance._BeforeRankList.Count;
         }
-        private void RenderRankList(int index, GObject obj)
+         private void RenderRankList(int index, GObject obj)
         {
             UI_Component6 item = UI_Component6.Proxy(obj);
             if((index +1) >=1 && (index + 1)<=3)
@@ -79,6 +79,7 @@ namespace GFGGame
             item.m_nameText.text = otherInfo.RoleName.ToString();
             item.m_countText.text = otherInfo.Score.ToString();
             item.m_playerImage.texture = otherdata.Ntexture;
+            item.m_descText.text = (index+1).ToString();
             if (item.target.data == null)
             {
                 item.target.onClick.Add(OnClickBtnItem);
@@ -94,7 +95,7 @@ namespace GFGGame
             List<int> AllIdList = new List<int>();
             foreach(var info in otherInfo.JudgingInfo.CollocationInfoList)
             {
-                AllIdList.Add(info.ItemId);
+                AllIdList.Add(MatchingCompetitionDataManager.Instance.GetIDByString(info.ItemId));
             }
             MatchingCompetitionDataManager.Instance.DetailNtexture = otherInfo.Ntexture;
             ViewManager.Show<MatchingCompetitionDetailView>(AllIdList);

+ 8 - 0
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionWorksView.cs

@@ -57,6 +57,14 @@ namespace GFGGame
         }
         private void UpdateView()
         {
+            if(MatchingCompetitionDataManager.Instance._BeforeWorksList.Count == 0)
+            {
+                _ui.m_descText.visible = true;
+            }
+            else
+            {
+                _ui.m_descText.visible = false;
+            }
             _ui.m_worksList.numItems = MatchingCompetitionDataManager.Instance._BeforeWorksList.Count;
         }
         private void RenderRankList(int index, GObject obj)

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Views/Poem/PoemPhotoPreView.cs

@@ -65,6 +65,10 @@ namespace GFGGame
             _photoInfos = new List<PoemPhotoData>(photoInfos.ToArray());
 
             _sourceType = (int)(this.viewData as object[])[2];
+            if (_sourceType == 2)
+            {
+                _sourceType = 0;
+            }
             _ui.m_c1.selectedIndex = _sourceType;
             if (_sourceType == (int)PictureSourceType.PersonalAlbum)
             {

+ 12 - 2
GameClient/Assets/Game/HotUpdate/Views/Poem/PoemPhotoView.cs

@@ -164,8 +164,9 @@ namespace GFGGame
         {
             if (_ui.m_c1.selectedIndex == 0)
             {
+                _ui.m_btnDelete.visible = true;
                 _ui.m_listTravel.numItems = 0;
-
+                _ui.m_descText.visible = false;
                 _photoInfos = PoemPhotoDataManager.Instance.PersonalPhotoInfos;
                 _sourceType = (int)PictureSourceType.PersonalAlbum;
                 _ui.m_list.numItems = _photoInfos.Count;
@@ -173,8 +174,9 @@ namespace GFGGame
             }
             else if(_ui.m_c1.selectedIndex == 1)
             {
+                _ui.m_btnDelete.visible = true;
                 _ui.m_list.numItems = 0;
-
+                _ui.m_descText.visible = false;
                 _photoInfos = PoemPhotoDataManager.Instance.WsqsPhotoInfos;
                 _sourceType = (int)PictureSourceType.WanShuiQianShan;
                 _ui.m_listTravel.numItems = _photoInfos.Count;
@@ -188,6 +190,14 @@ namespace GFGGame
                 _photoInfos = MatchingCompetitionDataManager.Instance.MatchingPhotoInfos;
                 _sourceType = 2;
                 _ui.m_listCompetion.numItems = _photoInfos.Count;
+                if (_photoInfos.Count == 0)
+                {
+                    _ui.m_descText.visible = true;
+                }
+                else
+                {
+                    _ui.m_descText.visible = false;
+                }
                 _ui.m_txtCount.text = "";
 
                 _ui.m_btnDelete.visible = false;

+ 18 - 1
GameClient/Assets/Game/HotUpdate/Views/Store/StoreView.cs

@@ -145,7 +145,17 @@ namespace GFGGame
                         {
                             if (!ShopDataManager.Instance.GetShopActivityIsShow(tabCfg.index,menu2)) continue;
                         }
-                        _storeTabCfgs.Add(tabCfg.subTabArr[i]);
+                        if(tabCfg.subTabArr[i][2] != "StoreZGDCView")
+                        {
+                            _storeTabCfgs.Add(tabCfg.subTabArr[i]);
+                        }
+                        else
+                        {
+                            if (TimeHelper.ServerNow() <= 1724637600000)
+                            {
+                                _storeTabCfgs.Add(tabCfg.subTabArr[i]);
+                            }
+                        }
                     }
                 }
                 else if (tabCfg.index == ConstStoreTabId.STORE_EXCHANGE)
@@ -213,6 +223,13 @@ namespace GFGGame
                         item.visible = true;
                     }
                 }
+                else if (_storeTabCfgs[index][2] == "StoreZGDCView")
+                {
+                    if (TimeHelper.ServerNow() > 1724637600000)
+                    {
+                        item.visible = false;
+                    }
+                }
                 else
                 {
                     item.visible = true;

BIN
GameClient/Assets/ResIn/UI/InstanceZones/InstanceZones_fui.bytes


BIN
GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0.png


BIN
GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_fui.bytes


BIN
GameClient/Assets/ResIn/UI/Poem/Poem_fui.bytes