Browse Source

叠叠乐

guodong 1 year ago
parent
commit
c860b1985c

+ 3 - 3
GameClient/Assets/Game/HotUpdate/DressUp/DressUpLayerOperation.cs

@@ -245,11 +245,11 @@ namespace GFGGame
             //LogUtil.LogEditor($"add UpdateLayer {itemCfg.id} layerId {layerId}");
             int sortingOrder = ItemTypeCfgArray.Instance.GetSortingOrder(itemCfg.subType, layerId);
             //清理旧的
-            var spritObjName = string.Format(DressUpUtil.FORMAT_SPRITE_NAME, itemCfg.subType, layerId);
+            var spritObjName = string.Format(DressUpUtil.FORMAT_SPRITE_NAME, itemCfg.id, layerId);
             DressUpUtil.TryRemoveSprite(parentObj, spritObjName);
-            var aniObjName = string.Format(DressUpUtil.FORMAT_ANIMATION_NAME, itemCfg.subType, layerId);
+            var aniObjName = string.Format(DressUpUtil.FORMAT_ANIMATION_NAME, itemCfg.id, layerId);
             DressUpUtil.TryRemoveObj(parentObj, aniObjName);
-            string effectObjName = string.Format(DressUpUtil.FORMAT_EFFECT_OBJ_NAME, itemCfg.subType, layerId);
+            string effectObjName = string.Format(DressUpUtil.FORMAT_EFFECT_OBJ_NAME, itemCfg.id, layerId);
             DressUpUtil.TryRemoveObj(parentObj, effectObjName);
             //添加新的
             if(!string.IsNullOrEmpty(this.resPath))

+ 27 - 4
GameClient/Assets/Game/HotUpdate/DressUp/DressUpObj.cs

@@ -475,13 +475,36 @@ namespace GFGGame
 
         private void CheckRemoveSameType(int subType)
         {
+            ItemTypeCfg itemTypeCfg = ItemTypeCfgArray.Instance.GetCfg(subType);
             int count = 0;
             int firstTeshuId = 0;
+            int maxNum = 1;
+            if(itemTypeCfg != null && itemTypeCfg.maxNum > 0)
+            {
+                maxNum = itemTypeCfg.maxNum;
+            }
+            else if(subType > ConstDressUpItemType.TE_SHU)
+            {
+                maxNum = 3;
+            }
             for (int i = 0; i < _dressUpData.itemList.Count; i++)
             {
                 int itemID = (int)_dressUpData.itemList[i];
                 int itemSubType = ItemUtilCS.GetItemSubType(itemID);
-                if (itemSubType == subType
+                
+                bool isSameType = false;
+                if(itemTypeCfg != null && itemTypeCfg.maxNum > 0)
+                {
+                    if(itemSubType == subType)
+                    {
+                        isSameType = true;
+                    }
+                }
+                else if (subType > ConstDressUpItemType.TE_SHU && itemSubType > ConstDressUpItemType.TE_SHU)
+                {
+                    isSameType = true;
+                }
+                else if (itemSubType == subType
                     || (subType == ConstDressUpItemType.LIAN_YI_QUN && (itemSubType == ConstDressUpItemType.SHANG_YI || itemSubType == ConstDressUpItemType.XIA_ZHUANG || itemSubType == ConstDressUpItemType.NEI_DA))
                     || (subType == ConstDressUpItemType.SHANG_YI && itemSubType == ConstDressUpItemType.LIAN_YI_QUN)
                     || (subType == ConstDressUpItemType.XIA_ZHUANG && itemSubType == ConstDressUpItemType.LIAN_YI_QUN)
@@ -490,7 +513,7 @@ namespace GFGGame
                     Remove(itemID);
                     i--;
                 }
-                if (itemSubType > ConstDressUpItemType.TE_SHU)
+                if (isSameType)
                 {
                     if (count == 0)
                     {
@@ -499,9 +522,9 @@ namespace GFGGame
                     count++;
                 }
             }
-            if (subType > ConstDressUpItemType.TE_SHU && count >= 3)
+            if (count >= maxNum)
             {
-                //特殊饰品最多穿三件,第四件会自动顶掉第一件
+                //超出允许的件数会顶掉第一件
                 Remove(firstTeshuId);
             }
         }

+ 12 - 12
GameClient/Assets/Game/HotUpdate/DressUp/DressUpUtil.cs

@@ -17,9 +17,9 @@ namespace GFGGame
         public const string BODY_SPRITE_NAME = "Body";
         public const string BODY_ANIMATION_NAME = "Body_a";
         public const string BODY_EFFECT_OBJ_NAME = "Body_eff";
-        public const string FORMAT_SPRITE_NAME = "T{0}_s{1}";
-        public const string FORMAT_ANIMATION_NAME = "T{0}_a{1}";
-        public const string FORMAT_EFFECT_OBJ_NAME = "T{0}_e{1}";
+        public const string FORMAT_SPRITE_NAME = "I_{0}_s{1}";
+        public const string FORMAT_ANIMATION_NAME = "I_{0}_a{1}";
+        public const string FORMAT_EFFECT_OBJ_NAME = "I_{0}_e{1}";
 
         public static List<DressUpLayerOperation> AddItemAsync(int itemID, GameObject sceneObj, bool needSetMask = false, bool showAni = true, GameObject parentObj = null, int resLayer = 0)
         {
@@ -102,31 +102,31 @@ namespace GFGGame
             //默认层
             if (!string.IsNullOrEmpty(itemCfg.resLayer1))
             {
-                spritObjName = string.Format(FORMAT_SPRITE_NAME, itemCfg.subType, 1);
+                spritObjName = string.Format(FORMAT_SPRITE_NAME, itemCfg.id, 1);
                 TryRemoveSprite(parentObj, spritObjName);
-                aniObjName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.subType, 1);
+                aniObjName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.id, 1);
                 TryRemoveObj(parentObj, aniObjName);
-                aniObjName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.subType, 1);
+                aniObjName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.id, 1);
                 TryRemoveObj(parentObj, aniObjName);
             }
             //特殊层
             if (!string.IsNullOrEmpty(itemCfg.resLayer2))
             {
-                spritObjName = string.Format(FORMAT_SPRITE_NAME, itemCfg.subType, 2);
+                spritObjName = string.Format(FORMAT_SPRITE_NAME, itemCfg.id, 2);
                 TryRemoveSprite(parentObj, spritObjName);
-                aniObjName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.subType, 2);
+                aniObjName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.id, 2);
                 TryRemoveObj(parentObj, aniObjName);
-                aniObjName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.subType, 2);
+                aniObjName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.id, 2);
                 TryRemoveObj(parentObj, aniObjName);
             }
             //第三层
             if (!string.IsNullOrEmpty(itemCfg.resLayer3))
             {
-                spritObjName = string.Format(FORMAT_SPRITE_NAME, itemCfg.subType, 3);
+                spritObjName = string.Format(FORMAT_SPRITE_NAME, itemCfg.id, 3);
                 TryRemoveSprite(parentObj, spritObjName);
-                aniObjName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.subType, 3);
+                aniObjName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.id, 3);
                 TryRemoveObj(parentObj, aniObjName);
-                aniObjName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.subType, 3);
+                aniObjName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.id, 3);
                 TryRemoveObj(parentObj, aniObjName);
             }
         }