Files
fc/dev/project/library/imports/b2/b2540534-c2c2-4bbe-9369-ead6e9281abc.js
2026-05-24 10:21:26 +08:00

202 lines
6.6 KiB
JavaScript

"use strict";
cc._RF.push(module, 'b2540U0wsJLvpNp6tbpKBq8', 'cmp.item.partner.detail.wnd');
// Scripts/mod/backpack/cmps/cmp.item.partner.detail.wnd.js
"use strict";
var BridgeWindow = require("bridge.window");
var NxSpine = require("nx.fx.spine");
var BackPackConst = require("backpack_const");
var TipsController = require("tips_controller");
var HeroConst = require("hero_const");
var HeroController = require("hero_controller");
cc.Class({
"extends": BridgeWindow,
properties: {
props: {
"default": null,
type: cc.Node
},
skills: {
"default": null,
type: cc.Node
},
role: {
"default": null,
type: cc.Node
},
smallrole: {
"default": null,
type: NxSpine
}
},
// 重载:参数打开
onOpenConfigs: function onOpenConfigs(_params) {
var key = _params.bid + "_" + _params.star;
this.propsData = gdata("partner_data", "data_partner_show", key);
// this.partner = _params;
this.partner = BackPackConst.uniformData(_params.bid);
// // 无效关闭
// this.partner = _params;
// if( nx.dt.objEmpty( this.partner ) ) {
// this.scheduleOnce( () => {
// this.close();
// }, 0.05 );
// }
this.freshProps();
this.freshRole();
this.freshSkills();
},
// 置空
setEmpty: function setEmpty() {
nx.gui.getComponent(this.role, "role", "nx.fx.spine").stop();
this.smallrole.stop();
nx.gui.setSpriteFrame(this.role, "qa", null);
nx.gui.setActive(nx.gui.find(this.role, "infos"), "", false);
},
freshRole: function freshRole() {
var _this = this;
// 置空
if (nx.dt.objEmpty(this.partner)) {
this.setEmpty();
return;
}
// 名字
nx.gui.setString(nx.gui.find(this.role, "infos"), "name", this.partner.name);
// 品质
var path = cc.path.join("coms/images", "mk_partner_qa" + this.partner.quality);
nx.gui.setSpriteFrame(this.role, "qa", path);
// 阵营
path = cc.path.join("prefab/partner/ui/camp" + this.partner.camp_type);
nx.gui.setSpriteFrame(nx.gui.find(this.role, "infos"), "camp", path);
// 动画
var key = this.partner.bid + "_" + this.partner.init_star;
var cfg = gdata("partner_data", "data_partner_star", key);
if (cfg) {
// 立绘
path = PathTool.getSpinePath(cfg.res_id, "show", false);
nx.gui.getComponent(this.role, "role", "nx.fx.spine").load(path, function (_e) {
if (!_e) {
nx.gui.getComponent(_this.role, "role", "nx.fx.spine").action("action1", true);
} else {
nx.gui.getComponent(_this.role, "role", "nx.fx.spine").stop();
}
});
// 战斗迷你
path = PathTool.getSpinePath(cfg.res_id, cfg.res_id, false);
this.smallrole.load(path, function (_e) {
if (!_e) {
_this.smallrole.action("stand2", true);
} else {
_this.smallrole.stop();
}
});
} else {
nx.gui.getComponent(this.role, "role", "nx.fx.spine").stop();
this.smallrole.stop();
nx.error("立绘配置缺失:", key);
}
console.log(JSON.stringify(cfg));
// 等级
nx.gui.setString(nx.gui.find(this.role, "infos"), "lv", "Lv." + cfg.lev_max || 1);
// 星级
var paths = cc.path.join("coms/images", "star" + this.partner.init_star);
nx.gui.setSpriteFrame(nx.gui.find(this.role, "infos"), "stars", paths);
},
freshProps: function freshProps() {
// 等级
// let maxlv = Math.max( cbc.lev_max, scfg.lev_max );
nx.gui.setString(this.props, "lv/txt", this.propsData.lev + "/" + this.propsData.lev);
var HM = HeroController.getInstance().getModel();
var count = HM.getHeroMaxBreakCountByInitStar(this.partner.init_star);
nx.gui.gocChildren(this.props, "grade/star", count);
// 职业
var career = this.partner.type || 4;
var icon = cc.path.join("coms/images", "career" + career);
var name = HeroConst.CareerName[career] || nx.text.getKey("lab_none");
nx.gui.setActive(this.props, "career", true);
nx.gui.setString(this.props, "career/txt", nx.text.getKey(name));
nx.gui.setSpriteFrame(this.props, "career/icon", icon);
nx.gui.setActive(this.props, "help", true);
// 属性
nx.gui.setString(this.props, "atk/txt", this.propsData.atk);
nx.gui.setString(this.props, "def/txt", this.propsData.def);
nx.gui.setString(this.props, "hp/txt", this.propsData.hp);
nx.gui.setString(this.props, "speed/txt", this.propsData.speed);
},
freshSkills: function freshSkills() {
var HM = HeroController.getInstance().getModel();
var break_count = HM.getHeroMaxBreakCountByInitStar(this.partner.init_star);
// 数据统计
var key = this.partner.bid + "_" + this.partner.init_star;
var scfg = gdata("partner_data", "data_partner_star", key);
var k1 = this.partner.type + "_" + this.partner.break_id + "_" + break_count;
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;
}
// nx.gui.setActive( this.skills, "", true );
var count = cbc.skill_num;
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;
}
item.active = true;
var cmp = nx.gui.getComponent(item, "", "cmp.skill.base");
if (cmp) {
cmp.setData(sifo[1], i + 1 > count);
}
}
},
// 点击角色
onTouchRole: function onTouchRole() {
var _this2 = this;
// 屏蔽频繁点击打断
if (nx.gui.getComponent(this.role, "role", "nx.fx.spine").spAction != "action1") {
return;
}
// 播放 -> 常态
nx.gui.getComponent(this.role, "role", "nx.fx.spine").action("action2", false, function (_event) {
if (_event == "complete") {
nx.gui.getComponent(_this2.role, "role", "nx.fx.spine").action("action1", true);
}
});
},
// 人物介绍
onTouchStory: function onTouchStory() {
var TC = TipsController.getInstance();
var txt = nx.text.getKey("story" + this.partner.bid);
TC.showTextPanel("PartnerStory", txt);
},
// 点击详情
onTouchDetail: function onTouchDetail() {
if (nx.dt.objNEmpty(this.partner)) {
var HC = HeroController.getInstance();
HC.openHeroTipsAttrPanel(true, this.propsData, true);
}
},
// 观察
onTouchWatch: function onTouchWatch() {
HeroController.getInstance().openHeroLookDrawWindowTest(true, this.partner);
}
});
cc._RF.pop();