Browse Source

套装动作显示检查资源

guodong 2 years ago
parent
commit
c977d8fab4

+ 9 - 2
GameClient/Assets/Game/HotUpdate/Data/DressUpMenuSuitDataManager.cs

@@ -72,7 +72,7 @@ namespace GFGGame
                 {
                     _travelSuitIDList.Add(travelSuitCfg.id);
                 }
-                if (SuitCfgArray.Instance.CheckSuitHasAction(value))
+                if (CheckSuitHasAction(value))
                 {
                     _actionIDList.Add(value);
                 }
@@ -89,7 +89,7 @@ namespace GFGGame
                 {
                     _travelSuitIDList.Remove(travelSuitCfg.id);
                 }
-                if (SuitCfgArray.Instance.CheckSuitHasAction(value) && _actionIDList.Contains(value))
+                if (CheckSuitHasAction(value) && _actionIDList.Contains(value))
                 {
                     _actionIDList.Remove(travelSuitCfg.id);
                 }
@@ -250,5 +250,12 @@ namespace GFGGame
             EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
         }
 
+        //检查套装是否有动作
+        public static bool CheckSuitHasAction(int suitId)
+        {
+            var suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
+            return suitCfg != null && ResPathUtil.CheckDressUpAnimationExist(suitCfg.aniRes);
+        }
+
     }
 }

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

@@ -47,18 +47,6 @@ namespace GFGGame
             }
         }
 
-        public bool HasSuitActionRes
-        {
-            get
-            {
-                if (_dressUpData.suitId > 0)
-                {
-                    return SuitCfgArray.Instance.CheckSuitHasAction(_dressUpData.suitId);
-                }
-                return false;
-            }
-        }
-
         public List<int> itemList
         {
             get
@@ -305,7 +293,8 @@ namespace GFGGame
             }
             TakeOffAll(false);
             _dressUpData.suitId = id;
-            _dressUpData.actionId = (HasSuitActionRes && tryShowAction) ? id : 0;
+            bool hasSuitActionRes = DressUpMenuSuitDataManager.CheckSuitHasAction(_dressUpData.suitId);
+            _dressUpData.actionId = (hasSuitActionRes && tryShowAction) ? id : 0;
             SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_dressUpData.suitId);
             List<int> items = new List<int>(suitCfg.partsArr);
             if (showOptional)
@@ -538,8 +527,8 @@ namespace GFGGame
             if (IsAction)
             {
                 SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_dressUpData.actionId);
-                var hasAniRes = !string.IsNullOrEmpty(suitCfg.aniRes);
-                var res = hasAniRes ? suitCfg.aniRes : suitCfg.picRes;
+                var hasAniRes = ResPathUtil.CheckDressUpAnimationExist(suitCfg.aniRes);
+                var res = hasAniRes ? suitCfg.aniRes : null;
                 DressUpUtil.UpdateWholeBody(res, _sceneObj, hasAniRes, suitCfg.effRes, false, _roleObj);
             }
             else

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

@@ -111,6 +111,17 @@ namespace GFGGame
         {
             return $"{ANIMATION_DIR_PATH}/DressUp/{res}/{res}.{extName}";
         }
+
+        public static bool CheckDressUpAnimationExist(string res, string extName = "prefab")
+        {
+            if(string.IsNullOrEmpty(res))
+            {
+                return false;
+            }
+            string resPath = ResPathUtil.GetDressUpAnimationPath(res, extName);
+            return VEngine.Versions.Contains(resPath);
+        }
+
         public static string GetDressUpEffectPath(string res, bool inAni = false, string extName = "prefab")
         {
             if(inAni)

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

@@ -271,7 +271,7 @@ namespace GFGGame
             // bool isSuit = SuitCfgArray.Instance.GetTotalCountOfOneSuit(id) > 0;
             if (_currentMenuType == ConstDressUpItemType.TAO_ZHUANG)
             {
-                if (SuitCfgArray.Instance.CheckSuitHasAction(id))
+                if (DressUpMenuSuitDataManager.CheckSuitHasAction(id))
                 {
                     listItem.m_comAxtionSelect.target.visible = true;
                     UI_PartsListItem.ProxyEnd();
@@ -813,7 +813,7 @@ namespace GFGGame
                 if (_currentMenuType == ConstDressUpItemType.TAO_ZHUANG)
                 {
                     listItem.m_iconSelected.visible = suitId > 0 && id == suitId;
-                    listItem.m_comAxtionSelect.target.visible = id == selectSuitId && SuitCfgArray.Instance.CheckSuitHasAction(id);
+                    listItem.m_comAxtionSelect.target.visible = id == selectSuitId && DressUpMenuSuitDataManager.CheckSuitHasAction(id);
                 }
                 else if (_currentMenuType == ConstDressUpItemType.DONG_ZUO)
                 {