Files
fc/dev/project/library/imports/8c/8cc64c46-bb8e-4fb7-be19-a249ed689e44.js
T
2026-05-24 10:21:26 +08:00

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();