| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | 
							- using System.Collections.Generic;
 
- using ET;
 
- using UnityEngine;
 
- namespace GFGGame
 
- {
 
-     public class ItemDataManager
 
-     {
 
-         private static Dictionary<int, ItemData> _dataDic = new Dictionary<int, ItemData>();
 
-         private static Dictionary<int, int> _itemExchangeDic = new Dictionary<int, int>();
 
-         delegate object MemberGetDelegate(ItemCfg p);
 
-         public static void Add(int itemID, int itemNum)
 
-         {
 
-             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
 
-             if (itemCfg == null)
 
-             {
 
-                 Debug.LogError($"添加了一个不存在的物品 {itemID}");
 
-                 return;
 
-             }
 
-             ItemData itemData = null;
 
-             if (_dataDic.ContainsKey(itemID))
 
-             {
 
-                 itemData = _dataDic[itemID];
 
-                 if (itemCfg.itemType == ConstItemType.CARD)
 
-                 {
 
-                     return;//每张卡牌只有一张
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 itemData = ItemDataPool.GetItemData(itemID);
 
-                 _dataDic.Add(itemID, itemData);
 
-             }
 
-             itemData.num += itemNum;
 
-             if (ItemUtilCS.IsDressUpItem(itemID) && itemID % GameConst.MAX_COUNT_EVERY_TYPE_ITEM > 0)
 
-             {
 
-                 //游戏角色初始数据完成后才执行
 
-                 bool dataInited = GameGlobal.DataInited;
 
-                 DressUpMenuItemDataManager.Add(itemID);
 
-                 if (!DressUpMenuItemDataManager.CheckIsSceneType(itemID))
 
-                 {
 
-                     DecomposeDataManager.Instance.Add(itemID);
 
-                 }
 
-                 FunctionOpenCfg functionOpenCfg = FunctionOpenCfgArray.Instance.GetCfg(typeof(ClothingListView).Name);
 
-                 if (dataInited
 
-                     && itemCfg.rarity == ConstDressRarity.Rarity_TIANYI
 
-                     && StorageDataManager.Instance.GetStorageValue(ConstStorageId.FUNCTION_OPEN + functionOpenCfg.index) == 0)
 
-                 {
 
-                     FunctionOpenDataManager.Instance.CheckHasSpecialFunOpen();
 
-                 }
 
-             }
 
-             if (itemCfg.itemType == ConstItemType.ITEM && itemData.num > 0)
 
-             {
 
-                 BagDataManager.Instance.Add(itemData);
 
-             }
 
-             if (itemCfg.itemType == ConstItemType.HEAD)
 
-             {
 
-                 RoleInfoManager.Instance.Add(itemID);
 
-             }
 
-             PhotographDataManager.Instance.Add(itemID);
 
-             EventAgent.DispatchEvent(ConstMessage.ITEM_CHANGED, itemID);
 
-         }
 
-         public static void Remove(int itemID, int itemNum)
 
-         {
 
-             if (_dataDic.ContainsKey(itemID))
 
-             {
 
-                 ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
 
-                 ItemData itemData = _dataDic[itemID];
 
-                 itemData.num -= itemNum;
 
-                 if (itemData.num <= 0)
 
-                 {
 
-                     itemData.num = 0;
 
-                     _dataDic.Remove(itemID);
 
-                     if (ItemUtilCS.IsDressUpItem(itemID))
 
-                     {
 
-                         DressUpMenuItemDataManager.Remove(itemID);
 
-                     }
 
-                     if (itemCfg.itemType == ConstItemType.ITEM)
 
-                     {
 
-                         BagDataManager.Instance.Remove(itemID);
 
-                     }
 
-                     if (itemCfg.itemType == ConstItemType.HEAD)
 
-                     {
 
-                         RoleInfoManager.Instance.Remove(itemID);
 
-                     }
 
-                 }
 
-                 if (itemCfg.itemType == ConstItemType.DRESS_UP && !DressUpMenuItemDataManager.CheckIsSceneType(itemID))
 
-                 {
 
-                     DecomposeDataManager.Instance.Remove(itemID);
 
-                 }
 
-                 EventAgent.DispatchEvent(ConstMessage.ITEM_CHANGED, itemID);
 
-             }
 
-         }
 
-         public static int GetItemNum(int itemId)
 
-         {
 
-             int numericType = NumericUtil.GetNumericTypeByItemId(itemId);
 
-             if (numericType != 0)
 
-             {
 
-                 return GameGlobal.myNumericComponent.GetAsInt(numericType);
 
-             }
 
-             if (_dataDic.TryGetValue(itemId, out var itemData))
 
-             {
 
-                 return itemData.num;
 
-             }
 
-             return 0;
 
-         }
 
-         public static void InitServerData(List<ItemInfoProto> items)
 
-         {
 
-             _dataDic.Clear();
 
-             foreach (ItemInfoProto roleItem in items)
 
-             {
 
-                 Add(roleItem.ConfigId, roleItem.Count);
 
-             }
 
-         }
 
-         public static void InitServerDataItemAttribute(List<ItemAttributeProto> infos)
 
-         {
 
-             foreach (var info in infos)
 
-             {
 
-                 if (_dataDic.TryGetValue(info.ConfigId, out var itemData))
 
-                 {
 
-                     itemData.SetAttributes(info.Ks, info.Vs);
 
-                 }
 
-             }
 
-         }
 
-         public static void InitItemExchange(int itemId, int exchangTimes)
 
-         {
 
-             if (_itemExchangeDic.ContainsKey(itemId))
 
-             {
 
-                 _itemExchangeDic[itemId] = exchangTimes;
 
-             }
 
-             else
 
-             {
 
-                 _itemExchangeDic.Add(itemId, exchangTimes);
 
-             }
 
-         }
 
-         //获取物品已兑换次数
 
-         public static int GetItemExchangeTimes(int itemId)
 
-         {
 
-             if (_itemExchangeDic.ContainsKey(itemId) == false)
 
-             {
 
-                 InitItemExchange(itemId, 0);
 
-             }
 
-             return _itemExchangeDic[itemId];
 
-         }
 
-         public static void SetAttribute(int itemId, int key, int value)
 
-         {
 
-             if (_dataDic.TryGetValue(itemId, out var itemData))
 
-             {
 
-                 itemData.SetAttribute(key, value);
 
-             }
 
-         }
 
-         public static void GetMainScore(int itemId, out int mainScore, out int mainScoreValue)
 
-         {
 
-             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
 
-             //五个属性中最大的为主属性
 
-             mainScoreValue = 0;
 
-             mainScore = itemCfg.mainScore;
 
-             switch (mainScore)
 
-             {
 
-                 case 1:
 
-                     mainScoreValue = itemCfg.score1;
 
-                     break;
 
-                 case 2:
 
-                     mainScoreValue = itemCfg.score2;
 
-                     break;
 
-                 case 3:
 
-                     mainScoreValue = itemCfg.score3;
 
-                     break;
 
-                 case 4:
 
-                     mainScoreValue = itemCfg.score4;
 
-                     break;
 
-             }
 
-         }
 
-         public static int GetItemScoreValue(int itemId, int scoreType)
 
-         {
 
-             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
 
-             if (scoreType == 1)
 
-             {
 
-                 return itemCfg.score1;
 
-             }
 
-             else if (scoreType == 2)
 
-             {
 
-                 return itemCfg.score2;
 
-             }
 
-             else if (scoreType == 3)
 
-             {
 
-                 return itemCfg.score3;
 
-             }
 
-             else if (scoreType == 4)
 
-             {
 
-                 return itemCfg.score4;
 
-             }
 
-             return 0;
 
-         }
 
-         public static int GetScore(int itemId, int scoreType)
 
-         {
 
-             if (_dataDic.TryGetValue(itemId, out var itemData))
 
-             {
 
-                 return itemData.GetScore(scoreType);
 
-             }
 
-             return 0;
 
-         }
 
-     }
 
- }
 
 
  |