using System; 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 Clear() { _suitInfoBySuitIdDic.Clear(); } public void InitServerData(SuitFosterData suitFosterData) { if (!_suitInfoBySuitIdDic.ContainsKey(suitFosterData.suitId)) { _suitInfoBySuitIdDic.Add(suitFosterData.suitId, suitFosterData); } _suitInfoBySuitIdDic[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, maintainBonusSteps); } public void SetMakeNewSuit(int suitId, int makeNewSuit) { _suitInfoBySuitIdDic[suitId].makeNewState = makeNewSuit; EventAgent.DispatchEvent(ConstMessage.MAKE_NEW_SUIT); } public SuitFosterData GetSuitFosterData(int suitId) { if (_suitInfoBySuitIdDic.ContainsKey(suitId)) { return _suitInfoBySuitIdDic[suitId]; } else { SuitFosterData suitFosterData = new SuitFosterData() { suitId = suitId, maintainStep = 0, maintainBonusSteps = new List(), makeNewState = 0 }; InitServerData(suitFosterData); return suitFosterData; } } //加成属性服装占比 public List> GetPropertyPercentData(int suitId, int index) { List cfgs = SuitFosterCfgArray.Instance.GetCfgs(suitId); Dictionary _data = new Dictionary(); for (int i = 0; i < cfgs.Count; i++) { int[][] partsArr = cfgs[i].partsArr; for (int j = 0; j < partsArr.Length; j++) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(partsArr[j][0]); // int id = ItemTypeCfgArray.Instance.GetCfg(itemCfg.subType).i; if (index < cfgs.Count && index == i || index >= cfgs.Count) { int num = 0; if (!_data.ContainsKey(itemCfg.id)) { _data.Add(itemCfg.id, num); } num = _data[itemCfg.id]; num = num + partsArr[j][1]; _data[itemCfg.id] = num; } } } ICollection keys = _data.Keys; Dictionary _dataPercent = new Dictionary(); foreach (int key in keys) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(key); float mainScore = ItemDataManager.GetItemScoreValue(key, itemCfg.mainScore); float addScore = _data[key]; float percent = (addScore / mainScore * 100); _dataPercent.Add(key, percent.ToString("0.00")); } return new List>(_dataPercent); } //获取当前阶段部件属性总值 public void GetPropertyData(int suitId, int index, out SortedList _propertyData, out SortedList _addPropertyData) { _propertyData = new SortedList(); _addPropertyData = new SortedList(); int[] parts = SuitCfgArray.Instance.GetCfg(suitId).partsArr; for (int i = 0; i < parts.Length; i++) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(parts[i]); // Debug.Log("zoya:" + itemCfg.id + " " + ItemDataManager.GetScore(itemCfg.id, 1) + " " + ItemDataManager.GetScore(itemCfg.id, 2) + " " + ItemDataManager.GetScore(itemCfg.id, 3) + " " + ItemDataManager.GetScore(itemCfg.id, 4)); 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[score] = count; } else { _propertyData.Add(score, count); } } } List cfgs = SuitFosterCfgArray.Instance.GetCfgs(suitId); for (int i = 0; i < cfgs.Count; i++) { int[][] partsArr = cfgs[i].partsArr; for (int j = 0; j < partsArr.Length; j++) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(partsArr[j][0]); for (int k = 0; k < ConstDressUpScoreType.scoreTypeList().Count; k++) { int score = k + 1; if (index < cfgs.Count && index == i || index >= cfgs.Count) { int addCount = 0; if (score == itemCfg.mainScore) { addCount = partsArr[j][1]; } if (_addPropertyData.ContainsKey(score)) { addCount = addCount + (int)_addPropertyData[score]; _addPropertyData[score] = addCount; } else { _addPropertyData.Add(score, addCount); } } } } } } //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 cfgs = SuitFosterCfgArray.Instance.GetCfgs(suitId); List list = new List(cfgs); for (int i = list.Count - 1; i >= 0; i--) { if (list[i].rewardsArr.Length == 0) { list.RemoveAt(i); } } list = SortRewardList(list, suitId); return list; } private List SortRewardList(List list, int suitId) { SuitFosterData fosterData = GetSuitFosterData(suitId); List cfgs = SuitFosterCfgArray.Instance.GetCfgs(suitId); list.Sort((SuitFosterCfg a, SuitFosterCfg b) => { int indexA = cfgs.IndexOf(a) + 1; int indexB = cfgs.IndexOf(b) + 1; if (fosterData.maintainBonusSteps.IndexOf(indexA) >= 0 && fosterData.maintainBonusSteps.IndexOf(indexB) < 0) { return 1; } else if (fosterData.maintainBonusSteps.IndexOf(indexA) < 0 && fosterData.maintainBonusSteps.IndexOf(indexB) >= 0) { return -1; } return 0; }); return list; } //奖励领取状态 public bool GetRewardState(int suitId, int step) { SuitFosterData fosterData = GetSuitFosterData(suitId); return fosterData.maintainBonusSteps.IndexOf(step) >= 0; } //当前奖励状态:state 0:未领1:不可领2:已完成 //当前奖励Index public void GetFosterRewardState(int suitId, out int state, out int index) { index = 0; SuitFosterData fosterData = GetSuitFosterData(suitId); int finishStep = fosterData.maintainStep; List cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId); for (int i = 0; i < cfg.Count; i++) { if (cfg[i].rewardsArr.Length == 0) continue; index = i; int _step = i + 1; if (_step <= finishStep && fosterData.maintainBonusSteps.IndexOf(_step) < 0) { state = 0; return; } if (_step > finishStep) { state = 1; return; } } state = 2; } } }