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) {}, });