281 lines
8.2 KiB
JavaScript
281 lines
8.2 KiB
JavaScript
"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(); |