"use strict"; cc._RF.push(module, 'e3c4eY2uMpBX5q9QsKnC+Q7', 'cmp.guildbat.bat'); // Scripts/mod/guild/guildbat/cmp/cmp.guildbat.bat.js "use strict"; var GuildBatMod = require("guildbat.mod"); var BridgeWindow = require("bridge.window"); var GuildwarEvent = require("guildwar_event"); var ItemLay = require("cmp.common.itemlayout"); var GuildwarConst = require("guildbat.define"); var HCT = require("hero_controller"); var HeroConst = require("hero_const"); var HeroVo = require("hero_vo"); var RoleController = require("role_controller"); var PartnerConst = require("partner_const"); cc.Class({ "extends": BridgeWindow, properties: { myForms: { //我方陣容 "default": null, type: ItemLay }, enyForms: { //敵方陣容 "default": null, type: ItemLay }, myTag: { "default": null, type: cc.Node }, enyTag: { "default": null, type: cc.Node }, myName: { "default": null, type: cc.Node }, enyName: { "default": null, type: cc.Node }, myPower: { "default": null, type: cc.Node }, enyPower: { "default": null, type: cc.Node }, fabHead: { "default": null, type: cc.Prefab }, finishTag: { //被擊敗的標記 "default": null, type: cc.Node }, addition: { //加成 "default": null, type: cc.Node }, btns: { "default": null, type: cc.Node }, limitTxt: { "default": null, type: cc.Node } }, // LIFE-CYCLE CALLBACKS: onLoad: function onLoad() { this.mod = GuildBatMod.getInstance(); this.bindGEvent(GuildwarEvent.UpddateGuildBatForm, this.freshMyForm.bind(this)); }, freshMyForm: function freshMyForm(data) { this.updateMyForms(data); this.updateMyInfos(); }, onOpenConfigs: function onOpenConfigs(params) { if (!params) { return this.delayClose(); } var enydata = params.data; this.flag = enydata.hp <= 0 ? 1 : 0; nx.gui.setActive(this.addition, "", this.flag == 1); nx.gui.setActive(this.btns, "", this.flag == 0); this.finishTag.active = this.flag == 1; this.data = enydata; this.updateEnyForms(enydata.defense, enydata.formation_type); this.updateMyForms(); this.updateEnyInfos(enydata); this.updateMyInfos(); //buff加成和難度加成 this.updateBuffInfo(); this.updateDiftInfo(enydata.pos); var total_relic = game.configs.guild_war_data.data_const.ruins_challange_limit.val; nx.gui.setString(this.limitTxt, "", cc.js.formatStr(nx.text.getKey("GuildBatRuins_"), enydata.relic_def_count, total_relic)); }, //對手佈陣 updateEnyForms: function updateEnyForms(defense_heros, formation_type) { var formation_config = game.configs.formation_data.data_form_data[formation_type]; var poses = formation_config.pos; var pos_info = []; //陣型對位 for (var pos in poses) { for (var v in defense_heros) { if (defense_heros[v].pos == poses[pos][0]) { pos_info.push([poses[pos][1], defense_heros[v]]); } } } var heros = []; for (var i = 1; i <= 9; i++) { var in_form = false; for (var j in pos_info) { if (pos_info[j][0] == i) { in_form = true; var vo = new HeroVo(); vo.bid = pos_info[j][1].bid; vo.lev = pos_info[j][1].lev; vo.star = pos_info[j][1].star; for (var _v in pos_info[j][1].ext_data) { if (pos_info[j][1].ext_data[_v].key == 5) { vo.clothes_id = pos_info[j][1].ext_data[_v].val; } } if (vo) { heros.push(vo); } else { heros.push(null); } } } if (!in_form) { heros.push(null); } } this.enyForms.rebuild(heros); }, //我的佈陣 updateMyForms: function updateMyForms(data) { var HML = HCT.getInstance().getModel(); var pos_info = []; var formation_config = game.configs.formation_data.data_form_data[HML.use_formation_type]; var poses = formation_config.pos; var pos_list = []; if (data) { pos_list = data; } else { pos_list = HML.getMyPosList(); } //陣型對位 for (var pos in poses) { for (var v in pos_list) { if (pos_list[v].pos == poses[pos][0]) { pos_info.push([poses[pos][1], pos_list[v].id]); } } } var heros = []; for (var i = 1; i <= 9; i++) { var in_form = false; for (var j in pos_info) { if (pos_info[j][0] == i) { in_form = true; var vo = HML.getHeroById(pos_info[j][1]); if (vo) { heros.push(vo); } else { heros.push(null); } } } if (!in_form) { heros.push(null); } } this.myForms.rebuild(heros); }, updateEnyInfos: function updateEnyInfos(data) { var head_data = {}; head_data.name = data.name; head_data.lev = data.lev; head_data.face = data.face; var enyHead = cc.instantiate(this.fabHead); enyHead.parent = this.enyTag; var cmp = nx.gui.getComponent(enyHead, "", "cmp.common.header"); if (cmp) { cmp.setData(head_data); } nx.gui.setString(this.enyName, "", data.name); nx.gui.setString(this.enyPower, "", data.power); }, updateMyInfos: function updateMyInfos() { var role_vo = RoleController.getInstance().getRoleVo(); var myHead = cc.instantiate(this.fabHead); myHead.parent = this.myTag; var cmp = nx.gui.getComponent(myHead, "", "cmp.common.header"); if (cmp) { cmp.setData(role_vo); } nx.gui.setString(this.myName, "", role_vo.name); nx.gui.setString(this.myPower, "", role_vo.power); }, updateBuffInfo: function updateBuffInfo() { var myBaseData = this.mod.getMyGuildWarBaseInfo(); var buff_lev = myBaseData.buff_lev; var buff_cfg = game.configs.guild_war_data.data_buff[buff_lev]; if (buff_cfg) { for (var i in buff_cfg.attr) { var attr = buff_cfg.attr[i]; var nd = nx.gui.find(this.addition, i); if (nd) { var attr_str = game.configs.attr_data.data_key_to_name[attr[0]]; nx.gui.setString(nd, "name", attr_str); if (attr[0] == "speed") { nx.gui.setString(nd, "old", attr[1]); } else { nx.gui.setString(nd, "old", attr[1] + "‰"); } } } } }, updateDiftInfo: function updateDiftInfo(pos) { var warscore = game.configs.guild_war_data.data_position[pos]; // for(let i in warscore.warscore){ // let v = warscore.warscore[i]; // let nd = nx.gui.find(this.btns,i ); // if(nd){ // nx.gui.setString(nd,"tips",cc.js.formatStr(nx.text.getKey("GuildBatDif_"),v[1])); // } // } nx.gui.setString(this.btns, "0/tips", cc.js.formatStr(nx.text.getKey("GuildBatDif_"), game.configs.guild_war_data.data_const.easy_difficulty.val / 10)); nx.gui.setString(this.btns, "1/tips", cc.js.formatStr(nx.text.getKey("GuildBatDif_"), game.configs.guild_war_data.data_const.normal_difficulty.val / 10)); nx.gui.setString(this.btns, "2/tips", cc.js.formatStr(nx.text.getKey("GuildBatDif_"), game.configs.guild_war_data.data_const.hard_difficulty.val / 10)); for (var d = 0; d < warscore.warscore.length; d++) { var score = warscore.warscore[d]; var nd = this.btns.children[d]; nx.gui.setString(nd, "result", nx.text.format("PvpGResult", score[1])); } }, onPreClosed: function onPreClosed() { this.myForms.rebuild([]); this.enyForms.rebuild([]); }, touchbat: function touchbat(star) { var _this = this; this.mod.requestGuildWarFighting(this.data.pos, star, this.flag, function (_data) { if (_data) { _this.close(); } }); }, touchClear: function touchClear() { var _this2 = this; this.mod.requestGuildWarFighting(this.data.pos, 0, this.flag, function (_data) { if (_data) { _this2.close(); } }); }, openHeroFrom: function openHeroFrom() { HCT.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.Drama, { need_hide_top: true }, HeroConst.FormShowType.eFormSave); } }); cc._RF.pop();