Files
fc/dev/project/assets/Scripts/mod/battle/cmp/cmp.battle.mvp.js
T
2026-05-23 22:10:14 +08:00

231 lines
7.8 KiB
JavaScript

var PathTool = require("pathtool");
var BattleConst = require("battle_const");
var RoleController = require("role_controller");
var BattleController = require("battle_controller");
var BattleEvent = require("battle_event");
const FxSVC = require( "nx.fx.sv.expand" );
const BridgeWindow = require("bridge.window")
cc.Class({
extends: BridgeWindow,
properties: {
svcList:{
default:null,
type:FxSVC
},
mvp_con:{
default:null,
type:cc.Node
},
harm_con:{
default:null,
type:cc.Node
},
progress_pb:{
default:null,
type:cc.ProgressBar
},
proTxt_lb:{
default:null,
type:cc.Label
},
roleLvTxt_lb:{
default:null,
type:cc.Label
},
bust_icon_sp:{
default:null,
type:cc.Sprite
},
hurtTxt_lb:{
default:null,
type:cc.Label
},
progressEffect:{
default:null,
type:sp.Skeleton
},
topNd:{
default:null,
type:cc.Node
},
fab_head:{
default:null,
type:cc.Prefab
}
},
// LIFE-CYCLE CALLBACKS:
onLoad () {
this.ani_isover = false;
this.item_list = {};
this.role_vo = RoleController.getInstance().getRoleVo();
this.ctrl = BattleController.getInstance();
this.model = this.ctrl.getModel();
},
start () {
this.head_icon = cc.instantiate(this.fab_head);
let cmp = this.head_icon.getComponent("cmp.common.header");
cmp.rebind(0,this.role_vo);
this.head_icon.parent = this.topNd;
this.head_icon.scale = 0.8;
this.head_icon.position = cc.v2(-200, 20);
nx.audio.playSFX("audios/effects/win");
},
// 重载:关闭前
onPreClosed: function() {
this.svcList.rebuild( [] );
require("hero_controller").getInstance().openEquipTips(false)
require("tips_controller").getInstance().closeAllTips();
if (this.fight_type == BattleConst.Fight_Type.Darma) {
gcore.GlobalEvent.fire(BattleEvent.MOVE_DRAMA_EVENT, this.fight_type);
}
this.handleEffect(false)
if (this.model.getBattleScene() && this.ctrl.getIsSameBattleType(this.fight_type)) {
this.model.result(this.data, null)
}
},
onOpenConfigs(data){
this.data = data;
this.result = data.result
this.reward_list = data.item_rewards || []
this.fight_type = data.combat_type || BattleConst.Fight_Type.Darma
this.partner_bid = data.partner_bid || 0
this.partner_hurt = data.partner_hurt || 0
this.partner_total_hurt = data.partner_total_hurt || 0
this.role_exp = data.exp || 0
this.role_lv = data.lev || 1
this.role_nowlv = data.new_lev || 1
this.role_nowexp = data.new_exp || 0;
this.use_skin = data.use_skin || 0;
//等级
this.roleLvTxt_lb.string = cc.js.formatStr("Lv.%d", this.role_nowlv);
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) {
// this.roleNameTxt_lb.string = partner_config.name;
let bustid = null;
if(skin_config){
bustid = skin_config.bustid;
}else{
bustid = partner_config.bustid;
}
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;
// });
}
//伤害统计
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);
this.showProgressEffect();
this.svcList.rebuild(this.reward_list);
},
showProgressEffect: function () {
var baseCurMaxExp = game.configs.role_data.data_role_attr[this.role_lv].exp_max;
var basePercent = this.role_exp / baseCurMaxExp;
var maxPercent = this.role_nowexp / baseCurMaxExp;
if (this.role_lv != this.role_nowlv) {//有升级
maxPercent = 1;
}
// if (this.data.auto_num && this.data.auto_num > 0) {
// this.auto_combat_num_lb.node.active = true;
// this.auto_combat_num_lb.string = cc.js.formatStr("Continuous customs clearance times: %s", this.data.auto_num);
// }
this.progress_pb.progress = basePercent;
this.proTxt_lb.string = cc.js.formatStr("%d/%d", Number(this.role_exp), Number(baseCurMaxExp));
let call_back = function () {
basePercent = basePercent + 0.01;
if (basePercent > maxPercent) {
if (this.role_lv == this.role_nowlv) {
baseCurMaxExp = game.configs.role_data.data_role_attr[this.role_nowlv].exp_max;
basePercent = this.role_nowexp / baseCurMaxExp;
this.progress_pb.progress = basePercent;
this.proTxt_lb.string = cc.js.formatStr("%d/%d", this.role_nowexp, Number(baseCurMaxExp))
} else {
//播放升级特效
if (this.progressEffect.skeletonData == null) {
var res = PathTool.getSpinePath(PathTool.getEffectRes(275),null);
this.loadRes(res, function (res_object) {
this.progressEffect.skeletonData = res_object;
// this.progressEffect.setAnimation(0, PlayerAction.action, false)
}.bind(this))
} else {
// this.progressEffect.setAnimation(0, PlayerAction.action, false)
}
this.role_lv = this.role_lv + 1;
basePercent = 0;
maxPercent = 1;
baseCurMaxExp = game.configs.role_data.data_role_attr[this.role_lv].exp_max;
if (this.role_lv == this.role_nowlv) {
maxPercent = this.role_nowexp / game.configs.role_data.data_role_attr[this.role_nowlv].exp_max;
}
}
} else {
this.progress_pb.progress = basePercent;
this.proTxt_lb.string = cc.js.formatStr("%d/%d", Math.ceil(baseCurMaxExp * basePercent), Number(baseCurMaxExp))
}
}.bind(this)
this.scheduleOnce(call_back,0.1);
},
handleEffect: function (status) {
if (!status) {
if (this.progressEffect) {
this.progressEffect.setToSetupPose();
this.progressEffect.clearTracks();
}
}
},
clickHarm(){
if(this.harm_con.scaleX == 0){
this.harm_con.scaleX = 1;
this.mvp_con.scaleX = 0;
gcore.GlobalEvent.fire(BattleEvent.BATTLE_HARM_DATA,this.data);
}else{
this.harm_con.scaleX = 0;
this.mvp_con.scaleX = 1;
}
},
clickMvp(){
if(this.mvp_con.scaleX == 0){
this.mvp_con.scaleX = 1;
this.harm_con.scaleX = 0;
}else{
this.harm_con.scaleX = 1;
this.mvp_con.scaleX = 0;
}
}
// update (dt) {},
});