BagMgr.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * 背包数据管理
  3. */
  4. let BagMgr = {
  5. // # 物品背包属性
  6. // .DataItemBag {
  7. // id 0: integer # 物品ID
  8. // count 1: integer # 物品数量
  9. // endTime 2: integer # 到期时间戳
  10. // }
  11. _items: {}, // 背包基础信息
  12. init () {
  13. if (CC_EDITOR) {
  14. return;
  15. }
  16. // 推送消息
  17. cc.game.on('on_user_items', this._onUserItems, this);
  18. },
  19. _addItemData (data) {
  20. let isUpdate = false;
  21. for (let [idx, itemData] of Object.entries(this._items)) {
  22. if (itemData.id == data.id) {
  23. isUpdate = true;
  24. if (data.count <= 0) {
  25. // 删除操作
  26. this._items.splice(idx, 1);
  27. } else {
  28. // 更新操作
  29. this._items[idx] = data;
  30. }
  31. break;
  32. }
  33. }
  34. if (!isUpdate && data.count > 0) {
  35. // new操作
  36. this._items.push(data);
  37. }
  38. },
  39. //* ************* 用户信息获取 ************* *//
  40. getItemDataById(itemid) {
  41. for (const data of this._items) {
  42. if (data.id == itemid) {
  43. return data;
  44. }
  45. }
  46. return undefined;
  47. },
  48. getItemNumById(itemid) {
  49. for (const data of this._items) {
  50. if (data.id == itemid) {
  51. return data.count;
  52. }
  53. }
  54. return 0;
  55. },
  56. //* ************* 客户端请求/响应 ************* *//
  57. requestInfo () {
  58. G.NetworkMgr.sendSocketRequest('bag_get_info', {}, this._responseBagGetInfo.bind(this));
  59. },
  60. _responseBagGetInfo (data) {
  61. let responseInfo = data.responseInfo;
  62. if (responseInfo.code === 200) {
  63. // 玩家基础信息
  64. this._items = responseInfo.items;
  65. G.PublicMgr.emit(JMC.PUBLIC_MSG.BAG_INFO);
  66. } else {
  67. // 断开网络并且弹出重连窗口
  68. G.NetworkMgr.closeSocket();
  69. G.AppUtils.getSceneCtrl().showOfflineAlert();
  70. }
  71. },
  72. _onUserItems(data) {
  73. if (!data || !data.items || data.items.length == 0) return;
  74. for (const item of data.items)
  75. {
  76. this._addItemData(item);
  77. }
  78. }
  79. }
  80. module.exports = BagMgr;