12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * 背包数据管理
- */
- let BagMgr = {
- // # 物品背包属性
- // .DataItemBag {
- // id 0: integer # 物品ID
- // count 1: integer # 物品数量
- // endTime 2: integer # 到期时间戳
- // }
- _items: [], // 背包基础信息
- init () {
- if (CC_EDITOR) {
- return;
- }
- this._items = [];
- // 推送消息
- cc.game.on('on_user_items', this._onUserItems, this);
- },
- _addItemData (data) {
- let isUpdate = false;
- for (let [idx, itemData] of Object.entries(this._items)) {
- if (itemData.id == data.id) {
- isUpdate = true;
- if (data.count <= 0) {
- // 删除操作
- this._items.splice(idx, 1);
- } else {
- // 更新操作
- this._items[idx] = data;
- }
- break;
- }
- }
- if (!isUpdate && data.count > 0) {
- // new操作
- this._items.push(data);
- }
- },
- //* ************* 用户信息获取 ************* *//
- getItemDataById(itemid) {
- for (const data of this._items) {
- if (data.id == itemid) {
- return data;
- }
- }
- return undefined;
- },
- getItemNumById(itemid) {
- for (const data of this._items) {
- if (data.id == itemid) {
- return data.count;
- }
- }
- return 0;
- },
- //* ************* 客户端请求/响应 ************* *//
- requestInfo () {
- G.NetworkMgr.sendSocketRequest('bag_get_info', {}, this._responseBagGetInfo.bind(this));
- },
- _responseBagGetInfo (data) {
- let responseInfo = data.responseInfo;
- if (responseInfo.code === 200) {
- // 玩家基础信息
- this._items = responseInfo.items;
- G.PublicMgr.emit(JMC.PUBLIC_MSG.BAG_INFO);
- } else {
- // 断开网络并且弹出重连窗口
- G.NetworkMgr.closeSocket();
- G.AppUtils.getSceneCtrl().showOfflineAlert();
- }
- },
- _onUserItems(data) {
- if (!data || !data.items || data.items.length == 0) return;
- for (const item of data.items)
- {
- this._addItemData(item);
- }
- }
- }
- module.exports = BagMgr;
|