ソースを参照

套装养护属性相关

zhaoyang 3 年 前
コミット
41f1b2260c

+ 1 - 1
GameClient/Assets/Game/CSShare

@@ -1 +1 @@
-Subproject commit 745893dc0cb8b50867e3e2eb2591cf9e318a036d
+Subproject commit 1415bfa4a3acf82b074db37d31dc5bccef29a5a1

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Constant/ConstDressUpScoreType.cs

@@ -25,12 +25,12 @@ namespace GFGGame
         /// 返回属性数组
         /// </summary>
         /// <returns></returns>
-        public static SortedList sourceTypeList ()
+        public static SortedList scoreTypeList()
         {
-            if (ConstDressUpScoreType._sourceTypeList==null)
+            if (ConstDressUpScoreType._sourceTypeList == null)
             {
                 ConstDressUpScoreType._sourceTypeList = new SortedList();
-                ConstDressUpScoreType._sourceTypeList.Add(ConstDressUpScoreType.SCORE_FENG,ConstDressUpScoreType.TITLE_FENG);
+                ConstDressUpScoreType._sourceTypeList.Add(ConstDressUpScoreType.SCORE_FENG, ConstDressUpScoreType.TITLE_FENG);
                 ConstDressUpScoreType._sourceTypeList.Add(ConstDressUpScoreType.SCORE_HUA, ConstDressUpScoreType.TITLE_HUA);
                 ConstDressUpScoreType._sourceTypeList.Add(ConstDressUpScoreType.SCORE_XUE, ConstDressUpScoreType.TITLE_XUE);
                 ConstDressUpScoreType._sourceTypeList.Add(ConstDressUpScoreType.SCORE_YUE, ConstDressUpScoreType.TITLE_YUE);

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Constant/ConstStoreId.cs

@@ -3,7 +3,7 @@ using UnityEngine;
 
 namespace GFGGame
 {
-    public class ConstStoreId 
+    public class ConstStoreId
     {
         public const int DIAMOND_STORE_ID = 1;//钻石商店
         public const int CLOTHING_STORE_ID = 2;//服装店
@@ -26,7 +26,7 @@ namespace GFGGame
                 ConstStoreId._storeTitleList.Add(ConstStoreId.CLOTHING_STORE_ID, ConstStoreId.CLOTHING_STORE_TITLE);
                 ConstStoreId._storeTitleList.Add(ConstStoreId.LUCKY_BOX_STORE_ID, ConstStoreId.LUCKY_BOX_STORE_TITLE);
                 ConstStoreId._storeTitleList.Add(ConstStoreId.LUCKY_BOX_ACTIVITY_STORE_ID, ConstStoreId.LUCKY_BOX_ACTIVITY_STORE_TITLE);
-                
+
             }
             return ConstStoreId._storeTitleList;
         }

+ 21 - 0
GameClient/Assets/Game/HotUpdate/Data/DressUpMenuSuitDataManager.cs

@@ -1,6 +1,8 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using ET;
+
 namespace GFGGame
 {
     public class DressUpMenuSuitDataManager
@@ -35,6 +37,25 @@ namespace GFGGame
                 }
             }
         }
+        public static void SetSuitInfo(List<SuitInfoProto> suitInfoList)
+        {
+            if (suitInfoList != null)
+            {
+                foreach (SuitInfoProto suitInfo in suitInfoList)
+                {
+                    SuitFosterData suitFosterData = new SuitFosterData()
+                    {
+                        suitId = suitInfo.SuitId,
+                        maintainStep = suitInfo.MaintainStep,
+                        maintainBonusSteps = suitInfo.MaintainBonusSteps,
+                        makeNewState = suitInfo.MakeNewState
+                    };
+                    SuitFosterDataManager.Instance.InitServerData(suitFosterData);
+                }
+                EventAgent.DispatchEvent(ConstMessage.GET_SUIT_INFOS);
+            }
+        }
+
 
         public static void Add(int value)
         {

+ 18 - 1
GameClient/Assets/Game/HotUpdate/Data/ItemDataManager.cs

@@ -1,4 +1,6 @@
+using System;
 using System.Collections.Generic;
+using System.Reflection;
 using ET;
 using FairyGUI;
 using UnityEngine;
@@ -9,6 +11,7 @@ namespace GFGGame
     public class ItemDataManager
     {
         private static Dictionary<int, ItemData> _dataDic = new Dictionary<int, ItemData>();
+        delegate object MemberGetDelegate(ItemCfg p);
 
         public static void Add(int itemID, int itemNum)
         {
@@ -81,7 +84,7 @@ namespace GFGGame
         }
 
         public static int GetItemNum(int itemId)
-{
+        {
             int numericType = NumericUtil.GetNumericTypeByItemId(itemId);
             if (numericType != 0)
             {
@@ -152,5 +155,19 @@ namespace GFGGame
             }
             return 0;
         }
+
+        public static int GetScore(int itemId, int scoreType)
+        {
+            var cfg = ItemCfgArray.Instance.GetCfg(itemId);
+            Type type = typeof(ItemCfg);
+            PropertyInfo property = type.GetProperty("score" + scoreType);
+            MemberGetDelegate memberGet = (MemberGetDelegate)System.Delegate.CreateDelegate(typeof(MemberGetDelegate), property.GetGetMethod());
+            System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew();
+            var scoreBase = (int)memberGet(cfg);
+            int index = scoreType - 1;
+            var scoreadd = !_dataDic.ContainsKey(itemId) || _dataDic[itemId].AddScoresArr.Length == 0 ? 0 : _dataDic[itemId].AddScoresArr[index];
+            var percentAdd = !_dataDic.ContainsKey(itemId) || _dataDic[itemId].AddPercentArr.Length == 0 ? 0 : _dataDic[itemId].AddPercentArr[index];
+            return CalculateUtil.GetItemScore(scoreBase, percentAdd, scoreadd);
+        }
     }
 }

+ 81 - 17
GameClient/Assets/Game/HotUpdate/Data/SuitFosterDatamanager.cs

@@ -1,48 +1,112 @@
+using System.Collections;
 using System.Collections.Generic;
 using ET;
+using UnityEngine;
 
 namespace GFGGame
 {
     public class SuitFosterDataManager : SingletonBase<SuitFosterDataManager>
     {
 
-        private Dictionary<int, SuitInfoProto> _suitInfoBySuitIdDic = new Dictionary<int, SuitInfoProto>();
+        private Dictionary<int, SuitFosterData> _suitInfoBySuitIdDic = new Dictionary<int, SuitFosterData>();
 
         public void InitData()
         {
             _suitInfoBySuitIdDic.Clear();
         }
 
-        public void InitServerData(List<SuitInfoProto> suitInfoList)
+        public void InitServerData(SuitFosterData suitFosterData)
         {
-            if (suitInfoList != null)
-            {
-                foreach (SuitInfoProto suitInfo in suitInfoList)
-                {
-                    _suitInfoBySuitIdDic.Add(suitInfo.SuitId, suitInfo);
-                }
-            }
-            EventAgent.DispatchEvent(ConstMessage.GET_SUIT_INFOS);
+            _suitInfoBySuitIdDic.Add(suitFosterData.suitId, suitFosterData);
         }
-        public void SetMaintainSuit(int suitId, M2C_MaintainSuit maintainSuit)
+        public void SetMaintainSuit(int suitId, int maintainStep)
         {
-            _suitInfoBySuitIdDic[suitId].MaintainStep = maintainSuit.MaintainStep;
-            _suitInfoBySuitIdDic[suitId].MaintainBonusSteps = maintainSuit.MaintainBonusSteps;
+            _suitInfoBySuitIdDic[suitId].maintainStep = maintainStep;
+            // _suitInfoBySuitIdDic[suitId].maintainBonusSteps = maintainBonusSteps;
             EventAgent.DispatchEvent(ConstMessage.MAINTAIN_SUIT);
 
         }
-        public void SetMaintainBonusSteps(int suitId, M2C_GetMaintainSuitBonus getMaintainSuitBonus)
+        public void SetMaintainBonusSteps(int suitId, int maintainBonusSteps)
         {
-            _suitInfoBySuitIdDic[suitId].MaintainBonusSteps = getMaintainSuitBonus.MaintainBonusSteps;
+            _suitInfoBySuitIdDic[suitId].maintainBonusSteps.Add(maintainBonusSteps);
             EventAgent.DispatchEvent(ConstMessage.GET_MAINTAIN_SUIT_BONUS);
 
         }
 
-        public void SetMakeNewSuit(int suitId, M2C_MakeNewSuit makeNewSuit)
+        public void SetMakeNewSuit(int suitId, int makeNewSuit)
         {
-            _suitInfoBySuitIdDic[suitId].MakeNewState = makeNewSuit.MakeNewState;
+            _suitInfoBySuitIdDic[suitId].makeNewState = makeNewSuit;
             EventAgent.DispatchEvent(ConstMessage.MAKE_NEW_SUIT);
+        }
+
 
+        public SuitFosterData GetSuitFosterData(int suitId)
+        {
+            return _suitInfoBySuitIdDic[suitId];
         }
+
+        //加成属性服装占比
+        public List<KeyValuePair<string, int>> GetPropertyPercentData(int suitId, int index)
+        {
+            SuitFosterCfg cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId)[index];
+            Dictionary<string, int> _data = new Dictionary<string, int>();
+            int count = 0;
+            for (int i = 0; i < cfg.partsArr.Length; i++)
+            {
+                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.partsArr[i][0]);
+                string type = ItemTypeCfgArray.Instance.GetCfg(itemCfg.subType).name;
+                int num = 0;
+                if (_data.ContainsKey(type))
+                {
+                    num = _data[type];
+                }
+                num = num + cfg.partsArr[i][1];
+                _data.Add(type, num);
+
+                count += cfg.partsArr[i][1];
+            }
+
+            int percentCount = 0;
+            int dicIndex = 0;
+            ICollection keys = _data.Keys;
+            Dictionary<string, int> _dataPercent = new Dictionary<string, int>();
+            foreach (string key in keys)
+            {
+                if (dicIndex == _data.Count - 1)
+                {
+                    _dataPercent.Add(key, 100 - percentCount);
+                }
+                else
+                {
+                    _dataPercent.Add(key, Mathf.FloorToInt(_data[key] * 100 / count));
+                }
+                percentCount += _dataPercent[key];
+                dicIndex++;
+            }
+            return new List<KeyValuePair<string, int>>(_dataPercent);
+        }
+
+        public SortedList GetPropertyData(int suitId, int index)
+        {
+            SortedList propertyData = new SortedList();
+            int[][] partsArr = SuitFosterCfgArray.Instance.GetCfgs(suitId)[index].partsArr;
+            for (int i = 0; i < partsArr.Length; i++)
+            {
+                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(partsArr[i][0]);
+                for (int j = 0; j < ConstDressUpScoreType.scoreTypeList().Count; j++)
+                {
+                    int score = j + 1;
+                    int count = ItemDataManager.GetScore(itemCfg.id, score);
+                    if (propertyData.ContainsKey(score))
+                    {
+                        count = count + (int)propertyData[score];
+                    }
+
+                    propertyData.Add(score, count);
+                }
+            }
+            return propertyData;
+        }
+
     }
 }

+ 5 - 5
GameClient/Assets/Game/HotUpdate/Data/VO/ItemData.cs

@@ -11,7 +11,7 @@ namespace GFGGame
         public bool isOnceBonus;
 
         public int[] AddScoresArr;
-        public int[] AddPercentArr; 
+        public int[] AddPercentArr;
         delegate object MemberGetDelegate(ItemCfg p);
 
         public void Reset()
@@ -34,16 +34,16 @@ namespace GFGGame
 
         public int GetScore(int scoreType)
         {
-            var cfg = ItemCfgArray.Instance.GetCfg(id); 
+            var cfg = ItemCfgArray.Instance.GetCfg(id);
             Type type = typeof(ItemCfg);
             PropertyInfo property = type.GetProperty("score" + scoreType);
             MemberGetDelegate memberGet = (MemberGetDelegate)System.Delegate.CreateDelegate(typeof(MemberGetDelegate), property.GetGetMethod());
             Stopwatch stopwatch = Stopwatch.StartNew();
             var scoreBase = (int)memberGet(cfg);
             int index = scoreType - 1;
-            var scoreadd = AddScoresArr[index];
-            var percentAdd = AddPercentArr[index];
-            return CalculateUtil.GetItemScore(scoreBase, percentAdd, scoreadd); 
+            var scoreadd = AddScoresArr.Length == 0 ? 0 : AddScoresArr[index];
+            var percentAdd = AddPercentArr.Length == 0 ? 0 : AddPercentArr[index];
+            return CalculateUtil.GetItemScore(scoreBase, percentAdd, scoreadd);
         }
     }
 }

+ 25 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/SuitFosterData.cs

@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class SuitFosterData
+    {
+
+        /// <summary>
+        /// 套装Id
+        /// </summary>
+        public int suitId;
+        /// <summary>
+        /// 当前已养护最高阶段
+        /// </summary>
+        public int maintainStep;
+        /// <summary>
+        /// 养护奖励已领取阶段列表
+        /// </summary>
+        public List<int> maintainBonusSteps;
+        /// <summary>
+        /// 换新状态0:未焕新
+        /// </summary>
+        public int makeNewState;
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/SuitFosterData.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 84de56318bd1c8c44a15b938a61e7792
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/Card/CardFilterView.cs

@@ -18,7 +18,7 @@ namespace GFGGame
     {
         private UI_CardFilterUI _ui;
 
-        private SortedList[] _dataList = { ConstCardSubType.CardSubTypeList(), ConstDressUpScoreType.sourceTypeList(), ConstCardState.CardStateList() };
+        private SortedList[] _dataList = { ConstCardSubType.CardSubTypeList(), ConstDressUpScoreType.scoreTypeList(), ConstCardState.CardStateList() };
         public override void Dispose()
         {
             base.Dispose();
@@ -61,7 +61,7 @@ namespace GFGGame
         private void UpdateList()
         {
             _ui.m_list0.numItems = ConstCardSubType.CardSubTypeList().Count;
-            _ui.m_list1.numItems = ConstDressUpScoreType.sourceTypeList().Count;
+            _ui.m_list1.numItems = ConstDressUpScoreType.scoreTypeList().Count;
             _ui.m_list2.numItems = ConstCardState.CardStateList().Count;
         }
         /// <summary>

+ 22 - 12
GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitPropertyShowView.cs

@@ -1,12 +1,19 @@
+using System;
+using System.Collections;
 using System.Collections.Generic;
+using System.Linq;
 using FairyGUI;
 using UI.ClothingFoster;
+using UnityEngine;
+
 namespace GFGGame
 {
     public class SuitPropertyShowView : BaseWindow
     {
         private UI_SuitPropertyShowUI _ui;
-        private Dictionary<string, int> _data = new Dictionary<string, int>();
+        // private Dictionary<string, int> _data = new Dictionary<string, int>();
+        // List<int> _dataList = new List<int>(); StudentDictionary.Values.ToList();
+        List<KeyValuePair<string, int>> _dataList;// = new List<KeyValuePair<string, int>>();
         public override void Dispose()
         {
 
@@ -22,7 +29,8 @@ namespace GFGGame
             this.viewCom = _ui.target;
             this.viewCom.Center();
             this.modal = true;
-            // viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_listPropertyShow.itemRenderer = ListPropertyShowItemRender;
 
         }
 
@@ -31,21 +39,23 @@ namespace GFGGame
             base.OnShown();
             int suitId = (int)(this.viewData as object[])[0];
             int index = (int)(this.viewData as object[])[1];
-            SuitFosterCfg cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId)[index];
-            for (int i = 0; i < cfg.partsArr.Length; i++)
-            {
-                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.partsArr[i][0]);
-                string type = ItemTypeCfgArray.Instance.GetCfg(itemCfg.subType).name;
-                // if(!_data.ContainsKey(type))
-                // int 
-                // _data.Add()
-            }
+
+
+            _dataList = SuitFosterDataManager.Instance.GetPropertyPercentData(suitId, index);
+            _ui.m_listPropertyShow.numItems = _dataList.Count;
         }
 
+        private void ListPropertyShowItemRender(int index, GObject obj)
+        {
+            UI_ListPropertyShowItem item = UI_ListPropertyShowItem.Proxy(obj);
+
+            item.m_txtShow.text = string.Format("{0}:  {1}%", _dataList[index].Key, _dataList[index].Value);
+
+        }
         protected override void OnHide()
         {
             base.OnHide();
-
+            // _dataList.Clear();
         }
     }
 }

+ 6 - 2
GameClient/Assets/Game/HotUpdate/Views/ClothingFoster/SuitView.cs

@@ -1,3 +1,4 @@
+using System.Collections;
 using System.Collections.Generic;
 using FairyGUI;
 using UI.ClothingFoster;
@@ -14,8 +15,9 @@ namespace GFGGame
         private GoWrapper _wrapper;
         private DressUpObjDataCache _dressUpObjDataCache;
         private bool _actionIsPic;
-        private List<int> _suitIds;
 
+        private List<int> _suitIds;//已解锁套装列表
+        private SortedList _propertyList;
         private int _suitId;
         private int _index;
 
@@ -85,6 +87,8 @@ namespace GFGGame
             UpdateSuitView();
 
             _ui.m_listFoster.numItems = SuitFosterCfgArray.Instance.GetCfgs(_suitId).Length;
+            _propertyList = SuitFosterDataManager.Instance.GetPropertyData(_suitId, _index);
+            _ui.m_listProperty.numItems = _propertyList.Count;
         }
         private void UpdateArrows()
         {
@@ -137,7 +141,7 @@ namespace GFGGame
         {
             UI_ListFosterItem item = UI_ListFosterItem.Proxy(obj);
             item.target.data = index;
-            if (index == 0)
+            if (SuitFosterDataManager.Instance.GetSuitFosterData(_suitId).maintainStep == index)
             {
                 _index = index;
             }

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

@@ -63,7 +63,7 @@ namespace GFGGame
         private void UpdateView()
         {
             _ui.m_listRarity.numItems = ConstDressRarity.DressRarityList().Count;
-            _ui.m_listScore.numItems = ConstDressUpScoreType.sourceTypeList().Count;
+            _ui.m_listScore.numItems = ConstDressUpScoreType.scoreTypeList().Count;
             _ui.m_listTag.numItems = ConstDressTag.DressTagList().Count;
         }
 
@@ -76,7 +76,7 @@ namespace GFGGame
         private void RenderListScoreItem(int index, GObject obj)
         {
             GButton item = obj.asButton;
-            item.text = ConstDressUpScoreType.sourceTypeList()[index + 1].ToString();
+            item.text = ConstDressUpScoreType.scoreTypeList()[index + 1].ToString();
             item.data = index + 1;
         }
         private void RenderListTagItem(int index, GObject obj)