Files
fc/dev/project/assets/Scripts/mod/battle/cmp/cmp.battle.fail.js
T

222 lines
6.8 KiB
JavaScript
Raw Normal View History

2026-05-23 22:10:14 +08:00
var RoleController = require("role_controller");
var BattleController = require("battle_controller");
var BattleDramaController = require("battle_drama_controller");
var BattleConst = require("battle_const");
var BattleEvent = require("battle_event");
const BridgeWindow = require("bridge.window")
cc.Class({
extends: BridgeWindow,
properties: {
svp_con:{
default:null,
type:cc.Node
},
harm_con:{
default:null,
type:cc.Node
},
bust_icon_sp:{
default:null,
type:cc.Sprite
},
hurtTxt_lb:{
default:null,
type:cc.Label
},
special_sk:{
default:null,
type:sp.Skeleton
},
harm_btn:{
default:null,
type:cc.Node
},
btns:{
default:[],
type:[cc.Node]
}
},
// LIFE-CYCLE CALLBACKS:
onLoad () {
this.role_vo = RoleController.getInstance().getRoleVo();
this.ctrl = BattleController.getInstance();
this.model = this.ctrl.getModel();
this.drama_ctrl = BattleDramaController.getInstance();
this.is_running = false;
this.effect_list = {};
this.x = 100;
this.cfg_list = [];
},
start () {
nx.audio.playSFX("audios/effects/lose");
},
touchClose(){
this.ctrl.openFailFinishView(false, this.fight_type)
},
// 重载:关闭前
onPreClosed: function() {
this.handleEffect(false);
if (this.model.getBattleScene() && this.ctrl.getIsSameBattleType(this.fight_type)) {
var data = { combat_type: this.fight_type, result: this.result };
this.model.result(data, null)
}
},
onOpenConfigs(params){
this.data = params[2];
this.result = params[1];
this.fight_type = params[0] || BattleConst.Fight_Type.Darma;
let svp_partner = 0;
let total_hurt = 0;
let svp_hurt = 0;
for(let i in this.data.hurt_statistics){
let v = this.data.hurt_statistics[i];
let partner_list = v.partner_hurts;//计算dps
for(let hurt in partner_list){
let partner = partner_list[hurt];
if(partner.srvid == this.role_vo.srv_id && partner.rid == this.role_vo.rid){
total_hurt+=partner.dps;
if(partner.dps > svp_hurt){
svp_hurt = partner.dps;
svp_partner = partner.bid;
}
}else{
break;
}
}
}
this.partner_bid = svp_partner || 0;
this.partner_hurt = svp_hurt || 0;
this.partner_total_hurt = total_hurt || 0;
this.use_skin = this.data.use_skin || 0;
//等级
let partner_config = game.configs.partner_data.data_partner_base[this.partner_bid];
let skin_config = game.configs.partner_skin_data.data_skin_info[this.use_skin];
//名称和立绘
if (partner_config) {
let bustid = null;
if(skin_config){
bustid = skin_config.bustid;
}else{
bustid = partner_config.bustid;//h30001
}
var bust_res = PathTool.getIconPath("models/"+bustid,"half_show");
nx.gui.setSpriteFrame(this.bust_icon_sp.node,"",bust_res);
// cc.loader.loadRes(bust_res, cc.SpriteFrame,(err,bg_sf)=> {
// if(err){
// let emp = PathTool.getIconPath("empty","half_show");
// nx.gui.setSpriteFrame(this.bust_icon_sp.node,"",emp);
// }
// this.bust_icon_sp.spriteFrame = bg_sf;
// });
}
if (this.data && this.data.hurt_statistics) {
this.harm_btn.active = true;
} else {
this.harm_btn.active = false;
}
this.handleEffect(true);
this.createButton();
//伤害统计
var hurtPercent = cc.js.formatStr("%s", Math.floor(this.partner_hurt / this.partner_total_hurt * 100)) + "%";
this.hurtTxt_lb.string = cc.js.formatStr("%d(%s)", Math.ceil(Number(this.partner_hurt)), hurtPercent);
},
touchGoBtn(_type){
this.openPanelByConfig(this.cfg_list[_type]);
this.ctrl.openFailFinishView(false, this.fight_type);
},
createButton(){
var base_data = this.drama_ctrl.getModel().getDramaData();
var config = game.configs.battle_act_data.data_get_fail_data;
if (config && base_data) {
var max_dun_id = base_data.max_dun_id;
for (var i in config) {
var v = config[i];
if (v.open_dungeon > max_dun_id) {
this.btns[i-1].active = false;
}else{
this.cfg_list.push(v);
let lb = nx.gui.getComponent(this.btns[i-1],"label",cc.Label);
lb.string = v.icon_name;
}
}
}
},
handleEffect: function (status) {
if (!status) {
if (this.special_sk) {
// this.special_sk.setToSetupPose();
// this.special_sk.clearTracks();
// this.special_sk.node.active = false;
}
} else {
if (this.special_sk) {
// this.special_sk.node.active = false;
// var res = PathTool.getSpinePath(PathTool.getEffectRes(104))
// cc.loader.loadRes(res, sp.SkeletonData ,(res_object)=> {
// this.special_sk.skeletonData = res_object;
// this.special_sk.setAnimation(1, PlayerAction.action, false)
// })
}
}
},
openPanelByConfig: function (config) {
let BCJ = BattleConst.JumpType;
let type = 0;
switch( config.val_key ) {
case BCJ.Summon: { type = 1; } break;
case BCJ.HeroBag: { type = 19; } break;
case BCJ.Forge: { type = 26; } break;
case BCJ.Hallows: { type = 20; } break;
default: return;
}
nx.bridge.jumper.jump2Window( type );
},
clickHarm(){
if(this.harm_con.scaleX == 0){
this.harm_con.scaleX = 1;
this.svp_con.scaleX = 0;
gcore.GlobalEvent.fire(BattleEvent.BATTLE_HARM_DATA,this.data);
}else{
this.harm_con.scaleX = 0;
this.svp_con.scaleX = 1;
}
},
clickMvp(){
if(this.svp_con.scaleX == 0){
this.svp_con.scaleX = 1;
this.harm_con.scaleX = 0;
}else{
this.harm_con.scaleX = 1;
this.svp_con.scaleX = 0;
}
}
// update (dt) {},
});