265 lines
7.4 KiB
JavaScript
265 lines
7.4 KiB
JavaScript
"use strict";
|
|
cc._RF.push(module, '84090soTw5KGZmlRppoNWre', 'cmp.sync.center.wnd');
|
|
// Scripts/mod/home/sync_center/cmp.sync.center.wnd.js
|
|
|
|
"use strict";
|
|
|
|
/******************************************************************
|
|
*
|
|
* 同步中心界面
|
|
*
|
|
******************************************************************/
|
|
|
|
var BridgeWindow = require("bridge.window");
|
|
var FxSVC = require("nx.fx.sv.expand");
|
|
var HeroEvent = require("hero_event");
|
|
var HeroController = require("hero_controller");
|
|
var HomeMod = require("home.mod");
|
|
var TipsController = require("tips_controller");
|
|
cc.Class({
|
|
"extends": BridgeWindow,
|
|
properties: {
|
|
nodTars: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
nodVolume: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
nodLevel: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
svcList: {
|
|
"default": null,
|
|
type: FxSVC
|
|
}
|
|
},
|
|
// 显示
|
|
onEnable: function onEnable() {
|
|
// 事件监听
|
|
this.bindGEvent(HeroEvent.Hero_Resonate_Crystal_Info_Event, this.onFreshData.bind(this));
|
|
|
|
// 置空
|
|
this.setEmpty();
|
|
|
|
// 数据更新
|
|
HeroController.getInstance().sender26425();
|
|
},
|
|
// 关闭
|
|
onDisable: function onDisable() {},
|
|
// 置空
|
|
setEmpty: function setEmpty() {
|
|
// 文本置空
|
|
nx.gui.setString(this.nodLevel, "txt", "Lv.--");
|
|
nx.gui.setString(this.nodVolume, "txt", "0/0");
|
|
|
|
// 伙伴置空
|
|
this.svcList.rebuild([]);
|
|
|
|
// 目标置空
|
|
this.nodTars.children.forEach(function (_tar) {
|
|
nx.gui.setActive(_tar, "normal", false);
|
|
nx.gui.setActive(_tar, "empty", true);
|
|
});
|
|
this.data = null;
|
|
this.tarTag = "";
|
|
},
|
|
// 全刷新
|
|
onFreshData: function onFreshData(_data) {
|
|
if (nx.dt.objEmpty(_data)) {
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
this.data = _data;
|
|
var DATA = game.configs.resonate_data;
|
|
|
|
// 同步等级
|
|
var txt = nx.text.format("LvNumber", _data.lev);
|
|
nx.gui.setString(this.nodLevel, "txt", txt);
|
|
|
|
// 容量
|
|
var count = _data.res_list.length;
|
|
var max = DATA.data_const.cell_max.val;
|
|
txt = count + "/" + max;
|
|
nx.gui.setString(this.nodVolume, "txt", txt);
|
|
|
|
// 目标列表刷新
|
|
// **目前是全刷新,做一次重复过滤
|
|
var tag = JSON.stringify(_data.con_list);
|
|
if (tag != this.tarTag) {
|
|
this.tarTag = tag;
|
|
var chds = this.nodTars.children;
|
|
for (var i = 0; i < chds.length; ++i) {
|
|
this.freshTarget(chds[i], _data.con_list[i]);
|
|
}
|
|
}
|
|
|
|
// 伙伴槽刷新
|
|
this.slots = [];
|
|
for (var _i = 0; _i < max; ++_i) {
|
|
var tm = _data.res_list[_i];
|
|
var ifo = tm ? nx.dt.objClone(tm) : {
|
|
pos: -1,
|
|
id: 0,
|
|
cool_time: 0,
|
|
canUnlock: _i == count
|
|
};
|
|
this.slots.push(ifo);
|
|
}
|
|
this.svcList.rebuild(this.slots);
|
|
},
|
|
// 同步标的单刷
|
|
freshTarget: function freshTarget(_node, _data) {
|
|
// 置空
|
|
if (nx.dt.objEmpty(_data) || !nx.dt.numPositive(_data.id, false)) {
|
|
nx.gui.setActive(_node, "normal", false);
|
|
nx.gui.setActive(_node, "empty", true);
|
|
return;
|
|
}
|
|
|
|
// 更新
|
|
var HC = HeroController.getInstance();
|
|
var partner = HC.getModel().getHeroById(_data.id);
|
|
if (!partner) {
|
|
nx.error("同步目标无效:", _data.id);
|
|
nx.gui.setActive(_node, "normal", false);
|
|
nx.gui.setActive(_node, "empty", true);
|
|
return;
|
|
}
|
|
|
|
// 获取配置
|
|
var key = partner.bid + "_" + partner.star;
|
|
var cfgs = gdata("partner_data", "data_partner_star", key);
|
|
if (!cfgs) {
|
|
nx.error("同步目标配置无效:", _data.id, key);
|
|
nx.gui.setActive(_node, "normal", false);
|
|
nx.gui.setActive(_node, "empty", true);
|
|
return;
|
|
}
|
|
nx.gui.setActive(_node, "empty", false);
|
|
nx.gui.setActive(_node, "normal", true);
|
|
|
|
// 等级
|
|
nx.gui.setString(_node, "normal/level", partner.lev);
|
|
|
|
// 角色
|
|
var path = cc.path.join("resDB/models", cfgs.res_id, "half_show2");
|
|
nx.gui.setSpriteFrame(_node, "normal/avatar/img", path, function (_ret) {
|
|
if (!_ret) {
|
|
nx.gui.setSpriteFrame(_node, "normal/avatar/img", "resDB/empty/half_show2");
|
|
}
|
|
});
|
|
},
|
|
// 点击说明
|
|
onTouchHelp: function onTouchHelp() {
|
|
var DATA = game.configs.resonate_data.data_const.rule_tips2;
|
|
if (nx.dt.objNEmpty(DATA) && nx.dt.strNEmpty(DATA.desc)) {
|
|
var TC = TipsController.getInstance();
|
|
TC.showTextPanel("tip", DATA.desc);
|
|
}
|
|
},
|
|
// 点击扩容
|
|
// 改: 不使用道具,只能用钻石购买
|
|
onTouchExpand: function onTouchExpand() {
|
|
var _this = this;
|
|
var count = this.data ? this.data.gold_count : 0;
|
|
count = Math.max(1, count);
|
|
var DATA = game.configs.resonate_data.data_cell_cost;
|
|
var cfgs = DATA[count];
|
|
if (nx.dt.objEmpty(cfgs) || nx.dt.arrEmpty(cfgs.loss2) || nx.dt.arrEmpty(cfgs.loss2[0])) {
|
|
return;
|
|
}
|
|
var cost = cfgs.loss2[0];
|
|
var info = gitemdata(cost[0]);
|
|
var msg = nx.text.format("lab_hero_resonate_tab_resonate_panel_tip2", info.icon, cost[1]);
|
|
nx.mbox(msg, ['cancel', 'confirm'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == 'confirm') {
|
|
var HC = HeroController.getInstance();
|
|
HC.sender26429(_this.data.res_list.length + 1, 2);
|
|
}
|
|
});
|
|
},
|
|
// 点击添加
|
|
onJoinPartner: function onJoinPartner(_pos) {
|
|
var HC = HeroController.getInstance();
|
|
var HM = HC.getModel();
|
|
var partners = [];
|
|
var targets = HM.getDicResonateFiveHeroVo();
|
|
var all = HC.getModel().getHeroList() || [];
|
|
for (var k in all) {
|
|
var pt = all[k];
|
|
if (pt && nx.dt.objEmpty(targets[pt.id]) && !HM.isResonateCystalHero(pt)) {
|
|
partners.push(pt);
|
|
}
|
|
}
|
|
|
|
// 排序
|
|
var sort_func = Utils.tableUpperSorter(["star"]);
|
|
partners.sort(sort_func);
|
|
partners.forEach(function (_p) {
|
|
if (_p.face_id == 0) {
|
|
_p.face_id = "null";
|
|
}
|
|
});
|
|
var args = {
|
|
partners: partners,
|
|
count: 1,
|
|
selects: []
|
|
};
|
|
HC.openPartnerSelector(true, args, function (_partners) {
|
|
var pt = _partners ? _partners[0] : null;
|
|
if (pt) {
|
|
HC.sender26426(pt.id, _pos);
|
|
}
|
|
HC.openPartnerSelector(false);
|
|
});
|
|
},
|
|
// 点击下阵
|
|
onFreePartner: function onFreePartner(_data) {
|
|
if (nx.dt.objEmpty(_data) || !nx.dt.numPositive(_data.id)) {
|
|
return;
|
|
}
|
|
var DATA = game.configs.resonate_data.data_const;
|
|
var time = nx.bridge.time.toNeedSeconds(DATA.cell_cool_time.val * 60);
|
|
var msg = nx.text.format("SyncFreePartnerAsk", time);
|
|
nx.mbox(msg, ['cancel', 'confirm'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == 'confirm') {
|
|
var HC = HeroController.getInstance();
|
|
HC.sender26427(_data.id, _data.pos);
|
|
}
|
|
});
|
|
},
|
|
// 点击冷却
|
|
onTouchCD: function onTouchCD(_pos) {
|
|
var DATA = game.configs.resonate_data.data_const;
|
|
var cost = DATA.cell_flush_expend.val[0];
|
|
if (nx.dt.arrEmpty(cost)) {
|
|
return;
|
|
}
|
|
var cfgs = gitemdata(cost[0]);
|
|
if (nx.dt.objEmpty(cfgs)) {
|
|
return;
|
|
}
|
|
var res = PathTool.queryIconPath(cfgs.icon);
|
|
var icon = cost[0][0];
|
|
var msg = nx.text.format("lab_hero_resonate_tab_resonate_panel_tip4", cfgs.icon, cost[1]);
|
|
nx.mbox(msg, ['cancel', 'confirm'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == 'confirm') {
|
|
var HC = HeroController.getInstance();
|
|
HC.sender26428(_pos);
|
|
}
|
|
});
|
|
},
|
|
// 点击关闭
|
|
onTouchClose: function onTouchClose() {
|
|
HomeMod.getInstance().reqHomeData();
|
|
this.close();
|
|
}
|
|
});
|
|
|
|
cc._RF.pop(); |