Files

547 lines
17 KiB
JavaScript
Raw Permalink Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, 'd6f62cS99NIpbr2B3Jz331L', 'cmp.planesafk.wnd.masterinfo');
// Scripts/mod/pve/planesafk/cmp/cmp.planesafk.wnd.masterinfo.js
"use strict";
var BridgeWindow = require("bridge.window");
var ItemLay = require("cmp.common.itemlayout");
var PlanesafkController = require("planesafk_controller");
var HeroController = require("hero_controller");
var RoleController = require("role_controller");
var PlanesafkEvent = require("planesafk_event");
var PlanesafkConst = require("planesafk_const");
var ElfinEvent = require("elfin_event");
var PartnerConst = require("partner_const");
var HeroConst = require("hero_const");
var HeroVo = require("hero_vo");
cc.Class({
"extends": BridgeWindow,
properties: {
btn_fight: {
"default": null,
type: cc.Node
},
btn_embattle: {
"default": null,
type: cc.Node
},
lname: {
"default": null,
type: cc.Label
},
rname: {
"default": null,
type: cc.Label
},
myHead: {
"default": null,
type: cc.Node
},
enHead: {
"default": null,
type: cc.Node
},
left_atk_val: {
"default": null,
type: cc.Label
},
left_atk_txt: {
"default": null,
type: cc.Label
},
right_atk_txt: {
"default": null,
type: cc.Label
},
left_heros: {
"default": null,
type: ItemLay
},
right_heros: {
"default": null,
type: ItemLay
},
rewards: {
"default": null,
type: ItemLay
},
fabHeader: {
"default": null,
type: cc.Prefab
},
mySprites: {
"default": null,
type: cc.Node
},
selfSprites: {
"default": null,
type: cc.Node
},
myAddTxt: {
"default": null,
type: cc.Label
},
selfAddTxt: {
"default": null,
type: cc.Label
},
buffTxts: {
"default": [],
type: [cc.Node]
},
diffs: {
"default": [],
type: [cc.Node]
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
this.ctrl = PlanesafkController.getInstance();
this.model = this.ctrl.getModel();
// 可出战英雄数据
this.bindGEvent(PlanesafkEvent.Get_All_Hero_Event, this.getAllHeroByForm.bind(this));
// 我方阵容数据
this.bindGEvent(PlanesafkEvent.Get_Form_Data_Event, this.getHeroFormData.bind(this));
// 通过布阵更新了我方阵容数据
this.bindGEvent(PlanesafkEvent.Update_Form_Data_Event, this.updateMyFormData.bind(this));
// 我方精灵数据更新
this.bindGEvent(ElfinEvent.Get_Elfin_Tree_Data_Event, this.updateMyElfinInfo.bind(this));
// this.bindGEvent( ElfinEvent.Elfin_Plan_From_Info_Event, this.updateMyEflinSkill.bind( this ) );
// 通过布阵后战力值更新
this.bindGEvent(PlanesafkEvent.Update_Form_Atk_Event, this.updateMyHeroAtkVal.bind(this));
// 敌方阵容数据
this.bindGEvent(PlanesafkEvent.Get_Master_Data_Event, this.setMasterData.bind(this));
},
// updateMyEflinSkill(data){
// if (!data)return;
// let sprites = [];
// if (data.team_list && data.team_list[0]) {
// sprites = data.team_list[0].sprites;
// }
// // 精灵
// for (var i=1;i<=4;i++) {
// let left_elfin_item = this.mySprites.children[i-1];
// if (left_elfin_item) {
// var elfin_bid = this.getElfinBidByPos(sprites, i);
// if(elfin_bid){
// left_elfin_item.active = true;
// }else{
// left_elfin_item.active = false;
// }
// }
// }
// },
createHeroVo: function createHeroVo(role_data) {
var vo = new HeroVo();
vo.atk = role_data.atk;
vo.bid = role_data.bid;
vo.ext_data = role_data.ext_data;
vo.hp_max = role_data.hp_max;
vo.hp_per = role_data.hp_per;
vo.is_master = role_data.is_master;
vo.lev = role_data.lev;
vo.partner_id = role_data.partner_id;
vo.rid = role_data.rid;
vo.srv_id = vo.srv_id;
vo.star = vo.star;
return vo;
},
setMasterData: function setMasterData(data) {
if (!data) return;
if (!this.data) return;
var evt_config = this.data.evt_config;
// 名称
// if (evt_config) {// && evt_config.type == PlanesafkConst.Evt_Type.Guard
this.rname.string = data.name || nx.text.getKey("lab_planesafk_master_sw");
// }
// 战力
this.right_atk_txt.string = data.guards_power;
// 头像
if (!this.right_head) {
this.right_head = cc.instantiate(this.fabHeader);
this.right_head.parent = this.enHead;
}
var cmp = this.right_head.getComponent("cmp.common.header");
if (cmp) {
cmp.setData(data);
}
// 英雄头像
var role_datas = [];
var formation_config = gdata("formation_data", "data_form_data", data.formation_type); //game.configs.FormationData.data_form_data[data.formation_type]
for (var i = 1; i <= 9; i++) {
var role_data = null;
var key = null;
//阵法和实际位置的映射转换
for (var j = 0; j < formation_config.pos.length; j++) {
var pos_val = formation_config.pos[j];
if (pos_val[1] == i) {
key = pos_val[0];
}
}
role_data = this.getRoleDataByIndex(key, data.guards);
// var hero_item = this.right_item_list[i]
var role_vo = null;
if (role_data) {
role_data.is_master = true;
role_data.rid = data.rid || 0;
role_data.srv_id = data.srv_id || "";
role_vo = this.createHeroVo(role_data);
// 剩余血量
// if (role_data.hp_per) {
// hero_item.showProgressbar(role_data.hp_per)
// if (role_data.hp_per <= 0) {
// hero_item.showStrTips(true,nx.text.getKey("tip_planesafk_deathed"),{c3b : new cc.Color( 255, 255, 255, 255 )})
// }
// }
}
role_datas.push(role_vo);
}
this.right_heros.rebuild(role_datas);
// 精灵
// this.tree_lv_right.string = (_string_format(nx.text.getKey("古树:%d级"), data.sprite_lev || 0))
for (var i = 0; i < 4; i++) {
var right_elfin_item = this.selfSprites.children[i];
if (right_elfin_item) {
var elfin_bid = this.getElfinBidByPos(data.sprites, i);
if (elfin_bid) {
right_elfin_item.active = true;
} else {
right_elfin_item.active = false;
}
}
}
// 加成
var dif_val = data.strength || 1000;
if (dif_val >= 1000) {
this.selfAddTxt.string = cc.js.formatStr(nx.text.getKey("lab_planesafk_master_window_tip5"), (dif_val - 1000 / 10) / 100);
} else {
this.selfAddTxt.string = cc.js.formatStr(nx.text.getKey("lab_planesafk_master_window_tip6"), (1000 - dif_val / 10) / 100);
}
// // 我方buff数据
// for (var k in data.buffs) {
// var v = data.buffs[k];
// if (v.quality == 1) { // 蓝
// let buff_nd = this.buffTxts[v.quality - 1];
// nx.gui.setString(buff_nd,"num",v.num);
// }
// else if ( v.quality == 2 ){ //紫
// let buff_nd = this.buffTxts[v.quality - 1];
// nx.gui.setString(buff_nd,"num",v.num);
// }
// else if ( v.quality == 3 ){ // 橙
// let buff_nd = this.buffTxts[v.quality - 1];
// nx.gui.setString(buff_nd,"num",v.num);
// }
// }
},
updateMyHeroAtkVal: function updateMyHeroAtkVal(atk_val) {
this.left_atk_txt.string = atk_val;
this.hero_base_atk_val = this.hero_base_atk_val || 0;
var add_percent = (atk_val - this.hero_base_atk_val) / this.hero_base_atk_val * 100;
this.left_atk_val.string = cc.js.formatStr(nx.text.getKey("lab_planesafk_master_window_tip7"), add_percent.toFixed(1));
},
updateMyElfinInfo: function updateMyElfinInfo() {},
updateMyFormData: function updateMyFormData(form_type, pos_data) {
if (!this.form_data) return;
this.form_data.formation_type = form_type;
this.form_data.pos_info = pos_data;
this.hero_base_atk_val = 0; // 英雄基础战力值
var partner_ids = [];
var role_datas = [];
var formation_config = gdata("formation_data", "data_form_data", form_type);
for (var i = 1; i <= 9; i++) {
var key = null;
//阵法和实际位置的映射转换
for (var j = 0; j < formation_config.pos.length; j++) {
var pos_val = formation_config.pos[j];
if (pos_val[1] == i) {
key = pos_val[0];
}
}
var role_info = this.getRoleDataByIndex(key, pos_data);
var role_data = null;
var role_vo = null;
if (role_info) {
if (role_info.data && role_info.data.flag == 1) {
role_data = role_info.data;
role_data.flag = 1; //雇佣英雄
partner_ids.push(role_data);
role_vo = this.createHeroVo(role_data);
} else {
role_data = HeroController.getInstance().getModel().getHeroById(role_info.id);
role_data.flag = 0; //非雇佣英雄
role_data.hp_per = this.model.getMyPlanesHeroHpPer(role_data.partner_id, role_data.flag);
partner_ids.push(role_data);
role_vo = role_data;
}
}
role_datas.push(role_vo);
// //助战
// if (role_data.flag == 1) {
// hero_item.showHelpImg(true)
// }
// // 剩余血量
// var hp_per = role_data.hp_per || PlanesafkController.getInstance().getModel().getMyPlanesHeroHpPer(role_data.partner_id, role_data.flag)
// if (hp_per) {
// hero_item.showProgressbar(hp_per)
// }
// 总战力
if (role_data) {
this.hero_base_atk_val = this.hero_base_atk_val + role_data.power;
} else {
this.hero_base_atk_val = this.hero_base_atk_val + 0;
}
this.left_atk_txt.string = this.hero_base_atk_val;
}
this.left_heros.rebuild(role_datas);
if (Utils.next(partner_ids) != null) {
// 请求新上阵英雄的战力值
this.ctrl.sender28610(partner_ids);
}
},
getHeroFormData: function getHeroFormData(data) {
this.form_data = data;
if (this.get_all_hero_flag) {
this.setMyFormData();
}
},
getAllHeroByForm: function getAllHeroByForm() {
this.get_all_hero_flag = true;
if (this.form_data) {
this.setMyFormData();
}
},
start: function start() {},
onOpenConfigs: function onOpenConfigs(data) {
this.data = data;
if (!data) return;
this.updateAwardList();
this.ctrl.sender28612(); // 请求我方阵容数据
this.ctrl.sender28600(this.data.line, this.data.index, 0, {}); // 请求敌方阵容数据
this.ctrl.sender28613();
//展示難度
// let evt_cfg = game.configs.planes_data.data_evt_info[data.evt_id];
// if(evt_cfg){
// this.diffs[evt_cfg.type - 1].active = true;
// }
//申请位面的精灵信息
// ElfinController.getInstance().send26555(PartnerConst.Fun_Form.Planes)
var evt_data = this.ctrl.getMapEvtData(this.data.line, this.data.index);
if (evt_data && evt_data.is_black) {
this.btn_fight.active = false;
this.btn_embattle.active = false;
}
},
onPreClosed: function onPreClosed() {
this.rewards.rebuild([]);
this.left_heros.rebuild([]);
this.right_heros.rebuild([]);
},
// 奖励数据
updateAwardList: function updateAwardList() {
var evt_config = this.data.evt_config;
if (!evt_config) {
evt_config = game.configs.planes_data.data_evt_info[this.data.evt_id];
}
if (!evt_config) return;
// 怪物显示事件名称
if (evt_config.type == PlanesafkConst.Evt_Type.Monster) {
this.rname.string = evt_config.name;
}
var add_per = 0;
var role_vo = RoleController.getInstance().getRoleVo();
if (!role_vo) return;
var lev = role_vo.lev || 1;
var reward_list = gdata("planes_data", "data_reward_info", evt_config.reward_list[0]);
var reward = null;
if (reward_list) {
for (var i in reward_list) {
var v = reward_list[i];
if (v.min && v.max && lev >= v.min && lev <= v.max) {
reward = v.reward;
}
}
}
var data_list = reward || [];
var item_list = [];
for (var k in data_list) {
var v = data_list[k];
var vo = {};
vo.bid = v[0];
vo.num = Math.floor((1 + add_per / 1000) * v[1]);
if (vo.bid == 25 && this.model.isHolidayOpen()) {
vo.num = Math.floor(vo.num * 1.1 + 0.5);
}
item_list.push(vo);
}
this.rewards.rebuild(item_list);
},
// 我方阵容数据
setMyFormData: function setMyFormData() {
var role_vo = RoleController.getInstance().getRoleVo();
if (!this.form_data || !role_vo) return;
// 名称
this.lname.string = role_vo.name;
// 头像
if (!this.left_head) {
this.left_head = cc.instantiate(this.fabHeader);
this.left_head.parent = this.myHead;
}
var cmp = this.left_head.getComponent("cmp.common.header");
if (cmp) {
cmp.setData(role_vo);
}
// 英雄头像
this.hero_base_atk_val = 0;
var formation_config = gdata("formation_data", "data_form_data", this.form_data.formation_type);
var partner_ids = [];
var role_datas = [];
for (var i = 1; i <= 9; i++) {
var role_data = null;
var key = null;
//阵法和实际位置的映射转换
for (var j = 0; j < formation_config.pos.length; j++) {
var pos_val = formation_config.pos[j];
if (pos_val[1] == i) {
key = pos_val[0];
}
}
var role_info = this.getRoleDataByIndex(key, this.form_data.pos_info);
//位置上没有英雄就选择置空
var _role_vo = null;
if (role_info) {
if (role_info.flag && role_info.flag == 1) {
role_data = this.model.getPlanesHireHeroData(role_info.id);
role_data.flag = 1; //雇佣英雄
partner_ids.push(role_data);
_role_vo = this.createHeroVo(role_data);
} else {
role_data = HeroController.getInstance().getModel().getHeroById(role_info.id);
role_data.flag = 0; //非雇佣英雄
role_data.hp_per = this.model.getMyPlanesHeroHpPer(role_data.partner_id, role_data.flag);
partner_ids.push(role_data);
_role_vo = role_data;
}
}
role_datas.push(_role_vo);
// 总战力
if (role_data) {
this.hero_base_atk_val = this.hero_base_atk_val + role_data.power;
} else {
this.hero_base_atk_val = this.hero_base_atk_val + 0;
}
this.left_atk_txt.string = this.hero_base_atk_val;
}
this.left_heros.rebuild(role_datas);
// 请求战力加成
if (partner_ids.length > 0) {
// 请求新上阵英雄的战力值
this.ctrl.sender28610(partner_ids);
}
// 精灵
this.updateMyElfinInfo();
},
// 根据位置获取精灵的bid
getElfinBidByPos: function getElfinBidByPos(sprite_data, pos) {
if (!sprite_data) return;
for (var k in sprite_data) {
var v = sprite_data[k];
if (v.pos == pos) {
return v.item_bid;
}
}
},
// 根据位置获取我方英雄id
getMyRoleIdByIndex: function getMyRoleIdByIndex(index, role_list) {
for (var k in role_list) {
var v = role_list[k];
if (v.pos == index) {
return v.id;
}
}
},
// 根据位置获取敌方英雄数据
getRoleDataByIndex: function getRoleDataByIndex(index, role_list) {
for (var k in role_list) {
var v = role_list[k];
if (v.pos == index) {
return v;
}
}
},
// 出战
onClickFightBtn: function onClickFightBtn() {
var _this = this;
if (!this.form_data || !this.data) return;
if (this.form_data.pos_info.length < 5) {
var str = nx.text.getKey("lab_planesafk_master_window_tip2");
nx.mbox(str, ["cancel", "confirm"], function (_key, _box) {
_box.close();
if (_key == "confirm") {
_this.comfirmFight();
}
});
} else {
this.comfirmFight();
}
},
comfirmFight: function comfirmFight() {
if (!this.form_data || !this.data) return;
var ext_list = [];
// 阵法
ext_list.push({
type: PlanesafkConst.Proto_28600._1,
val1: this.form_data.formation_type,
val2: 0
});
// 神器
ext_list.push({
type: PlanesafkConst.Proto_28600._2,
val1: this.form_data.hallows_id,
val2: 0
});
// 英雄
for (var k in this.form_data.pos_info) {
var v = this.form_data.pos_info[k];
if (v.flag && v.flag == 1 || v.data && v.data.flag == 1) {
// 雇佣英雄
ext_list.push({
type: PlanesafkConst.Proto_28600._4,
val1: v.pos,
val2: v.id
});
} else {
ext_list.push({
type: PlanesafkConst.Proto_28600._3,
val1: v.pos,
val2: v.id
});
}
}
this.ctrl.sender28600(this.data.line, this.data.index, 1, ext_list, null, true);
this.close();
},
// 布阵
onClickEmbattleBtn: function onClickEmbattleBtn() {
HeroController.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.Planes, {
need_hide_top: true
}, HeroConst.FormShowType.eFormSave);
}
// update (dt) {},
});
cc._RF.pop();