458 lines
13 KiB
JavaScript
458 lines
13 KiB
JavaScript
|
|
"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();
|