12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using System.Collections.Generic;
- using System.Linq;
- using GFGGame;
- namespace GFGGame
- {
- public class BagDataManager : SingletonBase<BagDataManager>
- {
- private Dictionary<int, ItemData> _bagDataDic = new Dictionary<int, ItemData>();//背包数据字典
- private List<ItemData> _bagDatas = new List<ItemData>();//背包数据列表
- public List<ItemData> BagDatas
- {
- get
- {
- return _bagDatas;
- }
- }
- public void Clear()
- {
- _bagDatas.Clear();
- _bagDataDic.Clear();
- }
- public void Add(ItemData itemData)
- {
- if (!_bagDataDic.ContainsKey(itemData.id))
- {
- _bagDataDic.Add(itemData.id, itemData);
- }
- else
- {
- _bagDataDic[itemData.id] = itemData;
- }
- SetBagDatas();
- }
- public void Remove(int itemId)
- {
- if (_bagDataDic.ContainsKey(itemId))
- {
- _bagDataDic.Remove(itemId);
- SetBagDatas();
- }
- }
- private void SetBagDatas()
- {
- _bagDatas = _bagDataDic.Values.ToList<ItemData>();
- _bagDatas.Sort((ItemData a, ItemData b) =>
- {
- ItemCfg itemCfgA = ItemCfgArray.Instance.GetCfg(a.id);
- ItemCfg itemCfgB = ItemCfgArray.Instance.GetCfg(b.id);
- if (itemCfgA.subType > itemCfgB.subType) return -1;
- if (itemCfgA.subType < itemCfgB.subType) return 1;
- if (itemCfgA.rarity > itemCfgB.rarity) return -1;
- if (itemCfgA.rarity < itemCfgB.rarity) return 1;
- return itemCfgA.id - itemCfgB.id;
- });
- }
- public int GetItemIndex(int itemId, int curSelectIndex)
- {
- if (_bagDataDic.Count == 0) return -1;//背包无数数据
- if (itemId < 0 || curSelectIndex < 0) return 0;//未选中物品,默认选中第一个
- if (!_bagDataDic.ContainsKey(itemId))//已选中物品但背包无数据
- {
- if (curSelectIndex < _bagDatas.Count)
- {
- return curSelectIndex;
- }
- else
- {
- return _bagDatas.Count - 1;
- }
- }
- else//已选中物品且背包有数据
- {
- for (int i = 0; i < _bagDatas.Count; i++)
- {
- if (_bagDatas[i].id == itemId) return i;
- }
- return 0;
- }
- }
- }
- }
|