const GuildBatMod = require("guildbat.mod"); const BridgeWindow = require( "bridge.window" ); const GuildwarEvent = require("guildwar_event"); const ItemLay = require("cmp.common.itemlayout"); const GuildwarConst = require("guildbat.define"); const HCT = require("hero_controller"); const HeroConst = require("hero_const"); const HeroVo = require("hero_vo"); const RoleController = require("role_controller"); const 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 () { this.mod = GuildBatMod.getInstance(); this.bindGEvent(GuildwarEvent.UpddateGuildBatForm,this.freshMyForm.bind(this)); }, freshMyForm(data){ this.updateMyForms(data); this.updateMyInfos(); }, onOpenConfigs(params) { if(!params){ return this.delayClose(); } let 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); let 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(defense_heros,formation_type){ let formation_config = game.configs.formation_data.data_form_data[ formation_type ]; let poses = formation_config.pos; let pos_info = []; //陣型對位 for(let pos in poses){ for(let v in defense_heros){ if(defense_heros[v].pos == poses[pos][0]){ pos_info.push([poses[pos][1],defense_heros[v]]); } } } let heros = []; for(let i=1;i<=9;i++){ let in_form = false; for(let j in pos_info){ if(pos_info[j][0] == i){ in_form = true; let 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(let 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(data){ let HML = HCT.getInstance().getModel(); let pos_info = []; let formation_config = game.configs.formation_data.data_form_data[ HML.use_formation_type ]; let poses = formation_config.pos; var pos_list = []; if(data){ pos_list = data; }else{ pos_list = HML.getMyPosList(); } //陣型對位 for(let pos in poses){ for(let v in pos_list){ if(pos_list[v].pos == poses[pos][0]){ pos_info.push([poses[pos][1],pos_list[v].id]); } } } let heros = []; for(let i=1;i<=9;i++){ let in_form = false; for(let j in pos_info){ if(pos_info[j][0] == i){ in_form = true; let 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(data){ let head_data = {}; head_data.name = data.name; head_data.lev = data.lev; head_data.face = data.face; let enyHead = cc.instantiate(this.fabHead); enyHead.parent = this.enyTag; let 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(){ let role_vo = RoleController.getInstance().getRoleVo(); let myHead = cc.instantiate(this.fabHead); myHead.parent = this.myTag; let 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(){ let myBaseData = this.mod.getMyGuildWarBaseInfo(); let buff_lev = myBaseData.buff_lev; let buff_cfg = game.configs.guild_war_data.data_buff[buff_lev]; if(buff_cfg){ for(let i in buff_cfg.attr){ let attr = buff_cfg.attr[i]; let nd = nx.gui.find(this.addition,i); if(nd){ let 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(pos){ let 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 (let d = 0; d < warscore.warscore.length; d++) { let score = warscore.warscore[d]; let nd = this.btns.children[d]; nx.gui.setString(nd,"result",nx.text.format("PvpGResult", score[1] )); } }, onPreClosed() { this.myForms.rebuild([]); this.enyForms.rebuild([]); }, touchbat(star){ this.mod.requestGuildWarFighting(this.data.pos,star,this.flag,(_data)=>{ if(_data){ this.close(); } }); }, touchClear(){ this.mod.requestGuildWarFighting(this.data.pos,0,this.flag,(_data)=>{ if(_data){ this.close(); } }); }, openHeroFrom(){ HCT.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.Drama, {need_hide_top:true}, HeroConst.FormShowType.eFormSave) }, });