Files

458 lines
13 KiB
JavaScript
Raw Permalink Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, '4ed5c8wJE9G9JPCxYTADehr', 'cmp.partner.equips');
// Scripts/mod/partner/cmps/basic/cmp.partner.equips.js
"use strict";
/******************************************************************
*
* 伙伴信息页 --- 装备
*
******************************************************************/
var BridgeComponent = require("bridge.component");
var HeroConst = require("hero_const");
var HeroEvent = require("hero_event");
var HeroControl = require("hero_controller");
var HeroCalculate = require("hero_calculate");
var HomeMod = require("home.mod");
var FID = require("bridge.function.ids");
var TipsController = require("tips_controller");
var BackpackController = require("backpack_controller");
var BackPackConst = require("backpack_const");
var BIT = BackPackConst.item_type;
var HEQP = HeroConst.EquipPosList;
cc.Class({
"extends": BridgeComponent,
properties: {
nodEquips: {
"default": null,
type: cc.Node
},
nodArtifacts: {
"default": null,
type: cc.Node
},
spOnce: {
"default": null,
type: sp.Skeleton
},
nodWeapon: {
"default": null,
type: cc.Node
}
},
// 显示
onLoad: function onLoad() {
// 视图监听
this.vbind([["ShowPartner", this.onPartnerChanged.bind(this)]]);
// 事件监听
// this.bindGEvent( HeroEvent.Hero_Data_Update, this.onPartnerUpdate.bind( this ) );
this.bindGEvent(HeroEvent.Equip_Update_Event, this.onPartnerUpdate.bind(this));
this.bindGEvent(HeroEvent.Artifact_Update_Event, this.onPartnerUpdate.bind(this));
this.spOnce.animation = "";
nx.st = this;
},
// 隐藏
// onDisable: function() {
// // 视图监听解除
// this.vunbind();
// // 事件监听解除
// this.unbindGEvents();
// },
// 有伙伴数据更新
onPartnerUpdate: function onPartnerUpdate(_vo) {
if (_vo && this.partner && _vo.partner_id == this.partner.partner_id) {
this.onPartnerChanged(_vo);
nx.bridge.vset("ShowPartner", _vo);
}
},
// 伙伴更新
onPartnerChanged: function onPartnerChanged(_partner) {
this.partner = _partner;
// 亲密度
if (!game.configs.favor_data) {
nx.gui.setActive(this.nodWeapon, "", false);
} else {
var canshow = 0;
this.emptyeqm = {};
var weaponcfg = game.configs.weapon_data.data_get_skill;
this.unlock = game.configs.weapon_data.data_const.unlock_con.val;
for (var e in weaponcfg) {
var eqm = weaponcfg[e];
if (eqm.partner_id == this.partner.bid) {
canshow++;
this.emptyeqm = {
bid: eqm.id,
num: 1
};
}
}
nx.gui.setActive(this.nodWeapon, "", canshow > 0);
// let girl = HomeMod.getInstance().queryGirl( this.partner.bid );
// if( girl ) {
// nx.gui.setActive( this.nodWeapon, "", true );
// } else {
// nx.gui.setActive( this.nodWeapon, "", false );
// }
}
// 全刷新
this.freshEquipments();
this.freshArtifacts();
// this.freshExWeapon();
},
// 刷新装备槽
freshEquipments: function freshEquipments() {
// 空处理
var root = this.nodEquips.parent;
var slots = this.nodEquips;
var empty = function empty(_sc) {
if (_sc === void 0) {
_sc = false;
}
// 卡槽置空
slots.children.forEach(function (_c) {
nx.gui.setActive(_c, "item", false);
nx.gui.setActive(_c, "tip", false);
nx.gui.setActive(_c, "empty", true);
});
// 操作置空
if (_sc) {
nx.gui.setActive(root, "onceOn", false);
nx.gui.setActive(root, "onceOff", false);
}
};
// 判空
if (nx.dt.objEmpty(this.partner)) {
empty(true);
return;
}
var canUpdate = false;
var calculate = HeroCalculate.getInstance();
var model = HeroControl.getInstance().getModel();
var eqmAll = model.getHeroEquipList(this.partner.partner_id) || {};
// 装备刷新
var eqms = this.partner.eqm_list;
var weapon = {};
if (eqms) {
for (var i in eqms) {
var eqm = eqms[i];
if (eqm && eqm.type == BIT.Exclusive) {
// if( wcfg[eqm.] )
weapon = eqm;
}
}
} else {
weapon = {};
}
for (var pos in HEQP) {
// 当前装备
var _eqm = eqms[pos];
var emt = nx.dt.objEmpty(_eqm);
var slot = nx.gui.find(slots, "slot" + pos);
nx.gui.setActive(slot, "item", !emt);
nx.gui.setActive(slot, "empty", emt);
if (!emt) {
var icon = nx.gui.getComponent(slot, "item", "cmp.item.base");
if (icon) {
icon.setData(_eqm);
}
}
// 红点提示
var etype = HEQP[pos];
var rp = calculate.checkSingleHeroEachPosEquipRedPoint(etype, eqmAll[etype]);
nx.gui.setActive(slot, "tip", rp);
// 有提升
if (!canUpdate && rp) {
canUpdate = true;
}
}
// 快捷显隐
if (canUpdate || nx.dt.objEmpty(eqms)) {
nx.gui.setActive(root, "onceOn", true);
nx.gui.setActive(root, "onceOff", false);
} else {
nx.gui.setActive(root, "onceOn", false);
nx.gui.setActive(root, "onceOff", true);
}
this.freshExWeapon(weapon);
},
// 刷新神器槽
freshArtifacts: function freshArtifacts() {
var _Conditions, _this$artLocked;
// 置空
var slots = this.nodArtifacts;
var empty = function empty() {
slots.children.forEach(function (_c) {
nx.gui.setActive(_c, "item", false);
nx.gui.setActive(_c, "tip", false);
nx.gui.setActive(_c, "lock", false);
nx.gui.setActive(_c, "empty", true);
});
};
// 判空
if (nx.dt.objEmpty(this.partner)) {
empty(true);
return;
}
var CPD = game.configs.partner_data.data_partner_const;
var Conditions = (_Conditions = {}, _Conditions[1] = CPD["artifact_one"].val, _Conditions[2] = CPD["artifact_two"].val, _Conditions);
// 锁定统计
this.artLocked = (_this$artLocked = {}, _this$artLocked[1] = {
lock: false,
desc: ""
}, _this$artLocked[2] = {
lock: false,
desc: ""
}, _this$artLocked);
for (var pos in Conditions) {
var cond = Conditions[pos];
switch (cond[0]) {
case "lev":
{
if (this.partner.lev < cond[1]) {
this.artLocked[pos].lock = true;
this.artLocked[pos].desc = cond[1] + nx.text.getKey("btn_lvUnlock");
} else {
var maxLv = game.configs.partner_data.data_partner_max_lev[this.partner.bid];
if (maxLv && maxLv >= cond[1]) {
this.artLocked[pos].lock = false;
// this.artLocked[ pos ].desc = cond[ 1 ] + nx.text.getKey( "btn_lvUnlock" );
}
}
}
break;
case "star":
{
if (this.partner.star < cond[1]) {
this.artLocked[pos].lock = true;
this.artLocked[pos].desc = cond[1] + nx.text.getKey("btn_starUnlock");
} else {
var maxSt = game.configs.partner_data.data_partner_max_star[this.partner.bid];
if (maxSt && maxSt >= cond[1]) {
this.artLocked[pos].lock = false;
// this.artLocked[ pos ].desc = cond[ 1 ] + nx.text.getKey( "btn_starUnlock" );
}
}
}
break;
default:
{
nx.error("未处理的解锁条件!", cond[0]);
}
break;
}
}
var arts = this.partner.artifact_list || {};
var calculate = HeroCalculate.getInstance();
// 刷新
for (var _pos in this.artLocked) {
// 当前装备
var art = arts[_pos];
var emt = nx.dt.objEmpty(art);
var sta = this.artLocked[_pos];
var slot = nx.gui.find(slots, "slot" + _pos);
nx.gui.setActive(slot, "item", !emt);
nx.gui.setActive(slot, "empty", emt && !sta.lock);
nx.gui.setActive(slot, "lock", emt && sta.lock);
if (!emt) {
var icon = nx.gui.getComponent(slot, "item", "cmp.item.base");
if (icon) {
icon.setData(art);
}
}
// 红点提示
var red = false;
if (!sta.lock && art) {
red = calculate.checkSingleArtifactRedPoint(art);
}
nx.gui.setActive(slot, "tip", red);
}
},
// 刷新专属武器
freshExWeapon: function freshExWeapon(_weapon) {
var self = this;
var weapon = nx.dt.objEmpty(_weapon) && this.partner.star < this.unlock ? this.emptyeqm : _weapon;
var slot = nx.gui.find(this.nodWeapon, "slot1");
nx.gui.find(slot, "lock").info = weapon;
var icon = nx.gui.getComponent(slot, "item", "cmp.item.base");
var empty = function empty() {
if (icon) {
icon.setData(null);
}
nx.gui.setActive(slot, "item", false);
nx.gui.setActive(slot, "tip", false);
nx.gui.setActive(slot, "empty", true);
nx.gui.setActive(slot, "lock", self.partner.star < self.unlock);
};
if (nx.dt.objEmpty(weapon)) {
empty();
return;
}
// 当前装备
nx.gui.setActive(slot, "item", true);
nx.gui.setActive(slot, "tip", false);
nx.gui.setActive(slot, "empty", false);
nx.gui.setActive(slot, "lock", this.partner.star < this.unlock);
nx.gui.setActive(slot, "touch", this.partner.star >= this.unlock);
if (icon) {
icon.setData(weapon);
}
// // 红点提示
// let red = false;
// if( !sta.lock && art ) {
// red = calculate.checkSingleArtifactRedPoint( art );
// }
// nx.gui.setActive( slot, "tip", red );
},
// 点击装备槽
onTouchEquipmentSlot: function onTouchEquipmentSlot(_partId) {
var self = this;
var HC = HeroControl.getInstance();
var eqms = this.partner.eqm_list;
var eqm = eqms[_partId];
// if( this.partner.star < 10 && _partId == 41 ){
// nx.tbox( nx.text.format( "WearWeaponTip", 10 ) );
// return;
// }
// 脱下
var takeoff = function takeoff() {
HC.sender11011(self.partner.partner_id, eqm.id);
};
// 更换
var change = function change() {
HC.openEquipPanel(true, {
type: parseInt(_partId),
partner_id: self.partner.bid
}, function (_id, _panel) {
_panel.close();
HC.sender11010(self.partner.partner_id, _id);
});
};
// 当前装备操作
if (eqm) {
HC.openEquipChangePanel(true, eqm, function (_op, _panel) {
_panel.close();
if (_op == "takeoff") {
takeoff();
}
if (_op == "change") {
change();
}
});
}
// 新装备穿戴
else {
change();
}
},
// 点击神器槽
onTouchArtifactSlot: function onTouchArtifactSlot(_slotId) {
var pos = parseInt(_slotId);
var sta = this.artLocked[pos];
if (sta.lock) {
if (nx.dt.strNEmpty(sta.desc)) {
nx.tbox(sta.desc);
}
return;
}
var self = this;
var HC = HeroControl.getInstance();
var arts = self.partner.artifact_list;
var art = arts[pos];
art ? art.partner_id = self.partner.partner_id : "";
// 洗炼
var refinement = function refinement() {
nx.bridge.jumper.jump2Window(FID.ArtifactReset, {
item: art,
pos: pos,
config: art.config
});
};
// 脱下
var takeoff = function takeoff() {
HC.sender11030(self.partner.partner_id, pos, art.id, 0);
};
// 更换
var change = function change() {
HC.openEquipPanel(true, {
type: BIT.ARTIFACTCHIPS,
partner_id: self.partner.bid
}, function (_id, _panel) {
_panel.close();
HC.sender11030(self.partner.partner_id, pos, _id, 1);
});
};
// 当前神器操作
if (art) {
HC.openEquipChangePanel(true, art, function (_op, _panel) {
_panel.close();
if (_op == "takeoff") {
takeoff();
}
if (_op == "change") {
change();
}
if (_op == "refinement") {
refinement();
}
});
}
// 新装备神器
else {
change();
}
},
// 一键穿戴
onTouchOnceOn: function onTouchOnceOn() {
if (this.partner && nx.dt.numPositive(this.partner.partner_id, false)) {
var HC = HeroControl.getInstance();
HC.sender11010(this.partner.partner_id, 0);
this.spOnce.animation = "action";
}
},
// 一键脱装
onTouchOnceOff: function onTouchOnceOff() {
if (this.partner && nx.dt.numPositive(this.partner.partner_id, false)) {
var HC = HeroControl.getInstance();
HC.sender11011(this.partner.partner_id, 0);
}
},
onTouchWeaponLock: function onTouchWeaponLock(_nod) {
var TC = TipsController.getInstance();
if (TC && _nod.info) {
TC.showItemTips(_nod.info.bid ? _nod.info.bid : _nod.info.base_id);
}
}
});
cc._RF.pop();