"use strict"; cc._RF.push(module, '66ddeQmDSxEvZkiCXBWuHKv', 'cmp.wings.page'); // Scripts/mod/partner/cmps/bag/cmp.wings.page.js "use strict"; /****************************************************************** * * 僚机背包页 * ******************************************************************/ var MenuPage = require("cmp.com.menu.page"); var ElfinEvent = require("elfin_event"); var ElfinController = require("elfin_controller"); var TipsController = require("tips_controller"); var RoleController = require("role_controller"); var BackpackController = require("backpack_controller"); var NxSpine = require("nx.fx.spine"); var ItemBase = require("cmp.item.base"); var wing = "wing"; cc.Class({ "extends": MenuPage, properties: { power: { "default": null, type: cc.Node }, lev: { "default": null, type: cc.Node }, stageInfo: { "default": null, type: cc.Node }, props: { "default": null, type: cc.Node }, stages: { "default": [], type: cc.Node }, skills: { "default": [], type: cc.Node }, needs: { "default": null, type: cc.Node }, ops: { "default": null, type: cc.Node }, role: { "default": null, type: cc.Sprite }, nodMax: { "default": null, type: cc.Node }, spEffect: { "default": null, type: NxSpine } }, onLoad: function onLoad() { nx.gui.setSpriteFrame(this.role, "", null); this.spEffect.stop(); }, onEnable: function onEnable() { // 事件监听 this.bindGEvent(ElfinEvent.Get_Elfin_Tree_Data_Event, this.onFreshFirst.bind(this)); this.bindGEvent(ElfinEvent.Elfin_Plan_From_Info_Event, this.onFreshDefault.bind(this)); this.bindGEvent(ElfinEvent.Elfin_Tree_Lv_Up_Event, this.onPlayEffect.bind(this)); this.onDealData(); }, onDisable: function onDisable() { this.unbindGEvents(); }, // 首次点击如果获取不到相关的僚机数据,请求 onDealData: function onDealData() { var Elfin = ElfinController.getInstance(); var model = Elfin.getModel(); this.elfinData = model.getElfinTreeData(); // if( nx.dt.objEmpty( this.elfinData ) ){ // Elfin.sender26510(); // }else{ // this.onFreshFirst(); // } Elfin.sender26510(); // getElfinTreeData }, // 收到消息 onFreshFirst: function onFreshFirst(_data) { var Elfin = ElfinController.getInstance(); var model = Elfin.getModel(); this.elfinData = model.getElfinTreeData() || _data; this.onFreshWings(this.elfinData); }, onFreshWings: function onFreshWings(_data) { var elfinData = _data; if (!this.dataAnalyst()) { return; } // {"pos":2,"item_bid":0},{"pos":1,"item_bid":113005} var cfg = game.configs.sprite_data.data_tree_step[elfinData.break_lev]; // 等级 var txt = elfinData.lev + "/" + cfg.lev_max; nx.gui.setString(this.power, "", elfinData.power); nx.gui.setStringRich(this.lev, "", nx.text.format("WingLevel", elfinData.lev, cfg.lev_max)); nx.gui.setString(this.props, "ATK/txt", elfinData.atk); nx.gui.setString(this.props, "HP/txt", elfinData.hp_max); nx.gui.setString(this.props, "DEF/txt", elfinData.def); nx.gui.setString(this.props, "SPD/txt", elfinData.speed); nx.gui.setString(this.stageInfo, "", nx.text.format("FortressLevel_", elfinData.break_lev)); this.reds = []; this.updateNeeds(); this.freshOps(); this.setWingsInfo(this.elfinData); // if( ) // nx.bridge.setIcon( this.role, "", ifg.imageid ); // let ifg = gdata( "item_data","data_unit9", cmp.mdata ); // nx.bridge.setIcon( this.role, "", ifg.imageid ); // this.role_bid = cmp.mdata; }, // 操作刷新 freshOps: function freshOps() { nx.gui.setActive(this, "upstar", false); // 尚未当阶段满级,更新升级花费 // 最大等级按照当前阶段的最高等级/如果是顶阶那么按照最大等级 var maxLv = this.data.cbc.lev_max; if (nx.dt.objEmpty(this.data.nbc)) { maxLv = Math.max(maxLv, this.data.scfg.lev); } if (this.elfinData.lev < maxLv) { nx.gui.setActive(this.ops, "uplevel", true); nx.gui.setActive(this.nodMax, "", false); nx.gui.setActive(this.ops, "break", false); this.updateNeeds(); return; } // 当前满级,需要升阶判断 // 已经顶阶 if (nx.dt.objEmpty(this.data.nbc)) { nx.gui.setActive(this.nodMax, "", true); nx.gui.setActive(this.needs, "", false); nx.gui.setActive(this.ops, "uplevel", false); nx.gui.setActive(this.ops, "break", false); return; } if (this.elfinData.lev == maxLv && this.data.cbc.count <= this.elfinData.break_lev) { nx.gui.setActive(this.needs, "", true); nx.gui.setActive(this.nodMax, "", false); nx.gui.setActive(this.ops, "uplevel", false); nx.gui.setActive(this.ops, "break", true); return; } // 红点提示 this.freshRed(); }, // 刷新当前位置上显示的僚机信息与对应的技能信息 setWingsInfo: function setWingsInfo(_elfinData) { /** * {"lev":2,"break_lev":0,"atk":5872,"def_p":0,"def_s":0,"hp_max":35261,"speed":110,"hit_rate":9999,"dodge_rate":0,"crit_rate":2000,"crit_ratio":1200,"hit_magic":0,"dodge_magic":0,"def":220, * "sprites":[{"pos":1,"item_bid":111004}],"power":75} */ var sprites = _elfinData.sprites; sprites.sort(Utils.tableLowerSorter(["pos"])); var chd = this.stages; for (var i = 0; i < chd.length; i++) { nx.gui.setString(chd[i], "name/txt", nx.text.format("FortressLevel_Unlocked", i)); // nx.gui.setActive( this.skills[i], "", ); var sprite = sprites[i]; if (sprite) { var cmp = chd[sprite.pos - 1].getComponent(ItemBase); if (cmp) { cmp.setLocked(false); if (sprite.item_bid >= 0) { cmp.setData(sprite.item_bid); if (i == 0) { if (sprite.item_bid >= 0) { this.role_bid = sprite.item_bid > 0 ? sprite.item_bid : 0; this.onTouchFormOn(0); // let ifg = gdata( "item_data","data_unit9", sprite.item_bid ) // nx.bridge.setIcon( this.role, "", ifg.imageid ); } else { nx.gui.setSpriteFrame(this.role, "", null); this.role_bid = null; } } var sfgc = game.configs.sprite_data.data_elfin_data[sprite.item_bid]; var scmp = this.skills[sprite.pos - 1].getComponent("cmp.skill.base"); var sfg = gdata("sprite_data", "data_elfin_data", sprite.item_bid); if (sfgc) { var sfgg = gdata("skill_data4", "data_get_skill", sfg.skill); nx.bridge.setIcon(this.skills[sprite.pos - 1], "icon", sfgg.icon); if (scmp) { scmp.setData(sfg.skill); } } else { scmp.setData({}); nx.gui.getComponent(this.skills[sprite.pos - 1], "icon", cc.Sprite).curKey = ""; } nx.gui.setActive(this.skills[sprite.pos - 1], "skillsp", sprite.item_bid > 0); // if( sfgs ) { // nx.bridge.setIcon( this.skills[sprite.pos-1], "icon", parseInt( sfgs.icon ) ); // } // if( sfgc ){ // if( scmp ){ // scmp.setData( sfg.skill ); // } // }else{ // if( scmp ){ // scmp.setData( [] ); // } // } } } } } }, freshRed: function freshRed() { var canUpLevel = true; var needs = 0; this.reds.forEach(function (_need) { if (_need.is_enough) { needs++; } }); canUpLevel = needs >= 2; nx.gui.setActive(this.ops, "uplevel/tip", false); nx.gui.setActive(this.ops, "uplevel/tipSp", !!canUpLevel); }, // 数据统计 dataAnalyst: function dataAnalyst() { // 空目标 if (nx.dt.objEmpty(this.elfinData)) { return false; } var scfg = gdata("sprite_data", "data_tree_up_lv", this.elfinData.lev); if (nx.dt.objEmpty(scfg)) { nx.error("升级刷新失败,当前配置无效!"); return false; } var cbc = game.configs.sprite_data.data_tree_step[this.elfinData.break_lev]; if (nx.dt.objEmpty(cbc)) { nx.error("升级刷新失败,当前配置无效!"); return false; } var k2 = this.elfinData.break_lev + 1; var nbc = game.configs.sprite_data.data_tree_step[k2]; this.data = { scfg: scfg, // 当前配置 cbc: cbc, // 当前阶段配置 nbc: nbc // 下个阶段配置 }; return true; }, // 更新升级花费 updateNeeds: function updateNeeds() { var lev = this.elfinData.lev; var max = lev; var step = 1; var needs = {}; var model = BackpackController.getInstance().getModel(); var check = function check(_costs) { var cur = {}; var enough = true; for (var i = 0; i < _costs.length; ++i) { var cost = _costs[i]; var id = cost[0]; if (cur[id] == null) { cur[id] = 0; } cur[id] = cur[id] + cost[1]; var count = model.getItemNumByBid(id); if (count < cur[id]) { enough = false; } } return { is_enough: enough, cur_cost_list: cur }; }; // 资源统计 var maxLv = Math.max(this.data.cbc.lev_max, this.data.scfg.lev); for (var i = 1; i <= step; ++i) { var next = this.elfinData.lev + i - 1; if (next >= maxLv) { break; } var _cfg = gdata("sprite_data", "data_tree_up_lv", next); if (_cfg) { var up_cost = _cfg.expend || []; var ret = check(up_cost); this.reds.push(ret); var is_enough = ret.is_enough; var cost_list = ret.cur_cost_list; if (is_enough) { needs = cost_list; max = next; } else { if (i == 1) { needs = cost_list; } break; } } } var role_vo = RoleController.getInstance().getRoleVo(); var cfgs = gdata("sprite_data", "data_tree_step", this.elfinData.break_lev); // console.log( role_vo.lev + "当前的判断" + JSON.stringify( cfgs.step_cond[0][1] ) ); if (role_vo.lev < cfgs.step_cond[0][1]) { nx.gui.setString(this.ops, "break/txt", nx.text.format("BreakLevel", cfgs.step_cond[0][1])); } else { nx.gui.setString(this.ops, "break/txt", nx.text.getKey("Break")); } // 消耗刷新 nx.gui.setActive(this.nodMax, "", false); var list = nx.gui.setActive(this.needs, "", true); var cfg = gdata("sprite_data", "data_tree_up_lv", this.elfinData.lev); var expend = cfg ? cfg.expend || [] : []; for (var k = 0; k < expend.length; ++k) { var ifo = expend[k]; var node = list.children[k]; if (nx.dt.arrEmpty(ifo)) { node.active = false; continue; } node.active = true; var item = gdata("item_data", "data_unit1", ifo[0], false); nx.bridge.setIconS(node, "icon", item.icon); var count = ifo[1]; //ifo[1]; // let have_count = model.getItemNumByBid( ifo[ 0 ] ); nx.gui.setString(node, "txt", count); } ; this.freshRed(); }, upLevel: function upLevel() { var cfg = gdata("sprite_data", "data_tree_up_lv", this.elfinData.lev); var mat = cfg.expend[0][0]; var count = BackpackController.getInstance().getModel().getItemNumByBid(mat); var TC = TipsController.getInstance(); if (count < cfg.expend[0][1]) { var ifg = gdata("item_data", "data_unit1", mat); if (TC) { if (ifg) { nx.tbox(nx.text.format(nx.text.getKey("lab_hero_break_window_tip1"), ifg.name)); } TC.showItemTips(mat); return; } } var Elfin = ElfinController.getInstance(); if (Elfin) { Elfin.sender26511(); } }, // 要弹窗 breakLevel: function breakLevel() { var role_vo = RoleController.getInstance().getRoleVo(); var cfg = gdata("sprite_data", "data_tree_step", this.elfinData.break_lev); if (role_vo.lev < cfg.step_cond[0][1]) { nx.tbox(nx.text.format(nx.text.format("BreakLevel", cfg.step_cond[0][1]))); return; } var Elfin = ElfinController.getInstance(); if (Elfin) { Elfin.openElfinTreeStepWindow(true); } }, onTouchFormOn: function onTouchFormOn(_index) { this.stages.forEach(function (_item) { var cmp = _item.getComponent(ItemBase); if (cmp) { cmp.outFocus(); } }); if (this.role_bid == 0) { // nx.bridge.setIcon( this.role, "", "" ); nx.gui.setSpriteFrame(this.role, "", null); nx.gui.getComponent(this.role, "", cc.Sprite).curKey = ""; this.role_bid = 1; } else { var cmp = this.stages[_index].getComponent(ItemBase); if (cmp) { if (!cmp.mdata) { nx.tbox(nx.text.format("FortressLevel_Unlocked", _index)); return; } if (nx.dt.objGood(cmp.mdata)) { nx.tbox(nx.text.getKey("tip_Assemble_first")); return; } if (!nx.dt.objGood(cmp.mdata)) { var ifg = gdata("item_data", "data_unit9", cmp.mdata); nx.bridge.setIcon(this.role, "", ifg.imageid); this.role_bid = cmp.mdata; cmp.onFocus(); } } } }, // 刷新默认操作 onFreshDefault: function onFreshDefault(_schemeDefault) { // 这里存储默认的方案配置信息 // console.log( "获取的默认配置信息" + JSON.stringify( _schemeDefault ) ); var Elfin = ElfinController.getInstance(); Elfin.getModel().freshDefaultScheme(_schemeDefault); }, // 规则说明 onTouchTip: function onTouchTip() { var TC = TipsController.getInstance(); if (TC) { var txt = game.configs.sprite_data.data_const.ancient_desc; TC.showTextPanel("tip", txt.desc); } }, // 打开装配 onTouchAssemble: function onTouchAssemble() { var Elfin = ElfinController.getInstance(); if (Elfin) { // let model = Elfin.getModel(); // let schemes = model.getAllPlanData(); // if( !schemes || nx.dt.objEmpty( schemes ) ){ // Elfin.send26556(); // } Elfin.openElfinAdjustWindow(true, 100, 1); } }, // 打开预览 openElfinBookWindow: function openElfinBookWindow() { var Elfin = ElfinController.getInstance(); if (Elfin) { Elfin.openElfinBookWindow(true); } }, // 打开科研 openWingScientfic: function openWingScientfic() { var Elfin = ElfinController.getInstance(); if (Elfin) { var model = Elfin.getModel(); var lst = model.getElfinHatchList(); if (!lst || nx.dt.objEmpty(lst)) { Elfin.sender26500(); } // Elfin.sender26500(); Elfin.openWingScientfic(true); } }, onPlayEffect: function onPlayEffect() { var _this = this; this.spEffect.load("resDB/effects/E80023/action", function (_e) { if (!_e) { _this.spEffect.action("action", false); } else { _this.spEffect.stop(); } }); }, // 打开采购 openElfinProcurement: function openElfinProcurement() { var Elfin = ElfinController.getInstance(); if (Elfin) { var model = Elfin.getModel(); var summon = model.getElfinSummonData(); if (!summon || nx.dt.arrEmpty(summon)) { Elfin.send26550(); } Elfin.openElfinWishWindow(true); } }, // 点击显示技能介绍 onTouchShowSkill: function onTouchShowSkill() { var sfgc = game.configs.sprite_data.data_elfin_data[this.role_bid]; if (!this.role_bid || this.role_bid == 0 || !sfgc) { nx.tbox("NoneWingsInfo"); return; } var sfg = gdata("sprite_data", "data_elfin_data", this.role_bid); var TC = TipsController.getInstance(); if (TC) { TC.showSkillTips(sfg.skill); } }, // 点击技能显示相应的融合升级技能界面 onTouchSkill: function onTouchSkill(_index) { var EC = ElfinController.getInstance(); var chd = this.stages[_index]; var cmp = chd.getComponent(ItemBase); var scmp = this.skills[_index].getComponent("cmp.skill.base"); var sid = 0; var item_bid = 0; if (scmp) { if (!scmp.mdata) { return; } if (nx.dt.objGood(scmp.mdata)) { nx.tbox(nx.text.getKey("tip_Assemble_first")); return; } if (!nx.dt.objGood(scmp.mdata)) { sid = scmp.mdata; } } if (cmp) { if (!nx.dt.objGood(cmp.mdata)) { item_bid = cmp.mdata; } } if (item_bid == 0 || sid == 0) { return; } if (EC) { var index = parseInt(_index); var pos = index + 1; EC.openElfinCompoundWindow(true, item_bid, sid, pos, wing, 0, function (_data) { if (EC) { EC.sender26508(_data.item_id, 1, pos); // this.close(); } }); } } }); cc._RF.pop();