Browse Source

开发:武器部件显示正确的已升级的部件

XuJJ 1 week ago
parent
commit
aec5607acd

+ 13 - 0
snipershooting/ShootSniper/Assets/Scripts/GamePlay/Data/PlayerRuntimeData.cs

@@ -885,6 +885,19 @@ namespace SSTRGame
             return level;
         }
 
+        public int[] GetWeaponAttributeLevels(int weaponID)
+        {
+            var indexWaepon = GetWeaponSaveInfo(weaponID);
+            if (saveManager.playerConfig.weaponInfoDic.ContainsKey(weaponID))
+            {
+                foreach (AttributeUpdateInfo item in indexWaepon.attributeList)
+                {
+                    return item.attributeLevels;
+                }
+            }
+            return new int[0];
+        }
+
         /// <summary>
         /// 数据检查
         /// </summary>

+ 9 - 6
snipershooting/ShootSniper/Assets/Scripts/GamePlay/WeaponPartView.cs

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using UnityEngine;
 
 public class WeaponPartView : MonoBehaviour
@@ -56,20 +57,22 @@ public class WeaponPartView : MonoBehaviour
         InitPart();
         List<int> partTypeList = new List<int>();//可以显示的枪的部件类型
         int hologramPartType = 0;//要显示全息投影的枪的部件
-        int curWeaponLv = SSTRGame.PlayerRuntimeData.Instance.GetWeaponAttributeSumLevel(weaponID);
+        //int curWeaponLv = SSTRGame.PlayerRuntimeData.Instance.GetWeaponAttributeSumLevel(weaponID);
+        var attributeLevels = SSTRGame.PlayerRuntimeData.Instance.GetWeaponAttributeLevels(weaponID);
         var weaponParts = DataManager.Instance.csvData.WeaponPart;
         for (int i = 0; i < weaponParts.Count; ++i)
         {
             if (weaponParts[i].weaponID == weaponID)
             {
-                if (curWeaponLv >= weaponParts[i].equipLevel)
+                // if (curWeaponLv >= weaponParts[i].equipLevel)
+                if (attributeLevels.Contains(weaponParts[i].equipLevel - 1))
                 {
                     partTypeList.Add(weaponParts[i].partType);
                 }
-                if (curWeaponLv + 1 == weaponParts[i].equipLevel)
-                {
-                    hologramPartType = weaponParts[i].partType;
-                }
+                // if (curWeaponLv + 1 == weaponParts[i].equipLevel)
+                // {
+                //     hologramPartType = weaponParts[i].partType;
+                // }
             }
         }
         for (int i = 0; i < parts.Length; ++i)

+ 4 - 2
snipershooting/ShootSniper/Assets/ShootGame/Scripts/ArmCtrl.cs

@@ -187,10 +187,12 @@ public class ArmCtrl : MonoBehaviour {
     public void InitWeaponParts(int weaponID)
     {
         var weaponParts = DataManager.Instance.csvData.WeaponPart;
-        int curWeaponLv = SSTRGame.PlayerRuntimeData.Instance.GetWeaponAttributeSumLevel(weaponID);
+        // int curWeaponLv = SSTRGame.PlayerRuntimeData.Instance.GetWeaponAttributeSumLevel(weaponID);
+        IList attributeLevels = SSTRGame.PlayerRuntimeData.Instance.GetWeaponAttributeLevels(weaponID);
         for (int i = 0; i < weaponParts.Count; ++i)
         {
-            if (weaponParts[i].weaponID == weaponID && curWeaponLv >= weaponParts[i].equipLevel)
+            // if (weaponParts[i].weaponID == weaponID && curWeaponLv >= weaponParts[i].equipLevel)
+            if (weaponParts[i].weaponID == weaponID && attributeLevels.Contains(weaponParts[i].equipLevel - 1))
             {
                 for (int j = 0; j < parts.Length; ++j)
                 {