"use strict"; cc._RF.push(module, '4f265SvHClLAZOM1FGeulcz', 'tips.partner.common'); // Scripts/mod/tips/cmp/tips.partner.common.js "use strict"; /****************************************************************** * * 通用伙伴提示 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var SkillBase = require("cmp.skill.base"); var HeroController = require("hero_controller"); var ItemBase = require("cmp.item.base"); var EqmCount = 6; var HolyEqmCount = 4; cc.Class({ "extends": BridgeWindow, properties: { partnerHead: { "default": null, type: cc.Node }, partnerName: { "default": null, type: cc.Node }, partnerPower: { "default": null, type: cc.Node }, partnerCareer: { "default": null, type: cc.Node }, partnerSpecial: { "default": null, type: cc.Node }, partnerStar: { "default": null, type: cc.Node }, baseProps: { "default": null, type: cc.Node }, skills: { "default": null, type: cc.Node }, talent: { "default": null, type: cc.Node }, eqmLst: { "default": null, type: cc.Node }, holyLst: { "default": null, type: cc.Node }, weapon: { "default": null, type: cc.Node }, desc: { "default": null, type: cc.Node } }, // 重载:参数打开 onOpenConfigs: function onOpenConfigs(_params) { // 设置头像 nx.gui.gocChildren(this.eqmLst, "", EqmCount); for (var i = 0; i < this.eqmLst.children.length; i++) { var item = this.eqmLst.children[i]; var empty = nx.gui.find(item, "empty"); nx.gui.setActive(item, "skill", false); if (i == 4) { empty.scale = 0.8; item.scale = 0.8; } if (i == 5) { nx.gui.setSpriteFrame(empty, "icon", "coms/images/equip" + i); empty.scale = 0.8; item.scale = 0.8; continue; } nx.gui.setSpriteFrame(empty, "icon", "coms/images/equip" + (i + 1)); } nx.gui.gocChildren(this.holyLst, "", HolyEqmCount); for (var j = 0; j < this.holyLst.children.length; j++) { var _item = this.holyLst.children[j]; var _empty = nx.gui.find(_item, "empty"); nx.gui.setSpriteFrame(_empty, "icon", "coms/images/holy" + (j + 1)); } this.setData(_params); }, setData: function setData(_data) { this.partner = _data; // 置空 if (nx.dt.objEmpty(this.partner)) { // this.setEmpty(); return; } var change = false; // 数据统计 var weapon = {}; var list = this.partner.eqms; for (var i in list) { var eqm = list[i]; if (eqm.type == 41) { weapon = eqm; } } var wcfg = nx.dt.objNEmpty(weapon) ? game.configs.weapon_data.data_get_skill[weapon.base_id] : {}; if (nx.dt.objNEmpty(wcfg)) { change = this.partner.bid == wcfg.partner_id; } var data = this.partner.bid || 0; var cmp = this.partnerHead.getComponent("cmp.item.base"); if (cmp) { cmp.setData(this.partner.bid); } nx.gui.setSpriteFrame(this.partnerHead, "star", "coms/images/star" + this.partner.star); var config = game.configs.partner_data.data_partner_base[this.partner.bid]; if (!config) { return; } nx.gui.setString(this.partnerSpecial, "txt", config.introduce_str); var career = ""; switch (config.type) { case 2: { career = nx.text.getKey("Energy"); } ; break; case 3: { career = nx.text.getKey("Aggressive"); } ; break; case 4: { career = nx.text.getKey("Tough"); } ; break; case 5: { career = nx.text.getKey("Support"); } ; break; } nx.gui.setString(this.partnerCareer, "txt", career); nx.gui.setString(this.partnerName, "", config.name); // setProp if (this.partnerPower) { nx.gui.setString(this.partnerPower, "", this.partner.power); nx.gui.setActive(this.partnerPower.parent.parent, "", this.partner.power); } // 属性设置 nx.gui.setString(this.baseProps, "attack/txt", this.partner.atk); nx.gui.setString(this.baseProps, "hp/txt", this.partner.hp); nx.gui.setString(this.baseProps, "speed/txt", this.partner.speed); nx.gui.setString(this.baseProps, "def/txt", this.partner.def); // 设置图标 nx.gui.setSpriteFrame(this.baseProps, "attack/ico", "coms/images/ico_watk"); nx.gui.setSpriteFrame(this.baseProps, "hp/ico", "coms/images/ico_whp"); nx.gui.setSpriteFrame(this.baseProps, "speed/ico", "coms/images/ico_wspeed"); nx.gui.setSpriteFrame(this.baseProps, "def/ico", "coms/images/ico_wdef"); // nx.gui.setString( this.partnerPower, "", this.partner.power ); // 技能数据 var key = this.partner.bid + "_" + this.partner.star; var scfg = gdata("partner_data", "data_partner_star", key); // console.log( "数据表" + JSON.stringify(scfg) ); var k1 = config.type + "_" + config.break_id + "_" + this.partner.break_lev; var cbc = game.configs.partner_data.data_partner_brach[k1]; if (nx.dt.objEmpty(scfg) || nx.dt.objEmpty(cbc)) { nx.error("技能刷新失败,当前配置无效!", k1); this.setEmpty(); return; } // console.log( "数据表2" + JSON.stringify( cbc ) ); nx.gui.gocChildren(this.skills, "", scfg.skills.length - 1); nx.gui.setActive(this.skills, "", true); var chds = this.skills.children; for (var _i = 0; _i < chds.length; ++_i) { // 技能数组[0]为普攻,直接忽略,最多4个技能 var item = chds[_i]; var sifo = scfg.skills[_i + 1]; if (!sifo) { item.active = false; continue; } else { item.active = true; var _cmp = nx.gui.getComponent(item, "", SkillBase); if (_cmp) { _cmp.setData(change && _i == chds.length - 2 ? wcfg.skill_id : sifo[1]); } } } this.setStar(this.partner); this.setTalent(this.partner); this.setEqms(this.partner); // let descStr = game.configs.partner_data.data_partner_base[_data.bid].introduce_str; var txt = nx.text.getKey("story" + this.partner.bid); nx.gui.setString(this.desc, "", txt); // console.log( "伙伴信息" + JSON.stringify( game.configs.partner_data.data_partner_base[_data.bid] ) ); }, // 设置星级效果 setStar: function setStar(_data) { var star = _data.star; var HC = HeroController.getInstance(); var HM = HC.getModel(); var max_count = HM.getHeroMaxBreakCountByInitStar(star); // console.log( "最大数量" + max_count + "突破等级" + _data.break_lev ); var break_count = _data.break_lev; nx.gui.gocChildren(this.partnerStar, "", max_count); for (var i = 0; i < nx.gui.find(this.partnerStar).childrenCount; i++) { var item = nx.gui.find(this.partnerStar, "").children[i]; if (break_count != 0) { if (i < break_count) { nx.gui.setSpriteFrame(item, "icon", "prefab/partner/ui/partner_22"); } else { nx.gui.setSpriteFrame(item, "icon", "prefab/partner/ui/partner_23"); } } else { nx.gui.setSpriteFrame(item, "icon", "prefab/partner/ui/partner_23"); } } }, // downskill setTalent: function setTalent(talent) { if (!talent.dower_skill) { nx.gui.setActive(this.talent, "", false); return; } var talent_skill = talent.dower_skill; /**** * <<<[10:55:35][11061]:{"partner_id":300,"bid":10511,"lev":90,"star":13, * "skills":[{"pos":1,"skill_bid":518001},{"pos":2,"skill_bid":518103},{"pos":3,"skill_bid":518203},{"pos":4,"skill_bid":518303},{"pos":5,"skill_bid":518403}],"break_lev":5,"power":195884,"is_lock":[],"use_skin":0,"end_time":0,"resonate_lev":0,"resonate_break_lev":0,"atk":28084,"def_p":0,"def_s":0,"hp":328830,"speed":720,"hit_rate":1000,"dodge_rate":0,"crit_rate":0,"crit_ratio":1500,"hit_magic":0,"dodge_magic":0,"dam":0,"res":0,"cure":150,"be_cure":50,"tenacity":0,"def":819,"dam_p":0,"dam_s":0,"res_p":0,"res_s":0,"atk2":160916,"hp2":1774076,"def2":7704,"speed2":5260, * "eqms":[{"id":74,"base_id":40216,"type":3},{"id":50,"base_id":40316,"type":4},{"id":16,"base_id":40116,"type":1},{"id":75,"base_id":40416,"type":2}], * "artifacts":[], * "dower_skill":[{"pos":1,"skill_id":700081},{"pos":2,"skill_id":700291}], * "ext_data":[{"id":6,"val":0},{"id":5,"val":0},{"id":4,"val":1},{"id":3,"val":0},{"id":2,"val":0},{"id":1,"val":0}], * "holy_eqm":[],"r_rid":274,"r_srvid":"fx_1"} */ // 技能数据 nx.gui.gocChildren(this.talent, "lst", talent_skill.length); nx.gui.setActive(this.talent, "lst", nx.dt.arrNEmpty(talent_skill)); nx.gui.setActive(this.talent, "empty", nx.dt.arrEmpty(talent_skill)); var chds = nx.gui.find(this.talent, "lst").children; for (var i = 0; i < chds.length; ++i) { // 技能数组[0]为普攻,直接忽略,最多4个技能 var item = chds[i]; var sifo = talent_skill[i]; var cmp = nx.gui.getComponent(item, "", SkillBase); if (!sifo) { item.active = false; continue; } else { if (cmp) { cmp.setData(sifo.skill_id); } item.active = true; } } nx.gui.setActive(this.talent, "", true); }, // 设置装备信息 setEqms: function setEqms(eqms) { if (!eqms.eqms) { nx.gui.setActive(this.eqmLst.parent, "", false); nx.gui.setActive(this.holyLst.parent, "", false); return; } var _eqms = eqms.eqms; var sp_eqms = eqms.artifacts; var holy_eqms = eqms.holy_eqm || eqms.holy_eqm_list; var HC = HeroController.getInstance(); // 伙伴装备信息 var chds = this.eqmLst.children; // 必要数据 var info = { count: 1 // 数量 }; var special = {}; _eqms.sort(Utils.tableLowerSorter(["type"])); var _loop = function _loop() { // 技能数组[0]为普攻,直接忽略,最多4个技能 var item = chds[i]; var sifo = _eqms[i]; if (sifo) { if (sifo.type != 41) { info.item_id = sifo.base_id; var _cmp4 = item.getComponentInChildren(ItemBase); if (_cmp4) { _cmp4.setData(sifo.base_id, info.count); nx.gui.find(item, "touch").info = { cb: function cb() { _cmp4.onTouchTip(); } }; nx.gui.setActive(item, "empty", false); } } else { special = sifo; } } }; for (var i = 0; i < chds.length; ++i) { _loop(); } if (nx.dt.objNEmpty(special)) { var nod = nx.gui.find(this.weapon, "lst"); var spnod = nod.children[0]; var cmp = nx.gui.getComponent(spnod, "", "cmp.item.base"); if (cmp) { cmp.setData(special.base_id, 1); } var cfg = gitemdata(special.base_id); var desc = nx.gui.find(this.weapon, "lst/desc"); var dnod = nx.gui.find(desc, "view/content/txt"); nx.gui.setString(dnod, "", cfg.desc); } if (sp_eqms.length > 0) { var _loop2 = function _loop2() { // 技能数组[0]为普攻,直接忽略,最多4个技能 var item = chds[_i2 + 4]; var sifo = sp_eqms[_i2]; if (sifo) { var _cmp2 = item.getComponentInChildren(ItemBase); if (_cmp2) { // console.log( "设置数据" + info ); _cmp2.setData(sifo.base_id, info.count); nx.gui.setActive(item, "empty", false); nx.gui.find(item, "touch").info = { cb: function cb() { sifo.noop = "nono"; sifo.data = sifo; HC.openEquipChangePanel(true, sifo); } }; } } }; for (var _i2 = 0; _i2 < sp_eqms.length; ++_i2) { _loop2(); } } if (holy_eqms.length > 0) { for (var _i3 = 0; _i3 < holy_eqms.length; ++_i3) { // 技能数组[0]为普攻,直接忽略,最多4个技能 var item = this.holyLst.children[_i3]; var sifo = holy_eqms[_i3]; if (sifo) { var _cmp3 = item.getComponentInChildren(ItemBase); if (_cmp3) { // console.log( "设置数据" + info ); _cmp3.setData(sifo.base_id, info.count); nx.gui.setActive(nx.gui.find(item, "empty"), ""); } } } } nx.gui.setActive(this.weapon, "", nx.dt.objNEmpty(special)); nx.gui.setActive(this.eqmLst.parent, "", true); nx.gui.setActive(this.holyLst.parent, "", true); }, detailInfo: function detailInfo() { var HC = HeroController.getInstance(); HC.openHeroTipsAttrPanel(true, this.partner); }, onTouchItem: function onTouchItem(_nod) { var cb = _nod.info.cb; nx.dt.fnInvoke(cb, true); } }); cc._RF.pop();