| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 | 
							- using ET;
 
- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- using System.Text.RegularExpressions;
 
- namespace GFGGame
 
- {
 
-     public class CollectPartDataManager : SingletonBase<CollectPartDataManager>
 
-     {
 
-         //部位数量
 
-         public const int Count = 8;
 
-         //普通最高段位
 
-         public int MaxNormalRank = 5;
 
-         //特殊最高段位
 
-         public int MaxSpecialRank = 3;
 
-         //最高等级
 
-         public int MaxLevel = 9;
 
-         //加成比值
 
-         public int AddtitionRatio = 100;
 
-         //搭配部位分类
 
-         public Dictionary<int, List<float>> partScoreListDic = new Dictionary<int, List<float>>();
 
-         //部位名
 
-         public Dictionary<int, string> partNameDic = new Dictionary<int, string>() 
 
-         {    [1] = "连衣裙或上下装及内搭",
 
-              [2] = "发型",
 
-              [3] = "外套",
 
-              [4] = "袜子",
 
-              [5] = "鞋子",
 
-              [6] = "饰品",
 
-              [7] = "手持物",
 
-              [99] = "所有",
 
-               };
 
-         //部位图片
 
-         public Dictionary<int, string> partImage = new Dictionary<int, string>
 
-         {
 
-             [1] = "part1",
 
-             [2] = "hz_fenleitu_1",
 
-             [3] = "hz_fenleitu_12",
 
-             [4] = "hz_fenleitu_7",
 
-             [5] = "hz_fenleitu_8",
 
-             [6] = "hz_fenleitu_9",
 
-             [7] = "hz_fenleitu_10",
 
-             [99] = "part99",
 
-         };
 
-         //数据
 
-         public Dictionary<int, List<int>> CollectPartDataDic = new Dictionary<int, List<int>>();
 
-         //临时数据,后续通过服务器获取
 
-         public void UpdateDic()
 
-         {
 
-             CollectPartDataDic.Clear();
 
-             CollegeBoostCfg collectcfg;
 
-             for (int i = 1; i <= Count; i++)
 
-             {
 
-                 List<int> item = new List<int>() { 3, 9 };
 
-                 if (i == Count)
 
-                 {
 
-                     collectcfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(99, item[0], item[1]);
 
-                     if (collectcfg == null)
 
-                     {
 
-                         item.Add(0);
 
-                     }
 
-                     else
 
-                     {
 
-                         item.Add(collectcfg.value);
 
-                     }
 
-                     if (CollectPartDataDic.ContainsKey(99))
 
-                     {
 
-                         CollectPartDataDic[99] = item;
 
-                     }
 
-                     else
 
-                     {
 
-                         CollectPartDataDic.Add(99, item);
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     collectcfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(i, item[0], item[1]);
 
-                     if (collectcfg == null)
 
-                     {
 
-                         item.Add(0);
 
-                     }
 
-                     else
 
-                     {
 
-                         item.Add(collectcfg.value);
 
-                     }
 
-                     if (CollectPartDataDic.ContainsKey(i))
 
-                     {
 
-                         CollectPartDataDic[i] = item;
 
-                     }
 
-                     else
 
-                     {
 
-                         CollectPartDataDic.Add(i, item);
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 穿戴部件的搭配加成
 
-         /// </summary>
 
-         public float GetEquipScoresWithPartId(int itemID)
 
-         {
 
-             CollegeSubTypesCfg[] typeCfgs = CollegeSubTypesCfgArray.Instance.dataArray;
 
-             float addNum = 0;
 
-             for (int j = 0; j < typeCfgs.Length; j++)
 
-             {
 
-                 CollegeSubTypesCfg cfg = typeCfgs[j];
 
-                 for (int k = 0; k < cfg.subTypesArr.Length; k++)
 
-                 {
 
-                     ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
 
-                     if (itemCfg.subType == cfg.subTypesArr[k])
 
-                     {
 
-                         int partIndex = cfg.AdditionSite;
 
-                         int partIndexCommon = 0;
 
-                         partIndexCommon = partIndex;
 
-                         int level = CollectPartDataDic[partIndex][0];
 
-                         int levelNum = CollectPartDataDic[partIndex][1];
 
-                         if(levelNum == 0)
 
-                         {
 
-                             addNum += 0;
 
-                             break;
 
-                         }
 
-                         CollegeBoostCfg collegeCfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(partIndex, level, levelNum);
 
-                         addNum += (float)collegeCfg.value / 10000;
 
-                         break;
 
-                     }
 
-                 }
 
-             }
 
-             return addNum + 1;
 
-         }
 
-         //判断部分是否可以升级
 
-         public bool CheckPartCanUP(int pardId)
 
-         {
 
-             int rankIndex = CollectPartDataDic[pardId][0];
 
-             int rankLv = CollectPartDataDic[pardId][1];
 
-             if (rankLv + 1 > CollectPartDataManager.Instance.MaxLevel)
 
-             {
 
-                 rankIndex += 1;
 
-                 rankLv = 1;
 
-             }
 
-             else
 
-             {
 
-                 rankLv += 1;
 
-             }
 
-             CollegeBoostCfg collegeBoostCfg = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(pardId,rankIndex,rankLv);
 
-             if (collegeBoostCfg == null)
 
-             {
 
-                 return false;
 
-             }
 
-             for (int i = 0; i < collegeBoostCfg.consumeArr.Length; i++)
 
-             {
 
-                 ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(collegeBoostCfg.consumeArr[i][0]);
 
-                 ItemData itemCount;
 
-                 long count;
 
-                 if (itemCfg.itemType == ConstItemType.DRESS_UP)
 
-                 {
 
-                     count = ItemDataManager.GetItemNum(collegeBoostCfg.consumeArr[i][0]);
 
-                 }
 
-                 else
 
-                 {
 
-                     if (BagDataManager.Instance.GetBagData().TryGetValue(collegeBoostCfg.consumeArr[i][0], out itemCount))
 
-                     {
 
-                         count = itemCount.num;
 
-                     }
 
-                     else
 
-                     {
 
-                         count = 0;
 
-                     }
 
-                 }
 
-                 if(count < collegeBoostCfg.consumeArr[i][1])
 
-                 {
 
-                     return false;
 
-                 }
 
-             }
 
-             return true;
 
-         }
 
-         //判断所有已开启部位是否可以升级
 
-         public bool CheckAllOpenPartCanUP()
 
-         {
 
-             if(!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ClothingSelectView).Name, false))
 
-             {
 
-                 return false;
 
-             }
 
-             foreach(var item in CollectPartDataDic)
 
-             {
 
-                 if(IsOpenRank(item.Key))
 
-                 {
 
-                     if(CheckPartCanUP(item.Key))
 
-                     {
 
-                         return true;
 
-                     }
 
-                 }
 
-             }
 
-             return false;
 
-         }
 
-         public bool IsOpenRank(int partIndex, int levelNum = 9)
 
-         {
 
-             List<int> openList;
 
-             bool isRank = false;
 
-             bool isLevel = false;
 
-             bool isPassStory = false;
 
-             CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);
 
-             openList = GetOpenList(partIndex);
 
-             //判断段位
 
-             if (openitem.OpenPreconditionArr == null || openitem.OpenPreconditionArr.Length == 0)
 
-             {
 
-                 isRank = true;
 
-             }
 
-             else
 
-             {
 
-                 if (CollectPartDataDic[openList[0]][0] >= openList[1])
 
-                 {
 
-                     if (CollectPartDataDic[openList[0]][1] >= openList[2])
 
-                     {
 
-                         isRank = true;
 
-                     }
 
-                 }
 
-             }
 
-             //判断等级
 
-             if (RoleDataManager.lvl >= openitem.needRoleLv)
 
-             {
 
-                 isLevel = true;
 
-             }
 
-             //判断关卡
 
-             if (openitem.needStoryLevelId == 0 || InstanceZonesDataManager.CheckLevelPass(openitem.needStoryLevelId))
 
-             {
 
-                 isPassStory = true;
 
-             }
 
-             else
 
-             {
 
-                 isPassStory = false;
 
-             }
 
-             return isRank && isLevel && isPassStory;
 
-         }
 
-         public List<int> GetOpenList(int partIndex)
 
-         {
 
-             List<int> openList = new List<int>();
 
-             string pattern = @"\d+";
 
-             CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);
 
-             for (int i = 0; i < openitem.OpenPreconditionArr.Length; i++)
 
-             {
 
-                 MatchCollection matches = Regex.Matches(openitem.OpenPreconditionArr[i], pattern);
 
-                 foreach (Match match in matches)
 
-                 {
 
-                     openList.Add(int.Parse(match.Value));
 
-                 }
 
-             }
 
-             return openList;
 
-         }
 
-     }
 
- }
 
 
  |