Files
fc/dev/project/library/imports/28/28535f48-d8c0-4b65-8c38-353e0e13c4d8.js
2026-05-24 10:21:26 +08:00

568 lines
22 KiB
JavaScript

"use strict";
cc._RF.push(module, '285359I2MBLZYw4NT4OE8TY', 'cmp.guild.talent.wnd');
// Scripts/mod/guild/base/cmps/cmp.guild.talent.wnd.js
"use strict";
/******************************************************************
*
* 联盟天赋
*
******************************************************************/
var Toggle = require("nx.fx.togs");
var BridgeWindow = require("bridge.window");
var GuildskillController = require("guildskill_controller");
var GuildskillEvent = require("guildskill_event");
var GuildConst = require("guild_const");
var BackpackController = require("backpack_controller");
var SkillBase = require("cmp.skill.base");
var paths = {
40002: "res_p2",
40001: "res_p1",
30002: "res_p2",
30001: "res_p1",
20002: "dam2",
20001: "dam1",
10002: "dam2",
10001: "dam1"
};
cc.Class({
"extends": BridgeWindow,
properties: {
nodMenu: {
"default": null,
type: Toggle
},
nodModel: {
"default": null,
type: Toggle
},
nodInfo: {
"default": null,
type: cc.Node
},
nodShow: {
"default": null,
type: cc.Node
},
nodLock: {
"default": null,
type: cc.Node
},
nodPvpAttr: {
"default": [],
type: cc.Node
}
},
onLoad: function onLoad() {
this.bindGEvent(GuildskillEvent.UpdateSkilUpgradeEvent, this.freshSkill.bind(this));
this.bindGEvent(GuildskillEvent.UpdateGuildSkillEvent, this.freshSkill.bind(this));
this.bindGEvent(GuildskillEvent.UpdateSkillStatusEvent, this.freshSkill.bind(this));
this.bindGEvent(GuildskillEvent.Guild_Pvp_Career_Info_Event, this.freshUpGrade.bind(this));
// this.bindGEvent( GuildskillEvent.Guild_Pvp_Career_Info_Event, this.freshSkill.bind( this ) );
this.nodMenu.posTog = this.onTogMenu.bind(this);
this.nodModel.posTog = this.onTogModel.bind(this);
},
// 重载:参数打开
onOpenConfigs: function onOpenConfigs(_params) {
this.nodMenu.togTo(0);
// this.nodModel.togTo( 1 );
this.activeMenu(2);
// this.activeModel( GuildConst.guildAttrType.PVE );
},
// 商城切换
onTogMenu: function onTogMenu(_index) {
this.activeMenu(parseInt(_index) + 2);
},
// 模式切换
onTogModel: function onTogModel(_index) {
this.activeModel(parseInt(_index) + 1);
},
// 模式切換 pve pvp 需要刷新數據
activeModel: function activeModel(_index) {
var model = _index;
nx.gui.setActive(this.nodLock, "", nx.dt.arrEmpty(this.PVPSkills.attr_formation));
nx.gui.setActive(this.nodShow, "pvp", model == GuildConst.guildAttrType.PVP);
nx.gui.setActive(this.nodShow, "pve", model == GuildConst.guildAttrType.PVE);
model == GuildConst.guildAttrType.PVP ? this.freshPvpAttr() : this.freshProps();
},
// 激活菜单 职业选择 切換職業 刷數據
activeMenu: function activeMenu(_index) {
this.career = _index;
var GS = GuildskillController.getInstance();
var model = GS.getModel();
this.select = 0;
this.PVPSkills = model.getPvpskillInfoByCareer(this.career);
// 默認顯示控制 pve ? pvp
if (nx.dt.arrEmpty(this.PVPSkills.attr_formation)) {
this.nodModel.togTo(1);
this.activeModel(GuildConst.guildAttrType.PVE);
} else {
this.nodModel.togTo(0);
this.activeModel(GuildConst.guildAttrType.PVP);
}
var skills = model.getCareerSkillInfo(this.career);
if (nx.dt.objEmpty(skills)) {
GS.requestCareerSkillInfo(this.career);
return;
}
// this.skills = skills;
this.freshSkill();
},
// 刷新属性相关 pve相關
freshProps: function freshProps() {
if (!this.skills) {
return;
}
nx.gui.setActive(this.nodInfo, "cnt/pvp_tip", false);
nx.gui.setActive(this.nodInfo, "cnt/ops/reset", false);
var results = [];
var val = this.skills.group_ids;
var cfgs = game.configs.guild_skill_data;
if (nx.dt.arrEmpty(val)) {
val = [0, 0, 0, 0, 0, 0];
this.base = cfgs.data_info_group[this.skills.group_id];
} else {
// 處理需要叠加計算的數據相關
var lst = [];
var _attrs = [];
results = [];
var seq = [0, 0, 0, 0, 0, 0];
// 获取所有的 需要处理的属性总
var dealVal = function dealVal(_data) {
var attr_list = "";
var dealResult = function dealResult(_itemd) {
attr_list = cfgs.data_info[_itemd.id].attr_list[0][0];
seq[_itemd.seq - 1] += cfgs.data_info[_itemd.id].attr_list[0][1];
results[_itemd.seq - 1] = [attr_list, seq[_itemd.seq - 1], _itemd.id];
};
lst.forEach(function (_item) {
if (_item.seq == 1) {
dealResult(_item);
}
if (_item.seq == 2) {
dealResult(_item);
}
if (_item.seq == 3) {
dealResult(_item);
}
if (_item.seq == 4) {
dealResult(_item);
}
if (_item.seq == 5) {
dealResult(_item);
}
if (_item.seq == 6) {
dealResult(_item);
}
});
};
// 获取所有的 需要处理的属性总
var deal = function deal(_data) {
var gs = cfgs.data_info_group[_data];
_attrs = nx.dt.objClone(gs[0]);
for (var j = 0; j < gs.length; j++) {
var g = gs[j];
lst.push(g);
}
};
for (var i = 0; i < this.skills.group_ids.length; i++) {
var d = this.skills.group_ids[i].group_id;
deal(d);
}
dealVal(lst);
}
var group_id = this.skills.group_id;
/**
* [23700]:{"career":2,"group_id":2001,"skill_ids":[{"skill_id":20011}],"group_ids":[]}
*/
var afg = game.configs.guild_skill_data.data_const;
var sfg = game.configs.guild_skill_data.data_group;
var dfg = game.configs.guild_skill_data.data_info;
var key = this.career + "_" + group_id;
// 显示的属性 读取相关配置信息
var attrs = afg["attr_show_" + (this.career - 1)].val;
// 非手动聚焦显示下一个要升级的技能
var next = 0;
this.skills.skill_ids.forEach(function (skill) {
if (skill.status > 0) {
next++;
}
});
// 右上 显示相关的技能信息
var max = afg.max_lv;
// 操作及雜項顯示
this.freshOp(sfg, max, key, next);
if (next == this.skills.skill_ids.length) {
next = 0;
}
// 屬性相關
var cnode = nx.gui.find(this.nodShow, "pve/nod").children;
var chd = nx.gui.find(this.nodInfo, "cnt/props").children;
var nod_s = nx.gui.find(this.nodInfo, "top");
// let cfg = game.configs.attr_data;
for (var _i = 0; _i < chd.length; _i++) {
var clr = "";
// 右边属性 相关
var item = chd[_i];
var nod = cnode[_i];
if (nx.dt.arrEmpty(this.skills.group_ids)) {
nx.bridge.attrs.setAttribute(item, [attrs[_i], val[_i]]);
nx.gui.setSpriteFrame(item, "iconsp", cc.path.join("prefab/guild/icon/" + attrs[_i]));
} else {
// 当升级了 天赋后显示
nx.bridge.attrs.setAttribute(item, [results[_i][0], results[_i][1]]);
nx.gui.setSpriteFrame(item, "iconsp", cc.path.join("prefab/guild/icon/" + results[_i][0]));
}
nx.gui.setString(nod, "level", dfg[this.skills.skill_ids[_i].id].lev + "/" + afg.max_lv.val);
nx.gui.setActive(nod, "abg", next > _i);
nx.gui.setActive(nod, "focus", next == _i);
if (next == _i) {
clr = new cc.Color().fromHEX("#EAEDF2");
if (nx.dt.arrEmpty(this.skills.group_ids)) {
if (nx.dt.arrEmpty(this.PVPSkills.attr_formation)) {
this.freshMat(nx.gui.find(this.nodInfo, "cnt/mat"), dfg[this.base[_i].id].loss);
}
nx.bridge.attrs.setAttribute(nod, [attrs[_i], val[_i]]);
nx.gui.setSpriteFrame(nod, "iconsp", "prefab/guild/icon/w" + attrs[_i]);
nx.bridge.attrs.setAttribute(nod_s, [attrs[_i], val[_i]]);
nx.gui.setSpriteFrame(nod_s, "iconsp", "prefab/guild/icon/" + attrs[_i]);
} else {
if (nx.dt.arrEmpty(this.PVPSkills.attr_formation)) {
this.freshMat(nx.gui.find(this.nodInfo, "cnt/mat"), dfg[this.skills.skill_ids[_i].id].loss);
}
nx.bridge.attrs.setAttribute(nod, [results[_i][0], results[_i][1]]);
nx.gui.setSpriteFrame(nod, "iconsp", "prefab/guild/icon/w" + results[_i][0]);
nx.bridge.attrs.setAttribute(nod_s, [attrs[_i], cfgs.data_info[results[_i][2]].attr_list[0][1]]);
nx.gui.setSpriteFrame(nod_s, "iconsp", "prefab/guild/icon/" + attrs[_i]);
}
nx.gui.setString(nod_s, "add/lev", nx.text.format("LvNumber", dfg[this.skills.skill_ids[_i].id].lev));
nx.gui.setString(nod_s, "add/txt", dfg[this.skills.skill_ids[_i].id].lev + 1);
} else {
if (_i < next) {
clr = new cc.Color().fromHEX("#030303");
nx.bridge.attrs.setAttribute(nod, [attrs[_i], val[_i], _i + 1]);
nx.gui.setSpriteFrame(nod, "iconsp", "prefab/guild/icon/" + attrs[_i]);
} else {
clr = new cc.Color().fromHEX("#EAEDF2");
nx.bridge.attrs.setAttribute(nod, [attrs[_i], val[_i], _i + 1]);
nx.gui.setSpriteFrame(nod, "iconsp", "prefab/guild/icon/w" + attrs[_i]);
}
}
nx.gui.setColor(nod, "level", clr);
nx.gui.setActive(item, "", true);
}
nx.gui.setActive(this.nodInfo, "cnt/mat", nx.dt.arrEmpty(this.PVPSkills.attr_formation));
nx.gui.setActive(this.nodInfo, "cnt/pve_tip", !nx.dt.arrEmpty(this.PVPSkills.attr_formation));
},
freshOp: function freshOp(_sfg, _max, _key, _next) {
var _this = this;
var next = _next;
var key = _key;
var sfg = _sfg;
var max = _max;
var show_name = "";
if (sfg[key]) {
show_name = sfg[key].group_name;
// 操作刷新----
this.cb = function () {
var GS = GuildskillController.getInstance();
var sfg = game.configs.guild_skill_data.data_info_group;
// 取相应职业的属性升级序列
var skills = sfg[_this.skills.group_id];
var count = 0;
_this.skills.skill_ids.forEach(function (skill) {
if (skill.status > 0) {
count++;
}
});
GS.requestActivitySkill(skills[count].id);
};
nx.gui.setActive(this.nodInfo, "cnt/ops/other/uplevel", sfg[key].group_seq < max.val || sfg[key].group_seq == max.val && next < this.skills.skill_ids.length);
nx.gui.setActive(this.nodInfo, "cnt/ops/other/upgrade", next == this.skills.skill_ids.length && sfg[key].group_seq == max.val && nx.dt.arrEmpty(this.PVPSkills.attr_formation));
}
// nx.gui.setActive( this.nodInfo, "cnt/ops", true );
nx.gui.setString(this.nodInfo, "top/name", show_name);
},
freshPvpAttr: function freshPvpAttr() {
var _this2 = this;
//
/******
* {"career":4,"attr_formation":[
* {"id":30001,"lev":0},
* {"id":30002,"lev":0},
* {"id":30003,"lev":0},
* {"id":30004,"lev":0}
* ],"skill_id":0,"skill_lev":0}
*/
nx.gui.setActive(this.nodInfo, "cnt/pve_tip", false);
nx.gui.setActive(this.nodInfo, "cnt/pvp_tip", true);
this.unscheduleAllCallbacks();
var attr_form = this.PVPSkills.attr_formation;
var afg = game.configs.guild_skill_data.data_const;
var skills = [];
var chd = nx.gui.find(this.nodInfo, "cnt/props").children;
for (var i = 0; i < chd.length; i++) {
var dat = attr_form[i];
var item = chd[i];
if (!dat) {
nx.gui.setActive(item, "", false);
continue;
}
if (dat.lev > 0) {
skills.push(dat);
}
var key = dat.id + "_" + dat.lev;
var cfg = gdata("guild_skill_data", "data_pvp_attr_info", key);
var resspn = "";
if (dat.lev > 0) {
resspn = paths[dat.id] ? cc.path.join("prefab/guild/icon/" + paths[dat.id]) : cc.path.join("prefab/guild/icon/" + cfg.client_attr[0][0]);
} else {
resspn = paths[dat.id] ? cc.path.join("prefab/guild/icon/w" + paths[dat.id]) : cc.path.join("prefab/guild/icon/w" + cfg.client_attr[0][0]);
}
var ressp = paths[dat.id] ? cc.path.join("prefab/guild/icon/" + paths[dat.id]) : cc.path.join("prefab/guild/icon/" + cfg.client_attr[0][0]);
if (cfg) {
nx.bridge.attrs.setAttribute(this.nodPvpAttr[i], [cfg.client_attr[0][0], cfg.client_attr[0][1], i + 1]);
nx.gui.setSpriteFrame(this.nodPvpAttr[i], "iconsp", resspn);
nx.bridge.attrs.setAttribute(item, cfg.client_attr[0]);
nx.gui.setSpriteFrame(item, "iconsp", ressp);
}
nx.gui.setActive(item, "", true);
nx.gui.setActive(this.nodPvpAttr[i], "abg", dat.lev > 0);
nx.gui.setString(this.nodPvpAttr[i], "level", dat.lev + "/" + afg.max_lv.val);
}
nx.gui.setActive(this.nodInfo, "cnt/ops/reset", !nx.dt.arrEmpty(skills));
nx.gui.setActive(this.nodInfo, "cnt/ops/other/uplevel", true);
nx.gui.setActive(this.nodInfo, "cnt/ops/other/upgrade", false);
var skill_nod = nx.gui.find(this.nodShow, "pvp/skill");
var cmp = skill_nod.getComponent(SkillBase);
if (cmp) {
cmp.setData(this.PVPSkills.skill_id);
nx.gui.setActive(skill_nod, "lock", this.PVPSkills.skill_id == 0);
nx.gui.setString(skill_nod, "lev/lev", nx.text.format("LvNumber", this.PVPSkills.skill_lev));
nx.gui.setActive(skill_nod, "lev", this.PVPSkills.skill_id != 0);
}
this.scheduleOnce(function () {
_this2.onTouchPVPAttr(_this2.select);
}, 0.01);
},
freshMat: function freshMat(_nod, _mat) {
nx.gui.setActive(this.nodInfo, "cnt/mat", true);
// 刷新材料显示
var nod = _nod;
var mats = _mat;
if (mats) {
var chd = nod.children;
var model = BackpackController.getInstance().getModel();
for (var i = 0; i < chd.length; i++) {
var item = chd[i];
var mat = mats[i];
if (!mat || nx.dt.arrEmpty(mat)) {
nx.gui.setActive(item, "", false);
continue;
}
nx.gui.setActive(item, "", true);
nx.bridge.setIconS(item, "icon", mat[0]);
var have = model.getItemNumByBid(mat[0]);
var str = mat[1];
var clr = have >= mat[1] ? cc.Color.WHITE : cc.Color.WHITE;
nx.gui.setString(item, "txt", str);
nx.gui.setColor(item, "txt", clr);
}
}
},
freshSkill: function freshSkill() {
var GS = GuildskillController.getInstance();
var model = GS.getModel();
this.skills = model.getCareerSkillInfo(this.career);
this.PVPSkills = model.getPvpskillInfoByCareer(this.career);
nx.dt.arrEmpty(this.PVPSkills.attr_formation) ? this.freshProps() : this.freshPvpAttr();
},
// 突破后顯示變化 取消pvp的鎖定狀態
freshUpGrade: function freshUpGrade() {
var GS = GuildskillController.getInstance();
var model = GS.getModel();
this.PVPSkills = model.getPvpskillInfoByCareer(this.career);
nx.gui.setActive(this.nodInfo, "cnt/mat", false);
nx.gui.setActive(this.nodLock, "", false);
nx.gui.setActive(this.nodInfo, "cnt/ops/other/upgrade", false);
this.nodModel.togTo(0);
this.activeModel(GuildConst.guildAttrType.PVP);
},
onTouchLock: function onTouchLock() {
var afg = game.configs.guild_skill_data.data_const;
var max = afg.max_lv.val;
nx.tbox(nx.text.format("GuildSkillPvpTip", max));
return;
},
// 点击升级
onTouchUpLev: function onTouchUpLev() {
nx.dt.fnInvoke(this.cb);
},
// 突破
onTouchBreak: function onTouchBreak() {
var GS = GuildskillController.getInstance();
if (GS) {
GS.send23706(this.career);
}
},
// 重置 天赋属性
onTouchReset: function onTouchReset() {
var _this3 = this;
var total_lev = 0;
var GS = GuildskillController.getInstance();
var model = GS.getModel();
var is_first = model.isPvpFisrtReset();
var ress = [];
var attr = this.PVPSkills.attr_formation[0];
var ak = attr.id + "_" + attr.lev;
var sg = gdata("guild_skill_data", "data_pvp_attr_info", ak);
for (var i = 0; i < sg.return_res.length; i++) {
var it = nx.dt.objClone(sg.return_res[i]);
it[1] = 0;
ress.push(it);
}
this.PVPSkills.attr_formation.forEach(function (item) {
if (item.lev > 0) {
total_lev += item.lev;
var _key2 = item.id + "_" + item.lev;
var _sfg2 = gdata("guild_skill_data", "data_pvp_attr_info", _key2);
var res = _sfg2.return_res;
// console.log( item.id + "处理的属性数据" + JSON.stringify( sfg.return_res ) );
for (var _i2 = 0; _i2 < res.length; _i2++) {
var _item2 = res[_i2];
var ritem = ress[_i2];
if (_item2[0] == ritem[0]) {
ritem[1] += _item2[1];
// console.log(item[1] + "当前所有的属性数值相关累加sssss" + JSON.stringify( item[0] ) + "SSS" + ritem[1] );
}
}
}
});
// console.log( "当前所有的属性数值相关---->>>>" + JSON.stringify( ress ) );
var count = 0;
if (is_first) {
count = 300;
var config = game.configs.guild_skill_data.data_const.pvp_first_reset_consume;
if (config) {
count = config.val;
}
} else {
var reset_consume_var1 = 500;
var _config = game.configs.guild_skill_data.data_const.reset_consume_var1;
if (_config) {
reset_consume_var1 = _config.val;
}
var reset_consume_var2 = 15;
var config2 = game.configs.guild_skill_data.data_const.reset_consume_var2;
if (config2) {
reset_consume_var2 = _config.val;
}
// --本系技能總等級 * 係數2
var cost_count = total_lev * reset_consume_var2;
count = Math.max(reset_consume_var1, cost_count);
}
var key = this.career + "_" + this.PVPSkills.skill_lev;
var sfg = gdata("guild_skill_data", "data_pvp_skill_info", key);
var mfg = game.configs.guild_skill_data.data_const.first_reset_consume;
for (var j = 0; j < sfg.return_res.length; j++) {
var ss = sfg.return_res[j];
var ritem = ress[j];
if (ss[0] == ritem[0]) {
ritem[1] += ss[1];
}
}
var info = {
first: is_first,
tip: is_first ? nx.text.format("tip_guildTalent_reset", mfg.val) : nx.text.format("tip_guildTalent_resetn", count),
res: ress,
career: this.career,
cb: function cb() {
var GS = GuildskillController.getInstance();
if (GS) {
GS.send23709(_this3.career);
}
}
};
nx.bridge.createPanel("WndGuildTalentReset", info);
},
// 點擊 pvp技能 彈出彈窗
onTouchSkillIcon: function onTouchSkillIcon() {
var info = {
career: this.career,
lev: this.PVPSkills
};
nx.bridge.createPanel("WndGuildTalentSkillUplev", info);
},
// 點擊 pvp天賦
onTouchPVPAttr: function onTouchPVPAttr(_index) {
var _this4 = this;
var gsd = game.configs.guild_skill_data.data_const.pvp_max_lv;
var max = gsd.val / 4;
var attr_form = this.PVPSkills.attr_formation;
var nod_s = nx.gui.find(this.nodInfo, "top");
for (var i = 0; i < this.nodPvpAttr.length; i++) {
nx.gui.setActive(this.nodPvpAttr[i], "focus", i == _index);
var dat = attr_form[i];
var key = dat.id + "_" + dat.lev;
var cfg = gdata("guild_skill_data", "data_pvp_attr_info", key);
var ressp = "";
var clr = "";
if (cfg) {
if (i == _index) {
this.select = _index;
// clr = new cc.Color().fromHEX( "#030303" );
nx.bridge.attrs.setAttribute(this.nodPvpAttr[i], cfg.client_attr[0]);
if (dat.lev > 0) {
clr = new cc.Color().fromHEX("#030303");
ressp = paths[dat.id] ? cc.path.join("prefab/guild/icon/" + paths[dat.id]) : cc.path.join("prefab/guild/icon/" + cfg.client_attr[0][0]);
} else {
clr = new cc.Color().fromHEX("EAEDF2");
ressp = paths[dat.id] ? cc.path.join("prefab/guild/icon/w" + paths[dat.id]) : cc.path.join("prefab/guild/icon/w" + cfg.client_attr[0][0]);
}
var ressps = paths[dat.id] ? cc.path.join("prefab/guild/icon/" + paths[dat.id]) : cc.path.join("prefab/guild/icon/" + cfg.client_attr[0][0]);
nx.bridge.attrs.setAttribute(nod_s, cfg.client_attr[0]);
nx.gui.setSpriteFrame(this.nodPvpAttr[i], "iconsp", ressp);
nx.gui.setSpriteFrame(nod_s, "iconsp", ressps);
nx.gui.setString(this.nodInfo, "top/name", cfg.desc + nx.text.format("SLevel", cfg.lev));
nx.gui.setString(nod_s, "add/lev", nx.text.format("LvNumber", cfg.lev));
nx.gui.setString(nod_s, "add/txt", cfg.lev + 1);
nx.gui.setActive(this.nodInfo, "cnt/ops/other/uplevel", dat.lev != max);
this.freshMat(nx.gui.find(this.nodInfo, "cnt/mat"), cfg.loss);
} else {
// clr = new cc.Color().fromHEX( "#EAEDF2" );
// let ressp = ( paths[dat.id] ) ? cc.path.join( "prefab/guild/icon/w" + paths[dat.id] ) : cc.path.join( "prefab/guild/icon/w" + cfg.client_attr[0][0] );
if (dat.lev > 0) {
clr = new cc.Color().fromHEX("#030303");
ressp = paths[dat.id] ? cc.path.join("prefab/guild/icon/" + paths[dat.id]) : cc.path.join("prefab/guild/icon/" + cfg.client_attr[0][0]);
} else {
clr = new cc.Color().fromHEX("EAEDF2");
ressp = paths[dat.id] ? cc.path.join("prefab/guild/icon/w" + paths[dat.id]) : cc.path.join("prefab/guild/icon/w" + cfg.client_attr[0][0]);
}
nx.bridge.attrs.setAttribute(this.nodPvpAttr[i], [cfg.client_attr[0][0], cfg.client_attr[0][1], i + 1]);
nx.gui.setSpriteFrame(this.nodPvpAttr[i], "iconsp", ressp);
}
nx.gui.setColor(this.nodPvpAttr[i], "level", clr);
}
}
this.cb = function () {
var GS = GuildskillController.getInstance();
GS.send23707(_this4.career, attr_form[_index].id);
};
}
});
cc._RF.pop();