288 lines
8.8 KiB
JavaScript
288 lines
8.8 KiB
JavaScript
|
|
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)
|
||
|
|
},
|
||
|
|
});
|