369 lines
9.9 KiB
JavaScript
369 lines
9.9 KiB
JavaScript
"use strict";
|
|
cc._RF.push(module, '8cc64xGu45Pt74ZokntaJ5E', 'cmp.partner.reform.back');
|
|
// Scripts/mod/partner/cmps/reform/cmp/cmp.partner.reform.back.js
|
|
|
|
"use strict";
|
|
|
|
/******************************************************************
|
|
*
|
|
* 伙伴改造页: 回退
|
|
*
|
|
******************************************************************/
|
|
|
|
var FxSVC = require("nx.fx.sv.expand");
|
|
var BridgeComponent = require("bridge.component");
|
|
var TipsController = require("tips_controller");
|
|
var HeroEvent = require("hero_event");
|
|
var HeroControl = require("hero_controller");
|
|
var BackpackController = require("backpack_controller");
|
|
var BackpackEvent = require("backpack_event");
|
|
var BackPackConst = require("backpack_const");
|
|
var BBC = BackPackConst.Bag_Code;
|
|
cc.Class({
|
|
"extends": BridgeComponent,
|
|
properties: {
|
|
fromPanel: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
fromTitle: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
fromEmpty: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
fromRole: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
resPanel: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
resEmpty: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
resResult: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
resRewards: {
|
|
"default": null,
|
|
type: FxSVC
|
|
},
|
|
nodTotal: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
nodNeed: {
|
|
"default": null,
|
|
type: cc.Node
|
|
}
|
|
},
|
|
// 载入
|
|
onLoad: function onLoad() {
|
|
this._super();
|
|
|
|
// 变量
|
|
this.records = {};
|
|
|
|
// 事件监听
|
|
this.bindGEvent(HeroEvent.HERO_RESET_EVENT, this.setEmpty.bind(this));
|
|
this.bindGEvent(HeroEvent.HERO_RESET_ITEM_EVENT, this.onRewardPreview.bind(this));
|
|
this.bindGEvent(BackpackEvent.ADD_GOODS, this.onBagChanged.bind(this));
|
|
this.bindGEvent(BackpackEvent.DELETE_GOODS, this.onBagChanged.bind(this));
|
|
this.bindGEvent(BackpackEvent.MODIFY_GOODS_NUM, this.onBagChanged.bind(this));
|
|
|
|
// 置空
|
|
this.setPartner();
|
|
nx.gui.setActive(this.nodTotal, "", false);
|
|
this.freshCostHave();
|
|
},
|
|
// 显示
|
|
onEnable: function onEnable() {
|
|
// 视图监听
|
|
this.vbind([["PartnerBack", this.onPartnerShow.bind(this)]]);
|
|
},
|
|
onDisable: function onDisable() {
|
|
// nx.bridge.vset( "PartnerBack", null );
|
|
// 视图监听解除
|
|
this.vunbind();
|
|
this.setEmpty();
|
|
},
|
|
onDestroy: function onDestroy() {
|
|
this._super();
|
|
if (window.nx && nx.bridge) {
|
|
nx.bridge.vset("PartnerBack", null);
|
|
}
|
|
},
|
|
// 重载:关闭前
|
|
onPreClosed: function onPreClosed() {
|
|
console.log("关闭前");
|
|
this.resRewards.rebuild([]);
|
|
},
|
|
// 置空
|
|
setEmpty: function setEmpty() {
|
|
nx.gui.setActive(this.fromEmpty, "", true);
|
|
nx.gui.setActive(this.fromRole, "", false);
|
|
nx.gui.setString(this.fromTitle, "", nx.text.getKey("BkSelectPartner"));
|
|
this.records = [];
|
|
nx.gui.setActive(this.resEmpty, "", true);
|
|
nx.gui.setActive(this.resResult, "", false);
|
|
nx.gui.setActive(this.nodNeed, "", false);
|
|
},
|
|
onPartnerShow: function onPartnerShow(_partner) {
|
|
if (!_partner) {
|
|
return;
|
|
}
|
|
this.setPartner(_partner);
|
|
},
|
|
// 设置伙伴
|
|
setPartner: function setPartner(_partner) {
|
|
this.partner = _partner;
|
|
if (nx.dt.objEmpty(this.partner)) {
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
|
|
// 伙伴信息
|
|
nx.gui.setActive(this.fromEmpty, "", false);
|
|
nx.gui.setActive(this.fromRole, "", true);
|
|
|
|
// 名字
|
|
nx.gui.setString(this.fromTitle, "", nx.text.getKey(this.partner.name));
|
|
|
|
// 等级
|
|
nx.gui.setString(this.fromRole, "level/txt", "Lv." + this.partner.lev || 1);
|
|
|
|
// 星级
|
|
var path = cc.path.join("coms/images", "star" + this.partner.star);
|
|
nx.gui.setSpriteFrame(this.fromRole, "stars", path);
|
|
|
|
// 动画
|
|
var key = this.partner.bid + "_" + this.partner.star;
|
|
var cfg = gdata("partner_data", "data_partner_star", key);
|
|
var spine = nx.gui.getComponent(this.fromRole, "smod", "nx.fx.spine");
|
|
if (cfg && spine) {
|
|
path = PathTool.getSpinePath(cfg.res_id, cfg.res_id, false);
|
|
spine.load(path, function (_e) {
|
|
if (!_e) {
|
|
spine.action("stand2", true);
|
|
} else {
|
|
spine.stop();
|
|
}
|
|
});
|
|
}
|
|
|
|
// 刷新预览
|
|
this.freshPreview();
|
|
},
|
|
// 刷新预览
|
|
freshPreview: function freshPreview() {
|
|
// 缓存查找,找不到直接请求
|
|
var rewards = this.records[this.partner.partner_id];
|
|
if (nx.dt.arrEmpty(rewards)) {
|
|
HeroControl.getInstance().sender11066(this.partner.partner_id);
|
|
return;
|
|
}
|
|
nx.gui.setActive(this.resEmpty, "", false);
|
|
nx.gui.setActive(this.resResult, "", true);
|
|
nx.gui.setActive(this.nodNeed, "", false);
|
|
|
|
// 卡/道具分离
|
|
var pts = [];
|
|
var its = [];
|
|
for (var i in rewards) {
|
|
var rd = rewards[i];
|
|
if (rd.is_partner) {
|
|
pts.push(rd);
|
|
} else {
|
|
its.push(rd);
|
|
}
|
|
}
|
|
|
|
// 更新
|
|
var root = nx.gui.find(this.resResult, "partners");
|
|
if (root) {
|
|
var chds = root.children;
|
|
for (var _i = 0; _i < chds.length; ++_i) {
|
|
var node = chds[_i];
|
|
var pt = pts[_i];
|
|
if (nx.dt.objEmpty(pt)) {
|
|
node.active = false;
|
|
continue;
|
|
}
|
|
node.active = true;
|
|
var icon = node.getComponent("cmp.partner.inbag");
|
|
if (icon) {
|
|
icon.setDataEx(pt.id, {
|
|
stars: pt.star,
|
|
level: pt.lev
|
|
});
|
|
}
|
|
}
|
|
}
|
|
this.resRewards.rebuild(its);
|
|
this.freshCostHave();
|
|
},
|
|
// 回退预览
|
|
onRewardPreview: function onRewardPreview(_data) {
|
|
// 无效预览
|
|
if (!this.partner || nx.dt.objEmpty(_data) || nx.dt.arrEmpty(_data.list)) {
|
|
return;
|
|
}
|
|
|
|
// 缓存&&刷新
|
|
var pid = this.partner.partner_id;
|
|
this.records[pid] = nx.dt.objClone(_data.list);
|
|
this.freshPreview();
|
|
},
|
|
// 点击重选
|
|
onTouchSelect: function onTouchSelect() {
|
|
var _this = this;
|
|
var conds = {};
|
|
// let config = gdata( "partner_data", "data_partner_const", "return_condition" );
|
|
// if( config && config.val ) {
|
|
// for( let i in config.val ) {
|
|
// let v = config.val[ i ];
|
|
// if( conds[ v ] == null ) {
|
|
// conds[ v ] = true;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
var HC = HeroControl.getInstance();
|
|
var pts = [];
|
|
var all = HC.getModel().getHeroList() || [];
|
|
for (var k in all) {
|
|
var partner = all[k];
|
|
var pfg = game.configs.partner_data.data_partner_base[partner.bid];
|
|
if (pfg) {
|
|
// if( pfg.init_star != partner.star ){
|
|
// if( conds[ partner.star ] && partner.is_lock == 0 ) {
|
|
// pts.push( partner );
|
|
// }
|
|
if (partner.is_lock == 0 && partner.is_in_form == 0 && (partner.lev >= 1 && pfg.init_star != partner.star || partner.lev > 1 && pfg.init_star == partner.star)) {
|
|
pts.push(partner);
|
|
}
|
|
// }
|
|
}
|
|
}
|
|
|
|
// 排序
|
|
var sort_func = Utils.tableLowerSorter(["star", "lev", "bid"]);
|
|
pts.sort(sort_func);
|
|
pts.forEach(function (_p) {
|
|
if (_p.face_id == 0) {
|
|
_p.face_id = "null";
|
|
}
|
|
});
|
|
var args = {
|
|
partners: pts,
|
|
count: 1,
|
|
selects: []
|
|
};
|
|
// console.log( "当前的伙伴信息" + JSON.stringify( args ) );
|
|
HC.openPartnerSelector(true, args, function (_partners) {
|
|
var pt = _partners ? _partners[0] : null;
|
|
if (pt) {
|
|
_this.setPartner(pt);
|
|
}
|
|
HC.openPartnerSelector(false);
|
|
});
|
|
},
|
|
// 点击回退
|
|
onTouchBack: function onTouchBack() {
|
|
if (!this.partner) {
|
|
nx.tbox("ReformBackTip");
|
|
return;
|
|
}
|
|
var HC = HeroControl.getInstance();
|
|
var pid = this.partner.partner_id;
|
|
if (nx.bridge.plot && nx.bridge.plot.isDoing()) {
|
|
HC.sender11065(pid);
|
|
} else {
|
|
nx.mbox("BkAskConfirm", ['no', 'yes'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == 'yes') {
|
|
HC.sender11065(pid);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
// 点击帮助
|
|
onTouchHelp: function onTouchHelp() {
|
|
var TC = TipsController.getInstance();
|
|
if (TC) {
|
|
var txt = game.configs.partner_data.data_partner_const.return_desc2;
|
|
TC.showTextPanel("tip", txt.desc);
|
|
}
|
|
},
|
|
// 道具改变
|
|
onBagChanged: function onBagChanged(_code, _list) {
|
|
if (_code != BBC.BACKPACK || nx.dt.objEmpty(_list)) {
|
|
return;
|
|
}
|
|
var good = false;
|
|
for (var i in _list) {
|
|
if (_list[i].base_id == this.cost_id) {
|
|
good = true;
|
|
break;
|
|
}
|
|
}
|
|
if (good) {
|
|
this.freshCostHave();
|
|
}
|
|
},
|
|
// 消耗资产刷新
|
|
freshCostHave: function freshCostHave() {
|
|
// 配置获取
|
|
var cfgs = game.configs.partner_data.data_partner_const.return_cost;
|
|
if (nx.dt.objEmpty(cfgs)) {
|
|
nx.error("缺少重生耗材配置!");
|
|
nx.gui.setActive(this.nodTotal, "", false);
|
|
nx.gui.setActive(this.nodNeed, "", false);
|
|
return;
|
|
}
|
|
|
|
// 总量
|
|
// nx.gui.setActive( this.nodTotal, "", true );
|
|
var bid = cfgs.val[0][0];
|
|
var have = BackpackController.getInstance().getModel().getItemNumByBid(bid);
|
|
nx.gui.setString(this.nodTotal, "txt", have);
|
|
|
|
// 消耗
|
|
var cnt = cfgs.val[0][1];
|
|
nx.gui.setActive(this.nodNeed, "", true);
|
|
// nx.gui.setString( this.nodNeed, "txt", cnt );
|
|
|
|
// 图标
|
|
var cfg = Utils.getItemConfig(bid);
|
|
if (cfg) {
|
|
// nx.bridge.setIcon( this.nodTotal, "icon", cfg.icon );
|
|
// nx.bridge.setIcon( this.nodNeed, "icon", cfg.icon );
|
|
}
|
|
|
|
// let enough = ( have >= cnt );
|
|
// nx.gui.setColor( this.nodNeed, "txt", enough ? cc.Color.GREEN : cc.Color.RED );
|
|
|
|
// let btn = nx.gui.getComponent( this.nodNeed, "back", "nx.fx.button" );
|
|
// if( btn ) {
|
|
// btn.lock( !enough );
|
|
// }
|
|
|
|
this.cost_id = bid;
|
|
},
|
|
onTouchIcon: function onTouchIcon() {
|
|
var cfgs = game.configs.partner_data.data_partner_const.return_cost;
|
|
if (cfgs) {
|
|
var mat = cfgs.val[0][0];
|
|
var TC = TipsController.getInstance();
|
|
TC.showItemTips(mat);
|
|
}
|
|
}
|
|
});
|
|
|
|
cc._RF.pop(); |