226 lines
6.4 KiB
JavaScript
226 lines
6.4 KiB
JavaScript
"use strict";
|
|
cc._RF.push(module, '5513dNhjX9Oa4PlPH4qdIpO', 'cmp.battle.fail');
|
|
// Scripts/mod/battle/cmp/cmp.battle.fail.js
|
|
|
|
"use strict";
|
|
|
|
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");
|
|
var 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: function 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: function start() {
|
|
nx.audio.playSFX("audios/effects/lose");
|
|
},
|
|
touchClose: function touchClose() {
|
|
this.ctrl.openFailFinishView(false, this.fight_type);
|
|
},
|
|
// 重载:关闭前
|
|
onPreClosed: function onPreClosed() {
|
|
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: function onOpenConfigs(params) {
|
|
this.data = params[2];
|
|
this.result = params[1];
|
|
this.fight_type = params[0] || BattleConst.Fight_Type.Darma;
|
|
var svp_partner = 0;
|
|
var total_hurt = 0;
|
|
var svp_hurt = 0;
|
|
for (var i in this.data.hurt_statistics) {
|
|
var v = this.data.hurt_statistics[i];
|
|
var partner_list = v.partner_hurts; //计算dps
|
|
for (var hurt in partner_list) {
|
|
var 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;
|
|
|
|
//等级
|
|
var partner_config = game.configs.partner_data.data_partner_base[this.partner_bid];
|
|
var skin_config = game.configs.partner_skin_data.data_skin_info[this.use_skin];
|
|
|
|
//名称和立绘
|
|
if (partner_config) {
|
|
var 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: function touchGoBtn(_type) {
|
|
this.openPanelByConfig(this.cfg_list[_type]);
|
|
this.ctrl.openFailFinishView(false, this.fight_type);
|
|
},
|
|
createButton: function 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);
|
|
var lb = nx.gui.getComponent(this.btns[i - 1], "label", cc.Label);
|
|
lb.string = v.icon_name;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
handleEffect: function handleEffect(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 openPanelByConfig(config) {
|
|
var BCJ = BattleConst.JumpType;
|
|
var 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: function 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: function 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) {},
|
|
});
|
|
|
|
cc._RF.pop(); |