368 lines
11 KiB
JavaScript
368 lines
11 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, '454feBZaSJINIbY0IysJHCJ', 'backpack_controller');
|
||
|
|
// Scripts/mod/backpack/backpack_controller.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
// --------------------------------------------------------------------
|
||
|
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
||
|
|
// @description:
|
||
|
|
// 背包内出售物品的面板
|
||
|
|
// <br/>Create: 2018-12-24 16:50:14
|
||
|
|
// --------------------------------------------------------------------
|
||
|
|
var BridgeController = require("bridge.controller");
|
||
|
|
var BackPackConst = require("backpack_const");
|
||
|
|
var MainuiController = require("mainui_controller");
|
||
|
|
var MainuiConst = require("mainui_const");
|
||
|
|
var BackpackEvent = require("backpack_event");
|
||
|
|
var TipsController = require("tips_controller");
|
||
|
|
|
||
|
|
// 桥接替换的界面
|
||
|
|
|
||
|
|
var BackpackController = cc.Class({
|
||
|
|
"extends": BridgeController,
|
||
|
|
ctor: function ctor() {},
|
||
|
|
// 初始化配置数据
|
||
|
|
initConfig: function initConfig() {
|
||
|
|
var BackpackModel = require("backpack_model");
|
||
|
|
this.model = new BackpackModel();
|
||
|
|
this.model.initConfig();
|
||
|
|
},
|
||
|
|
// 返回当前的model
|
||
|
|
getModel: function getModel() {
|
||
|
|
return this.model;
|
||
|
|
},
|
||
|
|
// 注册监听事件
|
||
|
|
registerEvents: function registerEvents() {},
|
||
|
|
// 注册协议接受事件
|
||
|
|
registerProtocals: function registerProtocals() {
|
||
|
|
this.RegisterProtocal(10500, this.on10500);
|
||
|
|
this.RegisterProtocal(10501, this.on10501);
|
||
|
|
this.RegisterProtocal(10510, this.on10510); //增加物品通知
|
||
|
|
this.RegisterProtocal(10511, this.on10511); //删除物品通知
|
||
|
|
this.RegisterProtocal(10512, this.on10512); //刷新物品通知
|
||
|
|
this.RegisterProtocal(10515, this.handle10515); //使用物品
|
||
|
|
this.RegisterProtocal(10522, this.handle10522); //出售背包物品
|
||
|
|
this.RegisterProtocal(10523, this.handle10523);
|
||
|
|
this.RegisterProtocal(11008, this.handle11008);
|
||
|
|
this.RegisterProtocal(11018, this.handle11018.bind(this));
|
||
|
|
},
|
||
|
|
// 从服务器初始化数据
|
||
|
|
reqBaseFromServer: function reqBaseFromServer(_cb) {
|
||
|
|
var _this = this;
|
||
|
|
// 配置加载
|
||
|
|
var cfgs = ["item_data",
|
||
|
|
// 道具
|
||
|
|
"package_data",
|
||
|
|
// 背包
|
||
|
|
"color_data",
|
||
|
|
// 色码表
|
||
|
|
"gift_data",
|
||
|
|
// 礼包
|
||
|
|
"attr_data",
|
||
|
|
// 属性表
|
||
|
|
"sprite_data" // 僚机相关数据显示
|
||
|
|
];
|
||
|
|
|
||
|
|
this.loadConfigs(cfgs, function (_ret, _data) {
|
||
|
|
_this.sender10500();
|
||
|
|
_this.sender10501(_cb);
|
||
|
|
});
|
||
|
|
},
|
||
|
|
// 初始化道具背包
|
||
|
|
sender10500: function sender10500(_cb) {
|
||
|
|
this.SendProtocal(10500, {}, _cb);
|
||
|
|
},
|
||
|
|
// 初始化装备背包
|
||
|
|
sender10501: function sender10501(_cb) {
|
||
|
|
this.SendProtocal(10501, {}, _cb);
|
||
|
|
},
|
||
|
|
// 初始化道具背包
|
||
|
|
on10500: function on10500(data) {
|
||
|
|
data.bag_code = BackPackConst.Bag_Code.BACKPACK;
|
||
|
|
this.model.initItemList(data);
|
||
|
|
},
|
||
|
|
// 初始化装备背包
|
||
|
|
on10501: function on10501(data) {
|
||
|
|
data.bag_code = BackPackConst.Bag_Code.EQUIPS;
|
||
|
|
this.model.initItemList(data);
|
||
|
|
},
|
||
|
|
// 增加一个物品
|
||
|
|
on10510: function on10510(data) {
|
||
|
|
cc.log("增加一个物品", data);
|
||
|
|
this.model.updateBagItemsNum(data);
|
||
|
|
},
|
||
|
|
// 删除一个物品
|
||
|
|
on10511: function on10511(data) {
|
||
|
|
cc.log("删除一个物品", data);
|
||
|
|
this.model.deleteBagItems(data);
|
||
|
|
},
|
||
|
|
// 刷新一个物品
|
||
|
|
on10512: function on10512(data) {
|
||
|
|
this.model.updateBagItemsNum(data, true);
|
||
|
|
},
|
||
|
|
// ==============================
|
||
|
|
// desc:出售物品
|
||
|
|
// @storage:
|
||
|
|
// @args:
|
||
|
|
// @return
|
||
|
|
// ==============================
|
||
|
|
sender10522: function sender10522(storage, args) {
|
||
|
|
var protocal = {};
|
||
|
|
protocal.storage = storage;
|
||
|
|
protocal.args = args;
|
||
|
|
this.SendProtocal(10522, protocal);
|
||
|
|
},
|
||
|
|
handle10522: function handle10522(data) {
|
||
|
|
nx.tbox(data.msg);
|
||
|
|
if (this.batch_use) {
|
||
|
|
this.openBatchUseItemView(false);
|
||
|
|
}
|
||
|
|
if (this.sell_window) {
|
||
|
|
//出售成功之后关闭出售面板
|
||
|
|
this.openSellWindow(false);
|
||
|
|
}
|
||
|
|
this.closeGiftSelectPanel();
|
||
|
|
gcore.GlobalEvent.fire(BackpackEvent.Sell_Goods_Success);
|
||
|
|
},
|
||
|
|
// ==============================
|
||
|
|
// desc:使用物品
|
||
|
|
// @id:
|
||
|
|
// @quantity:
|
||
|
|
// @args:
|
||
|
|
// @return
|
||
|
|
// ==============================
|
||
|
|
sender10515: function sender10515(id, quantity, args) {
|
||
|
|
var protocal = {};
|
||
|
|
protocal.id = id;
|
||
|
|
protocal.quantity = quantity;
|
||
|
|
protocal.args = args || {};
|
||
|
|
this.SendProtocal(10515, protocal);
|
||
|
|
},
|
||
|
|
handle10515: function handle10515(data) {
|
||
|
|
nx.tbox(data.msg);
|
||
|
|
if (data.flag == 1) {
|
||
|
|
this.openBatchUseItemView(false);
|
||
|
|
this.closeGiftSelectPanel();
|
||
|
|
}
|
||
|
|
},
|
||
|
|
sender10523: function sender10523(id, num) {
|
||
|
|
var protocal = {};
|
||
|
|
protocal.id = id;
|
||
|
|
protocal.num = num;
|
||
|
|
this.SendProtocal(10523, protocal);
|
||
|
|
},
|
||
|
|
handle10523: function handle10523(data) {
|
||
|
|
nx.tbox(data.msg);
|
||
|
|
if (data.flag == 1) {
|
||
|
|
gcore.GlobalEvent.fire(BackpackEvent.Compose_Goods_Success);
|
||
|
|
TipsController.getInstance().showBackPackCompTips(false);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
//背包碎片合成
|
||
|
|
sender11008: function sender11008(bid, num) {
|
||
|
|
var proto = {};
|
||
|
|
proto.bid = bid;
|
||
|
|
proto.num = num;
|
||
|
|
this.SendProtocal(11008, proto);
|
||
|
|
},
|
||
|
|
handle11008: function handle11008(data) {
|
||
|
|
gcore.GlobalEvent.fire(BackpackEvent.Compose_BackPack_Success);
|
||
|
|
nx.tbox(data.msg);
|
||
|
|
TipsController.getInstance().showBackPackCompTips(false);
|
||
|
|
TipsController.getInstance().showCompChooseTips(false);
|
||
|
|
if (data.result == 1) {
|
||
|
|
var items = [];
|
||
|
|
for (var i in data.partners) {
|
||
|
|
var v = data.partners[i];
|
||
|
|
var info = game.configs.partner_data.data_partner_base[v.partner_bid];
|
||
|
|
items[parseInt(i)] = {};
|
||
|
|
items[parseInt(i)].bid = v.partner_bid;
|
||
|
|
items[parseInt(i)].star = info.init_star;
|
||
|
|
items[parseInt(i)].camp_type = info.camp_type;
|
||
|
|
// items[ parseInt( i ) ].show_type = MainuiConst.item_exhibition_type.partner_type;
|
||
|
|
}
|
||
|
|
|
||
|
|
MainuiController.getInstance().openGetItemView(true, items, 0);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* 打开背包主入口
|
||
|
|
* @param {*} status
|
||
|
|
* @param {*} params
|
||
|
|
*/
|
||
|
|
openMainWindow: function openMainWindow(status, params) {
|
||
|
|
if (!status) {
|
||
|
|
nx.bridge.closePanel("WndBag");
|
||
|
|
} else {
|
||
|
|
nx.bridge.createPanel("WndBag", {
|
||
|
|
fromOther: params
|
||
|
|
});
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* 显示道具提示信息
|
||
|
|
* @author zhanghuxing 2019-01-21
|
||
|
|
* @param {[type]} status [description]
|
||
|
|
* @param {[type]} data 可以是bid, 或者配置表条目
|
||
|
|
* @param {[type]} extend_data [description]
|
||
|
|
* @param {[type]} item_list 需要的物品列表
|
||
|
|
* @return {[type]} [description]
|
||
|
|
*/
|
||
|
|
openTipsSource: function openTipsSource(status, data, extend_data, item_list) {
|
||
|
|
if (status) {
|
||
|
|
if (typeof data == "number") {
|
||
|
|
data = Utils.getItemConfig(data);
|
||
|
|
}
|
||
|
|
if (data == null) return;
|
||
|
|
if (!this.tips_source) {
|
||
|
|
// 调用统一的物品弹出窗
|
||
|
|
this.tips_source = TipsController.getInstance().showItemTips(data);
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (this.tips_source) {
|
||
|
|
this.tips_source.close();
|
||
|
|
this.tips_source = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* desc:出售物品
|
||
|
|
*/
|
||
|
|
openItemSellPanel: function openItemSellPanel(status, goods_vo, bag_code) {
|
||
|
|
if (status == false) {
|
||
|
|
nx.bridge.closePanel("WndItemSell");
|
||
|
|
} else {
|
||
|
|
nx.bridge.createPanel("WndItemSell", [goods_vo, bag_code]);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* desc:合成
|
||
|
|
*/
|
||
|
|
openItemMergePanel: function openItemMergePanel(status, goods_vo, bag_code) {
|
||
|
|
if (status == false) {
|
||
|
|
nx.bridge.closePanel("WndItemMerge");
|
||
|
|
} else {
|
||
|
|
nx.bridge.createPanel("WndItemMerge", [goods_vo, bag_code]);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* desc:分解
|
||
|
|
*/
|
||
|
|
openItemDecomposePanel: function openItemDecomposePanel(status, goods_vo, bag_code) {
|
||
|
|
if (status == false) {
|
||
|
|
nx.bridge.closePanel("WndItemDecompose");
|
||
|
|
} else {
|
||
|
|
nx.bridge.createPanel("WndItemDecompose", [goods_vo, bag_code]);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// --==============================--
|
||
|
|
// --desc:打开批量使用物品窗口
|
||
|
|
// --@item:必须是物品真是数据
|
||
|
|
// --@type:出售或者使用
|
||
|
|
// --@select_vo :自选礼包点击批量使用要传选中的物品id列表过来
|
||
|
|
// --@return
|
||
|
|
// --==============================--
|
||
|
|
openBatchUseItemView: function openBatchUseItemView(status, item, type, select_vo) {
|
||
|
|
if (status == false) {
|
||
|
|
nx.bridge.closePanel("WndItemBatchUse");
|
||
|
|
} else {
|
||
|
|
nx.bridge.createPanel("WndItemBatchUse", [item, type, select_vo]);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* 打开出售物品界面展示
|
||
|
|
* author:{author}
|
||
|
|
* @status:
|
||
|
|
* @list:
|
||
|
|
* return
|
||
|
|
*/
|
||
|
|
openSellWindow: function openSellWindow(status, bag_code, list) {
|
||
|
|
if (status == false) {
|
||
|
|
if (this.sell_window != null) {
|
||
|
|
this.sell_window.close();
|
||
|
|
this.sell_window = null;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
bag_code = bag_code || BackPackConst.Bag_Code.BACKPACK;
|
||
|
|
if (list == null || Utils.next(list) == null) return;
|
||
|
|
if (this.sell_window == null) {
|
||
|
|
this.sell_window = Utils.createClass("backpack_sell_window", this);
|
||
|
|
}
|
||
|
|
this.sell_window.open(bag_code, list);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
openGiftSelectPanel: function openGiftSelectPanel(gift_vo) {
|
||
|
|
// 无效礼包
|
||
|
|
if (nx.dt.objEmpty(gift_vo) || !nx.dt.numGood(gift_vo.base_id)) {
|
||
|
|
nx.error("无效礼包,无法打开!");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
nx.bridge.createPanel("WndGiftChoose", gift_vo);
|
||
|
|
},
|
||
|
|
openGiftSelectMorePanel: function openGiftSelectMorePanel(gift_vo) {
|
||
|
|
// 无效礼包
|
||
|
|
if (nx.dt.objEmpty(gift_vo) || !nx.dt.numGood(gift_vo.base_id)) {
|
||
|
|
nx.error("无效礼包,无法打开!");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
nx.bridge.createPanel("WndGiftMoreChoose", gift_vo);
|
||
|
|
},
|
||
|
|
closeGiftSelectPanel: function closeGiftSelectPanel() {
|
||
|
|
if (this.gift_panel != null) {
|
||
|
|
this.gift_panel.close();
|
||
|
|
this.gift_panel = null;
|
||
|
|
}
|
||
|
|
},
|
||
|
|
//跳转物品来源的
|
||
|
|
gotoItemSources: function gotoItemSources(evt_type, extend, bid, need_item_list) {
|
||
|
|
nx.bridge.jumper.jump2WindowByKey(evt_type, {
|
||
|
|
bid: bid,
|
||
|
|
extend: extend
|
||
|
|
});
|
||
|
|
},
|
||
|
|
getBackpackRoot: function getBackpackRoot() {
|
||
|
|
if (this.backpack_win) return this.backpack_win.root_wnd;
|
||
|
|
},
|
||
|
|
// ================
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 选物品
|
||
|
|
* @param {*} _open
|
||
|
|
* @param {*} _args : {
|
||
|
|
* items: 列表,
|
||
|
|
* count: 选择上限,
|
||
|
|
* selects: 已选择,
|
||
|
|
* fixed: 是否固定选择上限数(默认false)
|
||
|
|
* flag: 特殊标记 1: 符文合成 }
|
||
|
|
* @param {*} _cb : 返回
|
||
|
|
*/
|
||
|
|
openItemSelector: function openItemSelector(_open, _args, _cb) {
|
||
|
|
if (_open) {
|
||
|
|
nx.bridge.createPanel("WndItemSelectPanel", {
|
||
|
|
params: _args,
|
||
|
|
cb: _cb
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
nx.bridge.closePanel("WndItemSelectPanel");
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// ============================================================
|
||
|
|
// 皮肤碎片相关
|
||
|
|
// ============================================================
|
||
|
|
|
||
|
|
// 碎片合成
|
||
|
|
reqSkinCombine: function reqSkinCombine(_id, _cb) {
|
||
|
|
this.SendProtocal(11018, {
|
||
|
|
bid: _id
|
||
|
|
}, _cb);
|
||
|
|
},
|
||
|
|
handle11018: function handle11018(_data) {
|
||
|
|
if (!this.isGoodData(_data)) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
module.exports = BackpackController;
|
||
|
|
|
||
|
|
cc._RF.pop();
|