ItemProxy.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. using System;
  2. using System.Collections.Generic;
  3. using ET;
  4. using GFGGame;
  5. namespace ET
  6. {
  7. public class S2C_ItemCollectHandler : AMHandler<S2C_ItemCollect>
  8. {
  9. protected override async ETTask Run(Session session, S2C_ItemCollect message)
  10. {
  11. for (int i = 0; i < message.ItemIds.Count; i++)
  12. {
  13. if (ItemDataManager.ItemCollect.ContainsKey(message.ItemIds[i]))
  14. ItemDataManager.ItemCollect[message.ItemIds[i]] = message.Counts[i];
  15. else
  16. ItemDataManager.ItemCollect.Add(message.ItemIds[i], message.Counts[i]);
  17. }
  18. await ETTask.CompletedTask;
  19. }
  20. }
  21. }
  22. namespace GFGGame
  23. {
  24. public class ItemProxy
  25. {
  26. public static async ETTask<bool> GetItemInfos()
  27. {
  28. GameGlobal.PreDataInited = false;
  29. GameGlobal.AfterDataInited = false;
  30. M2C_GetItemInfos response = null;
  31. response = (M2C_GetItemInfos)await MessageHelper.SendToServer(new C2M_GetItemInfos());
  32. if (response != null)
  33. {
  34. if (response.Error == ErrorCode.ERR_Success)
  35. {
  36. //物品兑换
  37. for (int i = 0; i < response.KsItemExchange.Count; i++)
  38. {
  39. ItemDataManager.InitItemExchange(response.KsItemExchange[i], response.VsItemExchange[i]);
  40. }
  41. //服装数据与物品通步
  42. DressUpMenuSuitDataManager.InitData();
  43. DressUpMenuItemDataManager.InitData();
  44. //初始化物品
  45. ItemDataManager.InitServerData(response.Items);
  46. //自定义套装
  47. CustomSuitDataManager.InitServerData(response.CustomSuits);
  48. CustomSuitDataManager.currentIndex = response.CustomSuitPos;
  49. if (!RoleDataManager.CheckIsMonthCardOpenByType(CustomSuitDataManager.GetPosType(CustomSuitDataManager.currentIndex)))
  50. {
  51. CustomSuitDataManager.currentIndex = 0;
  52. }
  53. for (int i = 0; i < response.NewItems.Count; i++)
  54. {
  55. var itemId = response.NewItems[i];
  56. if (ItemDataManager.GetItemNum(itemId) <= 0) continue;
  57. var itemType = ItemDataManager.GetItemType(itemId);
  58. if (itemType == ConstItemType.DRESS_UP)
  59. {
  60. DressUpMenuItemDataManager.AddNewDressItem(response.NewItems[i]);
  61. }
  62. else if (itemType == ConstItemType.HEAD)
  63. {
  64. RoleInfoManager.Instance.AddNew(response.NewItems[i]);
  65. }
  66. }
  67. //!!!必须放在最后,标记数据初始化完成
  68. GameGlobal.PreDataInited = true;
  69. return true;
  70. }
  71. }
  72. return false;
  73. }
  74. public static async ETTask<int> GetItemAttributeInfos()
  75. {
  76. M2C_GetItemAttributeInfos m2C_GetItemAttributeInfos = null;
  77. Session session = null;
  78. try
  79. {
  80. session = GameGlobal.zoneScene.GetComponent<SessionComponent>().GateSession;
  81. m2C_GetItemAttributeInfos = (M2C_GetItemAttributeInfos)await session.Call(new C2M_GetItemAttributeInfos());
  82. }
  83. catch (Exception e)
  84. {
  85. Log.Debug(e.ToString());
  86. return ErrorCode.ERR_NetWorkError;
  87. }
  88. if (m2C_GetItemAttributeInfos.Error != ErrorCode.ERR_Success)
  89. {
  90. return m2C_GetItemAttributeInfos.Error;
  91. }
  92. ItemDataManager.InitServerDataItemAttribute(m2C_GetItemAttributeInfos.ItemAtrributes);
  93. return ErrorCode.ERR_Success;
  94. }
  95. //设置物品已读
  96. public static async ETTask<bool> ReqSetItemRead(int itemID)
  97. {
  98. S2C_SetItemRead response = null;
  99. response = (S2C_SetItemRead)await MessageHelper.SendToServer(new C2S_SetItemRead() { ItemId = itemID });
  100. if (response != null)
  101. {
  102. if (response.Error == ErrorCode.ERR_Success)
  103. {
  104. ItemCfg cfg = ItemCfgArray.Instance.GetCfg(response.ItemId);
  105. if (cfg.itemType == ConstItemType.DRESS_UP)
  106. {
  107. DressUpMenuItemDataManager.RemoveNewDressItem(response.ItemId);
  108. }
  109. else if (cfg.itemType == ConstItemType.HEAD)
  110. {
  111. RoleInfoManager.Instance.RemoveNew(response.ItemId);
  112. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  113. }
  114. return true;
  115. }
  116. }
  117. return false;
  118. }
  119. //使用背包物品
  120. public static async ETTask<bool> ReqUseItem(int itemID, long count)
  121. {
  122. S2C_UseItem response = null;
  123. response = (S2C_UseItem)await MessageHelper.SendToServer(new C2S_UseItem() { ItemId = itemID, itemNum = count });
  124. if (response != null)
  125. {
  126. if (response.Error == ErrorCode.ERR_Success)
  127. {
  128. List<ItemData> items = ItemUtil.CreateItemDataList(response.GotItemList);
  129. BonusController.TryShowBonusList(items);
  130. return true;
  131. }
  132. }
  133. return false;
  134. }
  135. //使用背包物品-自选礼包
  136. public static async ETTask<bool> ReqUseGiftBoxSelItem(int itemID, List<GiftBoxSelChildItemProto> giftBoxSelChildItems)
  137. {
  138. M2C_GiftBoxSelConsumption response = null;
  139. response = (M2C_GiftBoxSelConsumption)await MessageHelper.SendToServer(new C2M_GiftBoxSelConsumption()
  140. { ItemId = itemID, GiftBoxSelChildItems = giftBoxSelChildItems });
  141. if (response != null)
  142. {
  143. if (response.Error == ErrorCode.ERR_Success)
  144. {
  145. List<ItemData> items = ItemUtil.CreateItemDataList(response.GotItemList);
  146. BonusController.TryShowBonusList(items);
  147. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  148. return true;
  149. }
  150. }
  151. return false;
  152. }
  153. //使用背包物品-随机礼包
  154. public static async ETTask<bool> ReqUseRandomItem(int itemID, long count)
  155. {
  156. S2C_UseRandomItem response = null;
  157. response = (S2C_UseRandomItem)await MessageHelper.SendToServer(new C2S_UseRandomItem()
  158. { ItemId = itemID, itemNum = count });
  159. if (response != null)
  160. {
  161. if (response.Error == ErrorCode.ERR_Success)
  162. {
  163. List<ItemData> items = ItemUtil.CreateItemDataList(response.GotItemList);
  164. BonusController.TryShowBonusList(items);
  165. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  166. return true;
  167. }
  168. }
  169. return false;
  170. }
  171. //获取物品收集量
  172. public static async ETTask<bool> ReqGetItemCollect()
  173. {
  174. S2C_GetItemCollect response = null;
  175. response = (S2C_GetItemCollect)await MessageHelper.SendToServer(new C2S_GetItemCollect(){});
  176. if (response != null)
  177. {
  178. if (response.Error == ErrorCode.ERR_Success)
  179. {
  180. for (int i = 0; i < response.ItemIds.Count; i++) {
  181. if (ItemDataManager.ItemCollect.ContainsKey(response.ItemIds[i]))
  182. ItemDataManager.ItemCollect[response.ItemIds[i]] = response.Counts[i];
  183. else
  184. ItemDataManager.ItemCollect.Add(response.ItemIds[i], response.Counts[i]);
  185. }
  186. //EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  187. return true;
  188. }
  189. }
  190. return false;
  191. }
  192. }
  193. }