222 lines
6.8 KiB
JavaScript
222 lines
6.8 KiB
JavaScript
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) {},
|
|
});
|