Files
fc/dev/project/library/imports/e3/e3c4e636-b8ca-415f-9abd-42c2a70be43b.js
2026-05-24 10:21:26 +08:00

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