"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();