using System.Collections.Generic; namespace GFGGame { public class DecomposeDataManager : SingletonBase { Dictionary> _decomposeData = new Dictionary>();//所有数量大于1的换装部件数据 List _rewardList = new List(); public const int MaxCount = 10; public void Clear() { _decomposeData.Clear(); } public void Add(int itemId) { int rarity = ItemCfgArray.Instance.GetCfg(itemId).rarity; if (!_decomposeData.ContainsKey(rarity)) { _decomposeData.Add(rarity, new List()); } int count = ItemCanDecomposeCount(itemId); if (_decomposeData[rarity].IndexOf(itemId) < 0 && count > 0) { _decomposeData[rarity].Add(itemId); } } public void Remove(int itemId) { int rarity = ItemCfgArray.Instance.GetCfg(itemId).rarity; int count = ItemCanDecomposeCount(itemId); if (_decomposeData.ContainsKey(rarity) && _decomposeData[rarity].IndexOf(itemId) >= 0 && count <= 0) { _decomposeData[rarity].Remove(itemId); } } public List GetDecomposeDataByRarity(int rarity) { return _decomposeData[rarity]; } public List GetRewardList() { if (_rewardList.Count == 0) { DecomposeCfg[] cfgs = DecomposeCfgArray.Instance.dataArray; for (int i = 0; i < cfgs.Length; i++) { for (int j = 0; j < cfgs[i].itemsArr.Length; j++) { if (_rewardList.IndexOf(cfgs[i].itemsArr[j][0]) < 0) { _rewardList.Add(cfgs[i].itemsArr[j][0]); } } } } return _rewardList; } //物品可分解的数量 public int ItemCanDecomposeCount(int itemId) { return ItemDataManager.GetItemNum(itemId) - 1; } } }