| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 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) =>            {                if (a.subType > b.subType) return -1;                if (a.subType < b.subType) return 1;                if (a.rarity > b.rarity) return -1;                if (a.rarity < b.rarity) return 1;                return a.id - b.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;            }        }        public Dictionary<int, ItemData> GetBagData()         {            return _bagDataDic;        }    }}
 |