using System.Collections; using System.Collections.Generic; using ET; using UnityEngine; namespace GFGGame { public class SuitFosterDataManager : SingletonBase { public string[] stepNames = { "浆洗", "晾晒", "熏香", "熨烫", "整饬" }; private Dictionary _suitInfoBySuitIdDic = new Dictionary(); public void InitData() { _suitInfoBySuitIdDic.Clear(); } public void InitServerData(SuitFosterData suitFosterData) { _suitInfoBySuitIdDic.Add(suitFosterData.suitId, suitFosterData); } public void SetMaintainSuit(int suitId, int maintainStep) { _suitInfoBySuitIdDic[suitId].maintainStep = maintainStep; // _suitInfoBySuitIdDic[suitId].maintainBonusSteps = maintainBonusSteps; EventAgent.DispatchEvent(ConstMessage.MAINTAIN_SUIT); } public void SetMaintainBonusSteps(int suitId, int maintainBonusSteps) { _suitInfoBySuitIdDic[suitId].maintainBonusSteps.Add(maintainBonusSteps); EventAgent.DispatchEvent(ConstMessage.GET_MAINTAIN_SUIT_BONUS); } public void SetMakeNewSuit(int suitId, int makeNewSuit) { _suitInfoBySuitIdDic[suitId].makeNewState = makeNewSuit; EventAgent.DispatchEvent(ConstMessage.MAKE_NEW_SUIT); } public SuitFosterData GetSuitFosterData(int suitId) { return _suitInfoBySuitIdDic.ContainsKey(suitId) ? _suitInfoBySuitIdDic[suitId] : new SuitFosterData() { suitId = suitId, maintainStep = 0, maintainBonusSteps = new List(), makeNewState = 0 }; } //加成属性服装占比 public List> GetPropertyPercentData(int suitId, int index) { SuitFosterCfg cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId)[index]; Dictionary _data = new Dictionary(); 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 _dataPercent = new Dictionary(); 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>(_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; string key = score.ToString(); int count = ItemDataManager.GetScore(itemCfg.id, score); if (propertyData.ContainsKey(key)) { count = count + (int)propertyData[key]; propertyData[key] = count; } else { propertyData.Add(key, count); } } } return propertyData; } //0:已完成,1:养护中,2未养护 public int GetFosterState(int suitId, int index) { SuitFosterData suitFosterData = this.GetSuitFosterData(suitId); if (index < suitFosterData.maintainStep) { return 0; } else if (index == suitFosterData.maintainStep) { return 1; } return 2; } public List GetSuitFosterRewards(int suitId) { List list = new List(); SuitFosterCfg[] cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId); for (int i = 0; i < cfg.Length; i++) { if (cfg[i].rewardsArr.Length > 0) { list.Add(cfg[i]); } } return list; } private List SortRewardList(List list) { list.Sort((SuitFosterCfg a, SuitFosterCfg b) => { return 0; }); return list; } } }