少年修仙传客户端代码仓库
client_Wu Xijin
2019-03-04 49d14c36c7a6ec949fc18c118896550b45bcbfba
3555 新版装备系统开发。
8个文件已修改
9个文件已删除
4个文件已添加
527 ■■■■ 已修改文件
Core/GameEngine/Model/Config/EquipSuitConfig.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/EquipSuitConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ClientPack.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAE_Truck.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAF_Merge.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB0_Event.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/EquipModel.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/EquipSuitPropertyBar.cs 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/EquipSuitPropertyWidget.cs 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/RealmEquipWin.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarMaterialCandidate.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarMaterialCandidate.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarMaterialCandidateWidget.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarMaterialCandidateWidget.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarWin.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/EquipSuitConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Saturday, March 02, 2019
//    [  Date ]:           Monday, March 04, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -18,7 +18,7 @@
    public readonly int suiteID;
    public readonly int suiteCnt;
    public readonly int star;
    public readonly Int2 attr;
    public readonly Int2[] attr;
    public readonly int skillID;
    public readonly string description;
@@ -42,7 +42,12 @@
            int.TryParse(tables[4],out star); 
            Int2.TryParse(tables[5],out attr);
            string[] attrStringArray = tables[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            attr = new Int2[attrStringArray.Length];
            for (int i=0;i<attrStringArray.Length;i++)
            {
                 Int2.TryParse(attrStringArray[i],out attr[i]);
            }
            int.TryParse(tables[6],out skillID); 
Core/GameEngine/Model/Config/EquipSuitConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 0293f3c320d15774eb4424928e85e47a
timeCreated: 1551518813
timeCreated: 1551710576
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/DTCFile/ClientPack.meta
File was deleted
Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta
File was deleted
Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta
File was deleted
Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta
File was deleted
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta
File was deleted
Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta
File was deleted
Core/NetworkPackage/ServerPack/HAE_Truck.meta
File was deleted
Core/NetworkPackage/ServerPack/HAF_Merge.meta
File was deleted
Core/NetworkPackage/ServerPack/HB0_Event.meta
File was deleted
System/Equip/EquipModel.cs
@@ -7,12 +7,14 @@
{
    public class EquipModel : Model
    {
        public int showedUnLockLevel {
        public int showedUnLockLevel
        {
            get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "EquipSetUnLockHasShowed"), 1); }
            set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "EquipSetUnLockHasShowed"), value); }
        }
        public int showedUnLockSlot {
        public int showedUnLockSlot
        {
            get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "EquipSlotUnLockHasShowed"), 1); }
            set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "EquipSlotUnLockHasShowed"), value); }
        }
@@ -20,6 +22,7 @@
        public readonly LogicInt selectedLevel = new LogicInt();
        public readonly LogicInt selectedPlace = new LogicInt();
        public readonly LogicString selectedEquip = new LogicString();
        public readonly LogicInt selectedStarLevel = new LogicInt();
        int m_AppearanceLevel = 0;
        public int appearanceLevel { get { return m_AppearanceLevel; } }
@@ -28,6 +31,7 @@
        Dictionary<string, CandidateEquip> candidateEquips = new Dictionary<string, CandidateEquip>();
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        public override void Init()
        {
@@ -59,6 +63,8 @@
            if (selectedLevel.dirty)
            {
                selectedPlace.dirty = true;
                selectedStarLevel.value = 0;
                selectedStarLevel.dirty = true;
            }
            if (selectedLevel.dirty || selectedPlace.dirty)
@@ -285,20 +291,27 @@
            return set.IsBetterThanCurrent(equipGuid);
        }
        public EquipSuitPropertyEntry GetEquipSuitEntry(int level, EquipSuitType type)
        public EquipSuitPropertyEntry GetEquipSuitEntry(int level, int star, EquipSuitType type)
        {
            var entry = new EquipSuitPropertyEntry();
            switch (type)
            var configs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, type);
            var suitLevel = starModel.GetSuitLevel(level, type);
            var actived = suitLevel >= star;
            var properties = new List<Int2>();
            foreach (var item in configs)
            {
                case EquipSuitType.TwoSuit:
                if (item.star == star)
                {
                    properties.AddRange(item.attr);
                    break;
                case EquipSuitType.FiveSuit:
                    break;
                case EquipSuitType.EightSuit:
                    break;
                default:
                    break;
                }
            }
            var entry = new EquipSuitPropertyEntry()
            {
                actived = actived,
                type = type,
                properties = properties
            };
            return entry;
        }
@@ -444,10 +457,7 @@
    {
        public EquipSuitType type;
        public bool actived;
        public int currentStarLevel;
        public int nextStarLevel;
        public List<Int2> currentProperties;
        public List<Int2> nextProperties;
        public List<Int2> properties;
    }
}
System/Equip/EquipSuitPropertyBar.cs
@@ -12,100 +12,30 @@
    public class EquipSuitPropertyBar : MonoBehaviour
    {
        [SerializeField] Text m_Titile;
        [SerializeField] PropertyLine[] m_Properties;
        [SerializeField] Text[] m_Properties;
        public void Display(EquipSuitPropertyEntry entry)
        {
            switch (entry.type)
            {
                case EquipSuitType.TwoSuit:
                    m_Titile.text = "【2件】";
                    break;
                case EquipSuitType.FiveSuit:
                    m_Titile.text = "【5件】";
                    break;
                default:
                    break;
            }
            m_Titile.color = UIHelper.GetUIColor(entry.actived ? TextColType.Green : TextColType.Gray, true);
            var color = UIHelper.GetUIColor(entry.actived ? TextColType.Green : TextColType.Gray, true);
            m_Titile.color = color;
            for (var i = 0; i < m_Properties.Length; i++)
            {
                var behaviour = m_Properties[i];
                if (entry.actived && entry.currentStarLevel != entry.nextStarLevel)
                if (i < entry.properties.Count)
                {
                    if (i < entry.currentProperties.Count)
                    {
                        var propertyId = entry.currentProperties[i].x;
                        var currentValue = entry.currentProperties[i].y;
                        var nextValue = entry.nextProperties[i].y;
                        behaviour.Display(new Int3(propertyId, currentValue, nextValue), entry.nextStarLevel);
                    }
                    else
                    {
                        behaviour.Hide();
                    }
                    var property = entry.properties[i];
                    behaviour.gameObject.SetActive(true);
                    var config = PlayerPropertyConfig.Get(property.x);
                    behaviour.text = string.Format("{0} +{1}", config.Name, PlayerPropertyConfig.GetPropertyDescription(property.x, property.y));
                }
                else
                {
                    if (i < entry.currentProperties.Count)
                    {
                        behaviour.Display(entry.currentProperties[i], entry.actived);
                    }
                    else
                    {
                        behaviour.Hide();
                    }
                    behaviour.gameObject.SetActive(false);
                }
                behaviour.color = color;
            }
        }
        [System.Serializable]
        public class PropertyLine
        {
            public RectTransform container;
            public Text current;
            public Image arrow;
            public Text next;
            public void Display(Int3 property, int nextLevel)
            {
                container.gameObject.SetActive(true);
                var config = PlayerPropertyConfig.Get(property.x);
                var isPercentage = config.ISPercentage == 1;
                var valueDescription = isPercentage ? StringUtility.Contact(Mathf.RoundToInt(property.y * 0.01f), "%") : property.y.ToString();
                current.text = string.Format("{0} +{1}", config.Name, valueDescription);
                current.color = UIHelper.GetUIColor(TextColType.Green, true);
                arrow.gameObject.SetActive(true);
                valueDescription = isPercentage ? StringUtility.Contact(Mathf.RoundToInt(property.z * 0.01f), "%") : property.z.ToString();
                next.text = string.Format("{0}星 +{1}", nextLevel, valueDescription);
                next.color = UIHelper.GetUIColor(TextColType.Gray, true);
            }
            public void Display(Int2 property, bool active)
            {
                container.gameObject.SetActive(true);
                var config = PlayerPropertyConfig.Get(property.x);
                var isPercentage = config.ISPercentage == 1;
                var valueDescription = isPercentage ? StringUtility.Contact(Mathf.RoundToInt(property.y * 0.01f), "%") : property.y.ToString();
                current.text = string.Format("{0} +{1}", config.Name, valueDescription);
                arrow.gameObject.SetActive(true);
                next.text = string.Empty;
                current.color = UIHelper.GetUIColor(active ? TextColType.Green : TextColType.Gray, true);
            }
            public void Hide()
            {
                container.gameObject.SetActive(false);
            }
        }
    }
System/Equip/EquipSuitPropertyWidget.cs
@@ -18,24 +18,39 @@
        [SerializeField] EquipSuitPropertyBar m_TwoSuit;
        [SerializeField] EquipSuitPropertyBar m_FiveSuit;
        [SerializeField] Text m_EightSuitTitle;
        [SerializeField] Text m_EightSuitDescription;
        EquipModel model { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        public void Display(int level)
        public void Init(int level)
        {
            var maxLevel = starModel.GetMaxStarLevel(level);
            m_StarToggles[0].SetActive(true);
            m_StarToggles[1].SetActive(maxLevel >= 3);
            m_StarToggles[2].SetActive(maxLevel >= 6);
            m_StarToggles[3].SetActive(maxLevel >= 9);
        }
        public void Display(int level, int star)
        {
            m_SuitName.text = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.TwoSuit)[0].name;
            for (int i = 1; i <= 8; i++)
            {
                var equip = packModel.GetItemByGuid(model.GetEquipSet(level).GetEquip(i));
                m_SuitEquipNames[i - 1].color = UIHelper.GetUIColor(equip.config.SuiteiD > 0 ? TextColType.Green : TextColType.Gray);
                var hasSuit = equip != null && equip.config.SuiteiD > 0;
                m_SuitEquipNames[i - 1].color = UIHelper.GetUIColor(hasSuit ? TextColType.Green : TextColType.Gray);
            }
            m_TwoSuit.Display(model.GetEquipSuitEntry(level, EquipSuitType.TwoSuit));
            m_FiveSuit.Display(model.GetEquipSuitEntry(level, EquipSuitType.FiveSuit));
            m_EightSuitDescription.text = GetEightSuitDescription(level);
            m_TwoSuit.Display(model.GetEquipSuitEntry(level, star, EquipSuitType.TwoSuit));
            m_FiveSuit.Display(model.GetEquipSuitEntry(level, star, EquipSuitType.FiveSuit));
            m_EightSuitDescription.text = GetEightSuitDescription(level, star);
            var eightSuitLevel = starModel.GetSuitLevel(level, EquipSuitType.EightSuit);
            var color = UIHelper.GetUIColor(eightSuitLevel >= star ? TextColType.Green : TextColType.Gray, true);
            m_EightSuitTitle.color = color;
            m_EightSuitDescription.color = color;
        }
        public void Dispose()
@@ -43,67 +58,60 @@
        }
        private string GetEightSuitDescription(int level)
        private string GetEightSuitDescription(int level, int star)
        {
            var lines = new List<string>();
            var configs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.EightSuit);
            for (int i = 0; i < configs.Count; i++)
            {
                var config = configs[i];
                var description = string.Empty;
                if (config.skillID > 0)
                if (config.star == star)
                {
                    description = config.description;
                }
                else
                {
                    var propertyConfig = PlayerPropertyConfig.Get(config.attr.x);
                    var propertyDescription = PlayerPropertyConfig.GetPropertyDescription(config.attr.x, config.attr.y);
                    description = StringUtility.Contact(propertyConfig.Name, " +", propertyDescription);
                }
                    var description = string.Empty;
                    if (config.skillID > 0)
                    {
                        description = config.description;
                    }
                    else
                    {
                        var propertyConfig = PlayerPropertyConfig.Get(config.attr[0].x);
                        var propertyDescription = PlayerPropertyConfig.GetPropertyDescription(config.attr[0].x, config.attr[0].y);
                        description = StringUtility.Contact(propertyConfig.Name, " +", propertyDescription);
                    }
                var line = string.Format("{0}星装备: {1}", config.star, description);
                var starLevel = starModel.GetSuitLevel(level, EquipSuitType.EightSuit);
                lines.Add(UIHelper.AppendStringColor(config.star >= starLevel ? TextColType.Green : TextColType.Gray, line));
                    return description;
                }
            }
            return string.Join("\n", lines.ToArray());
            return string.Empty;
        }
        [System.Serializable]
        public class StarToggle
        {
            public int star;
            public Text title;
            public Toggle toggle;
            public void Display()
            EquipModel model { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
            public void SetActive(bool active)
            {
                title.gameObject.SetActive(true);
            }
            public void Hide()
            {
                title.gameObject.SetActive(active);
                if (active)
                {
                    toggle.SetListener(OnValueChange);
                }
                else
                {
                    toggle.RemoveAllListeners();
                }
            }
            private void OnValueChange(bool value)
            {
                if (value)
                {
                    switch (star)
                    {
                        case 0:
                            break;
                        case 3:
                            break;
                        case 6:
                            break;
                        case 9:
                            break;
                        default:
                            break;
                    }
                    model.selectedStarLevel.value = star;
                }
            }
System/Equip/RealmEquipWin.cs
@@ -67,22 +67,6 @@
            DisplayDynamicInfo(false);
        }
        private void ShowSuitProperty(int level)
        {
            m_SuitPropertyWidget.gameObject.SetActive(true);
            m_CandidateEquipWidget.gameObject.SetActive(false);
            m_SuitPropertyWidget.Display(level);
        }
        private void ShowCandidateEquips()
        {
            m_SuitPropertyWidget.gameObject.SetActive(false);
            m_CandidateEquipWidget.gameObject.SetActive(true);
            m_CandidateEquipWidget.Display();
        }
        private void DisplayDynamicInfo(bool force)
        {
            if (force || model.selectedLevel.dirty)
@@ -92,13 +76,18 @@
                DisplayEquips(level);
                DisplayAppearance(level);
                DisplayFightPoint(level);
                ShowSuitProperty(level);
                m_SuitPropertyWidget.Init(level);
            }
            if (force || model.selectedPlace.dirty)
            {
                var place = model.selectedPlace.Fetch();
                ShowCandidateEquips();
                m_CandidateEquipWidget.Display();
            }
            if (force || model.selectedStarLevel.dirty)
            {
                m_SuitPropertyWidget.Display(model.selectedLevel.value, model.selectedStarLevel.Fetch());
            }
        }
@@ -188,8 +177,10 @@
            public EquipSlotBehaviour fairy2;
            public EquipSlotBehaviour jade;
            public EquipSlotBehaviour this[int place] {
                get {
            public EquipSlotBehaviour this[int place]
            {
                get
                {
                    switch ((RoleEquipType)place)
                    {
                        case RoleEquipType.Weapon:
System/EquipStar/EquipStarMaterialCandidate.cs
New file
@@ -0,0 +1,50 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, March 04, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class EquipStarMaterialCandidate : ScrollItem
    {
        [SerializeField] Button m_Select;
        [SerializeField] ItemBehaviour m_Item;
        [SerializeField] Text m_ItemName;
        string equip = string.Empty;
        EquipStarModel model { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        public override void Display(object _data)
        {
            base.Display(_data);
            this.equip = (string)_data;
            var item = packModel.GetItemByGuid(this.equip);
            m_ItemName.text = item.config.ItemName;
            m_Item.SetItem(item.config.ID, 1);
            m_Select.SetListener(SelectMaterial);
        }
        public override void Dispose()
        {
            base.Dispose();
            m_Select.RemoveAllListeners();
        }
        private void SelectMaterial()
        {
            var materialIndex = model.operateMaterialIndex.value;
            model.GetMaterialLogicStringByIndex(materialIndex).value = this.equip;
            model.operateMaterialIndex.value = 0;
        }
    }
}
System/EquipStar/EquipStarMaterialCandidate.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4005a4b8f4d80cb4f93ce4e6637d1c79
timeCreated: 1551711647
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/EquipStar/EquipStarMaterialCandidateWidget.cs
New file
@@ -0,0 +1,68 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, March 04, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class EquipStarMaterialCandidateWidget : MonoBehaviour
    {
        [SerializeField] RectTransform m_MaterialContainer;
        [SerializeField] CyclicScroll m_MaterialCycScroll;
        [SerializeField] RectTransform m_GetWayContainer;
        [SerializeField] WayCell[] m_GetWays;
        EquipStarModel model { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        public void Display(int level, int place, int starLevel)
        {
            var materials = model.GetMaterials(level, place, starLevel);
            if (materials.IsNullOrEmpty())
            {
                m_MaterialContainer.gameObject.SetActive(false);
                m_GetWayContainer.gameObject.SetActive(true);
                var ways = new List<int>();
                for (var i = 0; i < m_GetWays.Length; i++)
                {
                    var behaviour = m_GetWays[i];
                    if (i < ways.Count)
                    {
                        behaviour.gameObject.SetActive(true);
                        var config = GetItemWaysConfig.Get(ways[i]);
                        behaviour.icon.SetSprite(config.Icon);
                        behaviour.wayName.text = config.Text;
                        behaviour.funcName.text = config.name;
                        behaviour.wayButton.SetListener(() =>
                        {
                            WindowCenter.Instance.Close<EquipFrameWin>();
                            ModelCenter.Instance.GetModel<GetItemPathModel>().ClickGetWay(config.ID);
                        });
                    }
                    else
                    {
                        behaviour.gameObject.SetActive(false);
                    }
                }
            }
            else
            {
                m_MaterialContainer.gameObject.SetActive(true);
                m_GetWayContainer.gameObject.SetActive(false);
                m_MaterialCycScroll.Init(materials);
            }
        }
    }
}
System/EquipStar/EquipStarMaterialCandidateWidget.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: eab93a29968eb52408aeb971d196ed67
timeCreated: 1551710957
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/EquipStar/EquipStarModel.cs
@@ -9,6 +9,7 @@
    {
        public readonly LogicString selectedEquip = new LogicString();
        public readonly LogicInt equipStarLevel = new LogicInt();
        public readonly LogicInt operateMaterialIndex = new LogicInt();
        public readonly Dictionary<int, LogicString> materials = new Dictionary<int, LogicString>();
        public readonly LogicInt starUpgradeProbability = new LogicInt();
System/EquipStar/EquipStarWin.cs
@@ -22,6 +22,7 @@
        [SerializeField] BaseProperty[] m_BasePropertys;
        [SerializeField] Text[] m_LevelUpPropertys;
        [SerializeField] Button m_StarUpgrade;
        [SerializeField] EquipStarMaterialCandidateWidget m_MaterialCandidateWidget;
        EquipStarModel model { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
@@ -100,6 +101,12 @@
                var candidates = model.GetCandidateEquips();
                m_CandidateScroll.Init(candidates);
            }
            if (force || model.operateMaterialIndex.dirty)
            {
                var index = model.operateMaterialIndex.Fetch();
                DisplayMaterialCandidates(index);
            }
        }
        private void DisplayStars(int level, int equipPlace, int currentStarLevel)
@@ -173,6 +180,26 @@
            }
        }
        private void DisplayMaterialCandidates(int materialIndex)
        {
            if (materialIndex == 0)
            {
                m_MaterialCandidateWidget.gameObject.SetActive(false);
            }
            else
            {
                m_MaterialCandidateWidget.gameObject.SetActive(true);
                var targetEquip = model.selectedEquip.value;
                var item = packModel.GetItemByGuid(targetEquip);
                var starLevel = model.GetEquipStarLevel(item.config.lv, item.config.EquipPlace);
                m_MaterialCandidateWidget.Display(item.config.LV, item.config.EquipPlace, starLevel);
                var position = Vector3.zero;
                m_MaterialCandidateWidget.transform.localPosition = position;
            }
        }
        private void StarUpgrade()
        {
            var equip = packModel.GetItemByGuid(model.selectedEquip.value);
@@ -211,8 +238,10 @@
            public EquipStarUpgradeMaterialBehaviour m_Material5;
            public EquipStarUpgradeMaterialBehaviour m_MaterialSpecial;
            public EquipStarUpgradeMaterialBehaviour this[int index] {
                get {
            public EquipStarUpgradeMaterialBehaviour this[int index]
            {
                get
                {
                    switch (index)
                    {
                        case 1: