Files
fc/dev/project/library/imports/4f/4f2654af-1c29-4b01-938c-d4519eba5733.js
2026-05-24 10:21:26 +08:00

395 lines
13 KiB
JavaScript

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