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