瀏覽代碼

Merge remote-tracking branch 'remotes/org/master' into xiaojie

hexiaojie 11 月之前
父節點
當前提交
c6c5d2efb9
共有 31 個文件被更改,包括 930 次插入283 次删除
  1. 8 8
      GameClient/Assets/Game/HotUpdate/Constant/ConstCardRarity.cs
  2. 407 102
      GameClient/Assets/Game/HotUpdate/Data/MatchingCompetitionDataManager.cs
  3. 37 14
      GameClient/Assets/Game/HotUpdate/Data/MatchingPhotoHelper.cs
  4. 54 42
      GameClient/Assets/Game/HotUpdate/Data/MatchingTwoDataManager.cs
  5. 18 1
      GameClient/Assets/Game/HotUpdate/Data/PhotographSceneManager.cs
  6. 2 2
      GameClient/Assets/Game/HotUpdate/Data/VO/MatchingCompetitionData.cs
  7. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceZonesUI.cs
  8. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_Component6.cs
  9. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionGatheringUI.cs
  10. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/MatchingCompetition/UI_MatchingCompetitionWorksUI.cs
  11. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/poem/UI_PoemPhotoUI.cs
  12. 1 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/CommonSProxy.cs
  13. 7 6
      GameClient/Assets/Game/HotUpdate/ServerProxy/MatchingCompetitionSproxy.cs
  14. 5 3
      GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs
  15. 146 43
      GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs
  16. 16 5
      GameClient/Assets/Game/HotUpdate/Views/InstanceZones/InstanceZonesView.cs
  17. 11 3
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  18. 19 7
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionDetailView.cs
  19. 25 1
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionGatheringView.cs
  20. 1 1
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRankView.cs
  21. 1 1
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionRewardView.cs
  22. 62 15
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionSelectView.cs
  23. 51 25
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionUpLoadView.cs
  24. 2 1
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionWorkListView.cs
  25. 8 0
      GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionWorksView.cs
  26. 4 0
      GameClient/Assets/Game/HotUpdate/Views/Poem/PoemPhotoPreView.cs
  27. 12 2
      GameClient/Assets/Game/HotUpdate/Views/Poem/PoemPhotoView.cs
  28. 18 1
      GameClient/Assets/Game/HotUpdate/Views/Store/StoreView.cs
  29. 二進制
      GameClient/Assets/ResIn/UI/InstanceZones/InstanceZones_fui.bytes
  30. 二進制
      GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_fui.bytes
  31. 二進制
      GameClient/Assets/ResIn/UI/Poem/Poem_fui.bytes

+ 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;
         }
     }
 }

+ 407 - 102
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>();
@@ -116,28 +122,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 +165,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,80 +253,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()
         //{
@@ -324,12 +435,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)
             {
@@ -411,7 +526,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)
                 {
@@ -424,7 +540,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)
                 {
@@ -438,8 +555,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)
@@ -453,10 +570,183 @@ 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>();
         }
+
+        //**********下面接口只针对于搭配赛排行榜*************
+        //不建议频繁修改用户设备上的文件。
+        //需要在移动平台上管理文件,最好是在应用的沙盒目录内操作
+        public string LocalRankPath = Application.persistentDataPath + "/ImageDPSRank";
+        public string LocalBeforePath = Application.persistentDataPath + "/ImageDPSBe";
+        public string LoaclMy = Application.persistentDataPath + "/ImageMy";
+        //将获取的图片下载到本地,通过排行榜判断,如果该图片不存在于最新的排行榜内就删除
+        public void DownloadImageListToLocal(List<Byte[]> imageBytesList, List<long> ImageName,string targerPath)
+        {
+            // 检查目录是否存在
+            if (!Directory.Exists(targerPath))
+            {
+                // 目录不存在,创建目录
+                Directory.CreateDirectory(targerPath);
+            }
+            else
+            {
+                // 目录已存在
+            }
+            for (int i = 0; i < imageBytesList.Count; i++)
+            {
+                //判断手机内是否存在该图片
+                string path = Path.Combine(targerPath, string.Format("/{0}.jpg", ImageName[i].ToString()));
+                bool fileExists = File.Exists(path);
+                if (!fileExists)
+                {
+                    string outputImagePath = targerPath + string.Format("/{0}.jpg", ImageName[i].ToString());
+                    // 保存到磁盘
+                    File.WriteAllBytes(outputImagePath, imageBytesList[i]);
+                }
+            }
+        }
+        //将获取的图片下载到本地
+        public void DownloadImageToLocal(Byte[] imageBytesList, long ImageName, string targerPath)
+        {
+            // 检查目录是否存在
+            if (!Directory.Exists(targerPath))
+            {
+                // 目录不存在,创建目录
+                Directory.CreateDirectory(targerPath);
+            }
+            else
+            {
+                // 目录已存在
+            }
+            //判断手机内是否存在该图片
+            string path = Path.Combine(targerPath, string.Format("/{0}.jpg", ImageName.ToString()));
+            bool fileExists = File.Exists(path);
+            if (!fileExists)
+            {
+                string outputImagePath = targerPath + string.Format("/{0}.jpg", ImageName.ToString());
+                // 保存到磁盘
+                File.WriteAllBytes(outputImagePath, imageBytesList);
+            }
+        }
+        //获取指定目录下所有图片文件
+        public List<string> GetImageFileNames(string directoryPath)
+        {
+            // 检查目录是否存在
+            if (!Directory.Exists(directoryPath))
+            {
+                // 目录不存在,创建目录
+                Directory.CreateDirectory(directoryPath);
+            }
+            else
+            {
+                // 目录已存在
+            }
+            List<string> imageFileNames = new List<string>();
+            string[] imageExtensions = { ".png", ".jpg", ".jpeg", ".gif", ".bmp" }; // 支持的图片格式
+            // 获取目录中所有文件
+            string[] files = Directory.GetFiles(directoryPath);
+            // 遍历文件,检查扩展名是否为图片格式
+            foreach (string file in files)
+            {
+                foreach (string extension in imageExtensions)
+                {
+                    if (Path.GetExtension(file).Equals(extension, StringComparison.OrdinalIgnoreCase))
+                    {
+                        imageFileNames.Add(Path.GetFileName(file));
+                        break; // 找到匹配的扩展名,跳出循环
+                    }
+                }
+            }
+            return imageFileNames;
+        }
+        //获取指定图片
+        public NTexture GetTargetImage(string ImageName,string Path)
+        {
+            string AllPath = Path +"/"+ ImageName;
+            byte[] fileData = File.ReadAllBytes(AllPath);
+            Texture2D texture = new Texture2D(1, 1);
+            texture.LoadImage(fileData);
+            return new NTexture(texture);
+        }
+        //删除指定图片
+        public void DeleteImage(string imagePath)
+        {
+            // 检查文件是否存在
+            if (File.Exists(imagePath))
+            {
+                try
+                {
+                    // 删除文件
+                    File.Delete(imagePath);
+                    //Debug.Log("图片已删除: " + imagePath);
+                }
+                catch (Exception e)
+                {
+                    // 如果出现异常,打印错误信息
+                    Debug.LogError("删除图片时出错: " + e.Message);
+                }
+            }
+            else
+            {
+                // 文件不存在
+                Debug.LogWarning("图片不存在,无法删除: " + imagePath);
+            }
+        }
+        //判断本地图片是否在新获取到的排行榜内
+        public bool ImageIdIsInRank(string ImageName)
+        {
+            foreach (var item in _currentRankList)
+            {
+                string rankImageName = item.JudgingInfo.WorksId.ToString() + ".jpg";
+                if (rankImageName == ImageName)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        //判断排行榜id是否存在本地图片
+        public bool RankIdisInLocal(string ImageName, List<string> LoaclList)
+        {
+            foreach (var item in LoaclList)
+            {
+                if (item == ImageName)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        //通过作品id从本地获取下载的图片如果没有则下载到本地保存,如果有直接加载
+        //这个接口只对搭配赛有用,因为只修改了搭配赛的数据
+        public NTexture GetNtextrueByLocal(string ImageName)
+        {
+            NTexture LocalNtextture = null;
+
+            return LocalNtextture;
+        }
+        //****************************************************
     }
 
     class MatchingOneDataManager : SingletonBase<MatchingOneDataManager>
@@ -466,7 +756,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();
@@ -478,9 +768,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>();
         //***************************************************************
         //解析后台获取的信息
@@ -489,27 +783,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)
@@ -518,29 +817,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;
                 }

+ 37 - 14
GameClient/Assets/Game/HotUpdate/Data/MatchingPhotoHelper.cs

@@ -37,14 +37,35 @@ namespace GFGGame
         }
 
 
-        public static IEnumerator Download(List<MatchingPhotoWorksData> list)
+        public static IEnumerator Download(List<MatchingPhotoWorksData> list,string targetPath)
         {
             for (int i = 0; i < list.Count; i++)
             {
-                MatchingPhotoWorksData data = list[i];
-                if (data == null || data.Ntexture != null) continue;
-                int count = 0;
-                yield return DownloadPicture(data, count);
+                List<string> imageList = MatchingCompetitionDataManager.Instance.GetImageFileNames(targetPath);
+                string ImageName = list[i].JudgingInfo.WorksId.ToString() + ".jpg";
+                //排行榜内图片是否存在本地,否就下载,是就赋值
+                if (!MatchingCompetitionDataManager.Instance.RankIdisInLocal(ImageName, imageList))
+                {
+                    MatchingPhotoWorksData data = list[i];
+                    if (data == null || data.Ntexture != null) continue;
+                    int count = 0;
+                    yield return DownloadPicture(data, count, targetPath);
+                }
+                else
+                {
+                    list[i].Bytes = File.ReadAllBytes((targetPath+ "/" + ImageName));
+                    list[i].Ntexture = MatchingCompetitionDataManager.Instance.GetTargetImage(ImageName,targetPath);
+                    yield return null;
+                }
+                //本地图片是否存在排行榜,否就删除
+                foreach (string item in imageList)
+                {
+                    string getImagePath = targetPath +"/"+ list[i].JudgingInfo.WorksId.ToString()+".jpg";
+                    if (!MatchingCompetitionDataManager.Instance.ImageIdIsInRank(item))
+                    {
+                        MatchingCompetitionDataManager.Instance.DeleteImage(getImagePath);
+                    }
+                }
             }
             ET.Log.Debug("Download  finish!!!");
             EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
@@ -61,15 +82,15 @@ namespace GFGGame
             ET.Log.Debug("Download  finish!!!");
             EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
         }
-        public static IEnumerator Download(MatchingPhotoWorksData list)
+        public static IEnumerator Download(MatchingPhotoWorksData list, string targetPath)
         {
                 MatchingPhotoWorksData data = list;
-                yield return DownloadPicture(data, 1);
+                yield return DownloadPicture(data, 1,targetPath);
             ET.Log.Debug("Download  finish!!!");
             EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
         }
 
-        private static IEnumerator DownloadPicture(MatchingPhotoWorksData data, int count)
+        private static IEnumerator DownloadPicture(MatchingPhotoWorksData data, int count,string targetPath)
         {
             if (count >= 3)
             {
@@ -86,13 +107,14 @@ namespace GFGGame
                 {
                     ET.Log.Error("Download  failed, error code:" + request.result, ",data:" + JsonUtility.ToJson(data));
                     count += 1;
-                    yield return DownloadPicture(data, count);
+                    yield return DownloadPicture(data, count, targetPath);
                 }
                 else
                 {
                     Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
                     data.Ntexture = new NTexture(texture);
                     data.Bytes = texture.EncodeToJPG();
+                    MatchingCompetitionDataManager.Instance.DownloadImageToLocal(data.Bytes,data.JudgingInfo.WorksId,targetPath);
                 }
             }
         }
@@ -120,18 +142,18 @@ namespace GFGGame
                         Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
                         data.Ntexture = new NTexture(texture);
                         data.Bytes = texture.EncodeToJPG();
-                    }
+                }
                 }
             }
 
-        public static IEnumerator DownloadMyself(string nTextture)
+        public static IEnumerator DownloadMyself(string nTextture,string targetPath)
         {
-            yield return DownloadMyPicture(nTextture, 1);
+            yield return DownloadMyPicture(nTextture, 1,targetPath);
             ET.Log.Debug("Download  finish!!!");
             EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
         }
 
-        private static IEnumerator DownloadMyPicture(string nTextture, int count)
+        private static IEnumerator DownloadMyPicture(string nTextture, int count,string targetPath)
         {
             if (count >= 3)
             {
@@ -145,13 +167,14 @@ namespace GFGGame
                 if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)
                 {
                     count += 1;
-                    yield return DownloadMyPicture(nTextture, count);
+                    yield return DownloadMyPicture(nTextture, count,targetPath);
                 }
                 else
                 {
                     Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
                     MatchingCompetitionDataManager.Instance.MyNtextture = new NTexture(texture);
                     MatchingCompetitionDataManager.Instance.MyBytes = texture.EncodeToJPG();
+                    //MatchingCompetitionDataManager.Instance.DownloadImageToLocal(MatchingCompetitionDataManager.Instance.MyBytes, MatchingCompetitionDataManager.Instance.WorksID,targetPath);
                 }
             }
         }

+ 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)
             {

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

@@ -37,9 +37,9 @@ 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 MatchingPhotoWorksData

+ 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();

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

@@ -12,6 +12,7 @@ namespace UI.MatchingCompetition
         public GComponent m_head;
         public GTextField m_nameText;
         public GTextField m_countText;
+        public GTextField m_descText;
         public const string URL = "ui://ri3cveycp3ft1q";
         public const string PACKAGE_NAME = "MatchingCompetition";
         public const string RES_NAME = "Component6";
@@ -64,6 +65,7 @@ namespace UI.MatchingCompetition
             m_head = (GComponent)comp.GetChild("head");
             m_nameText = (GTextField)comp.GetChild("nameText");
             m_countText = (GTextField)comp.GetChild("countText");
+            m_descText = (GTextField)comp.GetChild("descText");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -72,6 +74,7 @@ namespace UI.MatchingCompetition
             m_head = null;
             m_nameText = null;
             m_countText = null;
+            m_descText = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 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;

+ 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);

+ 7 - 6
GameClient/Assets/Game/HotUpdate/ServerProxy/MatchingCompetitionSproxy.cs

@@ -35,6 +35,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
@@ -44,7 +45,7 @@ namespace GFGGame
             }
             if(response.MyWorks != null && response.MyWorks.PictureTempUrl != "")
             {
-                Timers.inst.StartCoroutine(MatchingPhotoHelper.DownloadMyself(response.MyWorks.PictureTempUrl));
+                Timers.inst.StartCoroutine(MatchingPhotoHelper.DownloadMyself(response.MyWorks.PictureTempUrl,MatchingCompetitionDataManager.Instance.LoaclMy));
             }
             MatchingCompetitionDataManager.Instance.AnalysisInfoToList();
             return true;
@@ -66,7 +67,7 @@ namespace GFGGame
             {
                 return false;
             }
-            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingOneDataManager.Instance.OneRoleInfo));
+            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingOneDataManager.Instance.OneRoleInfo,MatchingCompetitionDataManager.Instance.LoaclMy));
             MatchingOneDataManager.Instance.AnalysisInfoToList();
             return true;
         }
@@ -110,14 +111,14 @@ namespace GFGGame
             MatchingLeftDataManager.Instance.LeftRoleInfo.JudgingInfo = response.JudgingRoundRoleInfoList[0];
             if(response.JudgingRoundRoleInfoList[0] != null)
             {
-                Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingLeftDataManager.Instance.LeftRoleInfo));
+                Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingLeftDataManager.Instance.LeftRoleInfo,MatchingCompetitionDataManager.Instance.LoaclMy));
             }
             MatchingLeftDataManager.Instance.AnalysisInfoToList();
 
             MatchingRightDataManager.Instance.RightRoleInfo.JudgingInfo = response.JudgingRoundRoleInfoList[1];
             if (response.JudgingRoundRoleInfoList[1] != null)
             {
-                Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingRightDataManager.Instance.RightRoleInfo));
+                Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingRightDataManager.Instance.RightRoleInfo,MatchingCompetitionDataManager.Instance.LoaclMy));
             }
             MatchingRightDataManager.Instance.AnalysisInfoToList();
             return true;
@@ -162,7 +163,7 @@ namespace GFGGame
                 data.JudgingInfo = item;
                 MatchingCompetitionDataManager.Instance._currentRankList.Add(data);
             }
-            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingCompetitionDataManager.Instance._currentRankList));
+            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingCompetitionDataManager.Instance._currentRankList,MatchingCompetitionDataManager.Instance.LocalRankPath));
             return true;
         }
         //获取往期作品集
@@ -192,7 +193,7 @@ namespace GFGGame
                 data.JudgingInfo = item;
                 MatchingCompetitionDataManager.Instance._BeforeRankList.Add(data);
             }
-            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingCompetitionDataManager.Instance._BeforeRankList));
+            Timers.inst.StartCoroutine(MatchingPhotoHelper.Download(MatchingCompetitionDataManager.Instance._BeforeRankList,MatchingCompetitionDataManager.Instance.LocalBeforePath));
             return true;
         }
 

+ 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 - 43
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,51 +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();
-                    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)
+                    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()
         {
@@ -810,7 +913,7 @@ namespace GFGGame
                 PrefabManager.Instance.Restore(_sceneObject);
                 _sceneObject = null;
             }
-
+            MatchingCompetitionDataManager.Instance.DressPropIndex = 0;
             _equipSceneData.Clear();
             hitGameObj = null;
             memoryHitGameObj = null;

+ 16 - 5
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);
             }
@@ -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()

+ 25 - 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,13 +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)
                 {
@@ -106,6 +113,7 @@ namespace GFGGame
                 {
                     dressUpObjUI.Dispose();
                 }
+                _ui.m_desc.visible = false;
                 _ui.m_suitShow.data = null;
                 _ui.m_playerImage.texture = MatchingCompetitionDataManager.Instance.MyNtextture;
             }
@@ -141,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);
+        }
     }
 }

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

@@ -126,7 +126,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);

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

@@ -139,7 +139,7 @@ namespace GFGGame
             }
             base.OnHide();
             //_effects.Clear();
-            EventAgent.DispatchEvent(ConstMessage.REWARDVIEW_CLOTHER);
+            //EventAgent.DispatchEvent(ConstMessage.REWARDVIEW_CLOTHER);
             GetSuitItemController.TryShow(0);
         }
         private void RenderListRewardItem(int index, GObject obj)

+ 62 - 15
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)
             {
-                ViewManager.Show<MatchingCompetitionRewardView>(new object[] { ItemUtil.CreateItemDataList(MatchingCompetitionDataManager.Instance.SpecialBonusList),null});
+                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")
                 {
@@ -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);
+        }
     }
 }

+ 51 - 25
GameClient/Assets/Game/HotUpdate/Views/MatchingCompetition/MatchingCompetitionUpLoadView.cs

@@ -56,10 +56,14 @@ namespace GFGGame
             _ui.m_c1.selectedIndex = MatchingCompetitionDataManager.Instance.MatchingState;
             _ui.m_titleText.text = JudgingRoundOpenCfgArray.Instance.dataArray[MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason - 1].Name;
             isCountTime = false;
+            _ui.m_btnRank.touchable = true;
             UpdateView();
             UpdateHead();
             UpdateDress();
             Timers.inst.AddUpdate(UpdateTime);
+            Timers.inst.AddUpdate(CheckGuide);
+            //临时处理,后续下载做好了替换
+            //result = await MatchingCompetitionSproxy.ReqCurrentRank();
         }
 
         protected override void OnHide()
@@ -71,6 +75,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 +117,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
             {
@@ -233,11 +244,6 @@ namespace GFGGame
                 PromptController.Instance.ShowFloatTextPrompt("结算期间无法选择!");
                 return;
             }
-            if(MatchingCompetitionDataManager.Instance.MatchingRemainingTimes <= 0)
-            {
-                PromptController.Instance.ShowFloatTextPrompt("评选次数不足!");
-                return;
-            }
             //先获取两个玩家信息
             bool resulst =  await MatchingCompetitionSproxy.ReqGetTwoPlayers();
             if(resulst)
@@ -259,13 +265,16 @@ namespace GFGGame
         }
         private async void OnClickBtnRank()
         {
+            _ui.m_btnRank.touchable = false;
             bool result = await MatchingCompetitionSproxy.ReqCurrentRank();
             if(result)
             {
                 ViewManager.Show<MatchingCompetitionRankView>();
-            }   
+                _ui.m_btnRank.touchable = true;
+            }
             else
             {
+                _ui.m_btnRank.touchable = true;
                 PromptController.Instance.ShowFloatTextPrompt("暂无玩家上榜!");
             }
         }
@@ -301,10 +310,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, "进行评选!");
+        }
     }
 }

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

@@ -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;

二進制
GameClient/Assets/ResIn/UI/InstanceZones/InstanceZones_fui.bytes


二進制
GameClient/Assets/ResIn/UI/MatchingCompetition/MatchingCompetition_fui.bytes


二進制
GameClient/Assets/ResIn/UI/Poem/Poem_fui.bytes