"use strict"; cc._RF.push(module, 'd6f62cS99NIpbr2B3Jz331L', 'cmp.planesafk.wnd.masterinfo'); // Scripts/mod/pve/planesafk/cmp/cmp.planesafk.wnd.masterinfo.js "use strict"; var BridgeWindow = require("bridge.window"); var ItemLay = require("cmp.common.itemlayout"); var PlanesafkController = require("planesafk_controller"); var HeroController = require("hero_controller"); var RoleController = require("role_controller"); var PlanesafkEvent = require("planesafk_event"); var PlanesafkConst = require("planesafk_const"); var ElfinEvent = require("elfin_event"); var PartnerConst = require("partner_const"); var HeroConst = require("hero_const"); var HeroVo = require("hero_vo"); cc.Class({ "extends": BridgeWindow, properties: { btn_fight: { "default": null, type: cc.Node }, btn_embattle: { "default": null, type: cc.Node }, lname: { "default": null, type: cc.Label }, rname: { "default": null, type: cc.Label }, myHead: { "default": null, type: cc.Node }, enHead: { "default": null, type: cc.Node }, left_atk_val: { "default": null, type: cc.Label }, left_atk_txt: { "default": null, type: cc.Label }, right_atk_txt: { "default": null, type: cc.Label }, left_heros: { "default": null, type: ItemLay }, right_heros: { "default": null, type: ItemLay }, rewards: { "default": null, type: ItemLay }, fabHeader: { "default": null, type: cc.Prefab }, mySprites: { "default": null, type: cc.Node }, selfSprites: { "default": null, type: cc.Node }, myAddTxt: { "default": null, type: cc.Label }, selfAddTxt: { "default": null, type: cc.Label }, buffTxts: { "default": [], type: [cc.Node] }, diffs: { "default": [], type: [cc.Node] } }, // LIFE-CYCLE CALLBACKS: onLoad: function onLoad() { this.ctrl = PlanesafkController.getInstance(); this.model = this.ctrl.getModel(); // 可出战英雄数据 this.bindGEvent(PlanesafkEvent.Get_All_Hero_Event, this.getAllHeroByForm.bind(this)); // 我方阵容数据 this.bindGEvent(PlanesafkEvent.Get_Form_Data_Event, this.getHeroFormData.bind(this)); // 通过布阵更新了我方阵容数据 this.bindGEvent(PlanesafkEvent.Update_Form_Data_Event, this.updateMyFormData.bind(this)); // 我方精灵数据更新 this.bindGEvent(ElfinEvent.Get_Elfin_Tree_Data_Event, this.updateMyElfinInfo.bind(this)); // this.bindGEvent( ElfinEvent.Elfin_Plan_From_Info_Event, this.updateMyEflinSkill.bind( this ) ); // 通过布阵后战力值更新 this.bindGEvent(PlanesafkEvent.Update_Form_Atk_Event, this.updateMyHeroAtkVal.bind(this)); // 敌方阵容数据 this.bindGEvent(PlanesafkEvent.Get_Master_Data_Event, this.setMasterData.bind(this)); }, // updateMyEflinSkill(data){ // if (!data)return; // let sprites = []; // if (data.team_list && data.team_list[0]) { // sprites = data.team_list[0].sprites; // } // // 精灵 // for (var i=1;i<=4;i++) { // let left_elfin_item = this.mySprites.children[i-1]; // if (left_elfin_item) { // var elfin_bid = this.getElfinBidByPos(sprites, i); // if(elfin_bid){ // left_elfin_item.active = true; // }else{ // left_elfin_item.active = false; // } // } // } // }, createHeroVo: function createHeroVo(role_data) { var vo = new HeroVo(); vo.atk = role_data.atk; vo.bid = role_data.bid; vo.ext_data = role_data.ext_data; vo.hp_max = role_data.hp_max; vo.hp_per = role_data.hp_per; vo.is_master = role_data.is_master; vo.lev = role_data.lev; vo.partner_id = role_data.partner_id; vo.rid = role_data.rid; vo.srv_id = vo.srv_id; vo.star = vo.star; return vo; }, setMasterData: function setMasterData(data) { if (!data) return; if (!this.data) return; var evt_config = this.data.evt_config; // 名称 // if (evt_config) {// && evt_config.type == PlanesafkConst.Evt_Type.Guard this.rname.string = data.name || nx.text.getKey("lab_planesafk_master_sw"); // } // 战力 this.right_atk_txt.string = data.guards_power; // 头像 if (!this.right_head) { this.right_head = cc.instantiate(this.fabHeader); this.right_head.parent = this.enHead; } var cmp = this.right_head.getComponent("cmp.common.header"); if (cmp) { cmp.setData(data); } // 英雄头像 var role_datas = []; var formation_config = gdata("formation_data", "data_form_data", data.formation_type); //game.configs.FormationData.data_form_data[data.formation_type] for (var i = 1; i <= 9; i++) { var role_data = null; var key = null; //阵法和实际位置的映射转换 for (var j = 0; j < formation_config.pos.length; j++) { var pos_val = formation_config.pos[j]; if (pos_val[1] == i) { key = pos_val[0]; } } role_data = this.getRoleDataByIndex(key, data.guards); // var hero_item = this.right_item_list[i] var role_vo = null; if (role_data) { role_data.is_master = true; role_data.rid = data.rid || 0; role_data.srv_id = data.srv_id || ""; role_vo = this.createHeroVo(role_data); // 剩余血量 // if (role_data.hp_per) { // hero_item.showProgressbar(role_data.hp_per) // if (role_data.hp_per <= 0) { // hero_item.showStrTips(true,nx.text.getKey("tip_planesafk_deathed"),{c3b : new cc.Color( 255, 255, 255, 255 )}) // } // } } role_datas.push(role_vo); } this.right_heros.rebuild(role_datas); // 精灵 // this.tree_lv_right.string = (_string_format(nx.text.getKey("古树:%d级"), data.sprite_lev || 0)) for (var i = 0; i < 4; i++) { var right_elfin_item = this.selfSprites.children[i]; if (right_elfin_item) { var elfin_bid = this.getElfinBidByPos(data.sprites, i); if (elfin_bid) { right_elfin_item.active = true; } else { right_elfin_item.active = false; } } } // 加成 var dif_val = data.strength || 1000; if (dif_val >= 1000) { this.selfAddTxt.string = cc.js.formatStr(nx.text.getKey("lab_planesafk_master_window_tip5"), (dif_val - 1000 / 10) / 100); } else { this.selfAddTxt.string = cc.js.formatStr(nx.text.getKey("lab_planesafk_master_window_tip6"), (1000 - dif_val / 10) / 100); } // // 我方buff数据 // for (var k in data.buffs) { // var v = data.buffs[k]; // if (v.quality == 1) { // 蓝 // let buff_nd = this.buffTxts[v.quality - 1]; // nx.gui.setString(buff_nd,"num",v.num); // } // else if ( v.quality == 2 ){ //紫 // let buff_nd = this.buffTxts[v.quality - 1]; // nx.gui.setString(buff_nd,"num",v.num); // } // else if ( v.quality == 3 ){ // 橙 // let buff_nd = this.buffTxts[v.quality - 1]; // nx.gui.setString(buff_nd,"num",v.num); // } // } }, updateMyHeroAtkVal: function updateMyHeroAtkVal(atk_val) { this.left_atk_txt.string = atk_val; this.hero_base_atk_val = this.hero_base_atk_val || 0; var add_percent = (atk_val - this.hero_base_atk_val) / this.hero_base_atk_val * 100; this.left_atk_val.string = cc.js.formatStr(nx.text.getKey("lab_planesafk_master_window_tip7"), add_percent.toFixed(1)); }, updateMyElfinInfo: function updateMyElfinInfo() {}, updateMyFormData: function updateMyFormData(form_type, pos_data) { if (!this.form_data) return; this.form_data.formation_type = form_type; this.form_data.pos_info = pos_data; this.hero_base_atk_val = 0; // 英雄基础战力值 var partner_ids = []; var role_datas = []; var formation_config = gdata("formation_data", "data_form_data", form_type); for (var i = 1; i <= 9; i++) { var key = null; //阵法和实际位置的映射转换 for (var j = 0; j < formation_config.pos.length; j++) { var pos_val = formation_config.pos[j]; if (pos_val[1] == i) { key = pos_val[0]; } } var role_info = this.getRoleDataByIndex(key, pos_data); var role_data = null; var role_vo = null; if (role_info) { if (role_info.data && role_info.data.flag == 1) { role_data = role_info.data; role_data.flag = 1; //雇佣英雄 partner_ids.push(role_data); role_vo = this.createHeroVo(role_data); } else { role_data = HeroController.getInstance().getModel().getHeroById(role_info.id); role_data.flag = 0; //非雇佣英雄 role_data.hp_per = this.model.getMyPlanesHeroHpPer(role_data.partner_id, role_data.flag); partner_ids.push(role_data); role_vo = role_data; } } role_datas.push(role_vo); // //助战 // if (role_data.flag == 1) { // hero_item.showHelpImg(true) // } // // 剩余血量 // var hp_per = role_data.hp_per || PlanesafkController.getInstance().getModel().getMyPlanesHeroHpPer(role_data.partner_id, role_data.flag) // if (hp_per) { // hero_item.showProgressbar(hp_per) // } // 总战力 if (role_data) { this.hero_base_atk_val = this.hero_base_atk_val + role_data.power; } else { this.hero_base_atk_val = this.hero_base_atk_val + 0; } this.left_atk_txt.string = this.hero_base_atk_val; } this.left_heros.rebuild(role_datas); if (Utils.next(partner_ids) != null) { // 请求新上阵英雄的战力值 this.ctrl.sender28610(partner_ids); } }, getHeroFormData: function getHeroFormData(data) { this.form_data = data; if (this.get_all_hero_flag) { this.setMyFormData(); } }, getAllHeroByForm: function getAllHeroByForm() { this.get_all_hero_flag = true; if (this.form_data) { this.setMyFormData(); } }, start: function start() {}, onOpenConfigs: function onOpenConfigs(data) { this.data = data; if (!data) return; this.updateAwardList(); this.ctrl.sender28612(); // 请求我方阵容数据 this.ctrl.sender28600(this.data.line, this.data.index, 0, {}); // 请求敌方阵容数据 this.ctrl.sender28613(); //展示難度 // let evt_cfg = game.configs.planes_data.data_evt_info[data.evt_id]; // if(evt_cfg){ // this.diffs[evt_cfg.type - 1].active = true; // } //申请位面的精灵信息 // ElfinController.getInstance().send26555(PartnerConst.Fun_Form.Planes) var evt_data = this.ctrl.getMapEvtData(this.data.line, this.data.index); if (evt_data && evt_data.is_black) { this.btn_fight.active = false; this.btn_embattle.active = false; } }, onPreClosed: function onPreClosed() { this.rewards.rebuild([]); this.left_heros.rebuild([]); this.right_heros.rebuild([]); }, // 奖励数据 updateAwardList: function updateAwardList() { var evt_config = this.data.evt_config; if (!evt_config) { evt_config = game.configs.planes_data.data_evt_info[this.data.evt_id]; } if (!evt_config) return; // 怪物显示事件名称 if (evt_config.type == PlanesafkConst.Evt_Type.Monster) { this.rname.string = evt_config.name; } var add_per = 0; var role_vo = RoleController.getInstance().getRoleVo(); if (!role_vo) return; var lev = role_vo.lev || 1; var reward_list = gdata("planes_data", "data_reward_info", evt_config.reward_list[0]); var reward = null; if (reward_list) { for (var i in reward_list) { var v = reward_list[i]; if (v.min && v.max && lev >= v.min && lev <= v.max) { reward = v.reward; } } } var data_list = reward || []; var item_list = []; for (var k in data_list) { var v = data_list[k]; var vo = {}; vo.bid = v[0]; vo.num = Math.floor((1 + add_per / 1000) * v[1]); if (vo.bid == 25 && this.model.isHolidayOpen()) { vo.num = Math.floor(vo.num * 1.1 + 0.5); } item_list.push(vo); } this.rewards.rebuild(item_list); }, // 我方阵容数据 setMyFormData: function setMyFormData() { var role_vo = RoleController.getInstance().getRoleVo(); if (!this.form_data || !role_vo) return; // 名称 this.lname.string = role_vo.name; // 头像 if (!this.left_head) { this.left_head = cc.instantiate(this.fabHeader); this.left_head.parent = this.myHead; } var cmp = this.left_head.getComponent("cmp.common.header"); if (cmp) { cmp.setData(role_vo); } // 英雄头像 this.hero_base_atk_val = 0; var formation_config = gdata("formation_data", "data_form_data", this.form_data.formation_type); var partner_ids = []; var role_datas = []; for (var i = 1; i <= 9; i++) { var role_data = null; var key = null; //阵法和实际位置的映射转换 for (var j = 0; j < formation_config.pos.length; j++) { var pos_val = formation_config.pos[j]; if (pos_val[1] == i) { key = pos_val[0]; } } var role_info = this.getRoleDataByIndex(key, this.form_data.pos_info); //位置上没有英雄就选择置空 var _role_vo = null; if (role_info) { if (role_info.flag && role_info.flag == 1) { role_data = this.model.getPlanesHireHeroData(role_info.id); role_data.flag = 1; //雇佣英雄 partner_ids.push(role_data); _role_vo = this.createHeroVo(role_data); } else { role_data = HeroController.getInstance().getModel().getHeroById(role_info.id); role_data.flag = 0; //非雇佣英雄 role_data.hp_per = this.model.getMyPlanesHeroHpPer(role_data.partner_id, role_data.flag); partner_ids.push(role_data); _role_vo = role_data; } } role_datas.push(_role_vo); // 总战力 if (role_data) { this.hero_base_atk_val = this.hero_base_atk_val + role_data.power; } else { this.hero_base_atk_val = this.hero_base_atk_val + 0; } this.left_atk_txt.string = this.hero_base_atk_val; } this.left_heros.rebuild(role_datas); // 请求战力加成 if (partner_ids.length > 0) { // 请求新上阵英雄的战力值 this.ctrl.sender28610(partner_ids); } // 精灵 this.updateMyElfinInfo(); }, // 根据位置获取精灵的bid getElfinBidByPos: function getElfinBidByPos(sprite_data, pos) { if (!sprite_data) return; for (var k in sprite_data) { var v = sprite_data[k]; if (v.pos == pos) { return v.item_bid; } } }, // 根据位置获取我方英雄id getMyRoleIdByIndex: function getMyRoleIdByIndex(index, role_list) { for (var k in role_list) { var v = role_list[k]; if (v.pos == index) { return v.id; } } }, // 根据位置获取敌方英雄数据 getRoleDataByIndex: function getRoleDataByIndex(index, role_list) { for (var k in role_list) { var v = role_list[k]; if (v.pos == index) { return v; } } }, // 出战 onClickFightBtn: function onClickFightBtn() { var _this = this; if (!this.form_data || !this.data) return; if (this.form_data.pos_info.length < 5) { var str = nx.text.getKey("lab_planesafk_master_window_tip2"); nx.mbox(str, ["cancel", "confirm"], function (_key, _box) { _box.close(); if (_key == "confirm") { _this.comfirmFight(); } }); } else { this.comfirmFight(); } }, comfirmFight: function comfirmFight() { if (!this.form_data || !this.data) return; var ext_list = []; // 阵法 ext_list.push({ type: PlanesafkConst.Proto_28600._1, val1: this.form_data.formation_type, val2: 0 }); // 神器 ext_list.push({ type: PlanesafkConst.Proto_28600._2, val1: this.form_data.hallows_id, val2: 0 }); // 英雄 for (var k in this.form_data.pos_info) { var v = this.form_data.pos_info[k]; if (v.flag && v.flag == 1 || v.data && v.data.flag == 1) { // 雇佣英雄 ext_list.push({ type: PlanesafkConst.Proto_28600._4, val1: v.pos, val2: v.id }); } else { ext_list.push({ type: PlanesafkConst.Proto_28600._3, val1: v.pos, val2: v.id }); } } this.ctrl.sender28600(this.data.line, this.data.index, 1, ext_list, null, true); this.close(); }, // 布阵 onClickEmbattleBtn: function onClickEmbattleBtn() { HeroController.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.Planes, { need_hide_top: true }, HeroConst.FormShowType.eFormSave); } // update (dt) {}, }); cc._RF.pop();