"use strict"; cc._RF.push(module, 'f7440dmXRJG7bPiDCFuPMuX', 'cmp.cchampion.race.page'); // Scripts/mod/pvp/crosschampion/cmp/cmp.cchampion.race.page.js "use strict"; var ArenaConst = require("arena_const"); var ArenaEvent = require("arena_event"); var MenuPage = require("cmp.com.menu.page"); var CrossChampionController = require("crosschampion_controller"); var HeroController = require("hero_controller"); var ItemLay = require("cmp.common.itemlayout"); var data2Icon = require("bridge.utils.item"); var BattleController = require("battle_controller"); cc.Class({ "extends": MenuPage, properties: { nodRace: { "default": null, type: cc.Node }, nodEmpty: { "default": null, type: cc.Node }, nodLeft: { "default": null, type: cc.Node }, nodRight: { "default": null, type: cc.Node }, nodLeftParts: { "default": null, type: ItemLay }, nodRightParts: { "default": null, type: ItemLay }, nodLeftCamp: { "default": null, type: cc.Sprite }, nodRightCamp: { "default": null, type: cc.Sprite }, nodStageTime: { "default": null, type: cc.Node }, nodReplay: { "default": null, type: cc.Node } }, onLoad: function onLoad() { this.bindGEvent(ArenaEvent.UpdateMyMatchInfoEvent, this.freshInfo.bind(this)); // this.bindGEvent( ArenaEvent.UpdateChampionBaseInfoEvent, this.freshMyRace.bind( this )); nx.gui.setActive(this.nodEmpty, "", false); nx.gui.setActive(this.nodRace, "", false); }, onEnable: function onEnable() { // 视图监听 this.vbind([["CChampion", this.freshMyRace.bind(this)]]); // this.nodMenus.posTog = this.onTogMenu.bind( this ); this.setEmpty(); }, // 隐藏 onDisable: function onDisable() { // 视图监听解除 this.vunbind(); // 事件监听释放 // this.unbindGEvents(); nx.gui.setActive(this.nodEmpty, "", false); // nx.gui.setActive( this.nodRace, "", false ); }, // 重载:关闭前 onPreClosed: function onPreClosed() {}, freshMyRace: function freshMyRace(_race) { if (!_race) { return; } var baseInfo = _race; this.stepinfo = baseInfo; var desc = ""; var show = baseInfo.step == ArenaConst.champion_step.unopened; if (show) { desc = nx.text.getKey("champion_str34"); // 冠軍賽未開啓 } var rdesc = nx.text.getKey("champion_str" + (18 + baseInfo.round_status)); nx.gui.setString(this.nodStageTime, "stage", rdesc); nx.gui.setActive(this.nodEmpty, "bg/stime", true); nx.gui.setString(this.nodEmpty, "bg/state", desc); var nod = nx.gui.find(this.nodEmpty, "bg"); if (baseInfo.start_time - Math.floor(cc.sys.now() / 1000) >= 0) { nx.gui.setCdTxt(nod, "stime/time", baseInfo.start_time - Math.floor(cc.sys.now() / 1000), function () { nx.gui.setActive(nod, "stime", false); }); } nx.gui.setActive(this.nodStageTime, "", baseInfo.step_status != ArenaConst.champion_step_status.over); if (baseInfo.round_status == ArenaConst.champion_round_status.fight) { CrossChampionController.getInstance().sender26202(); nx.gui.setCdTxt(this.nodStageTime, "txt", baseInfo.round_status_time, function () {}); } else { nx.gui.setCdTxt(this.nodStageTime, "txt", baseInfo.round_status_time, function () { CrossChampionController.getInstance().sender26202(); }); } }, setEmpty: function setEmpty() { var cct = CrossChampionController.getInstance(); cct.sender26200(); cct.sender26202(); }, // 根据位置获取敌方英雄数据 getRoleDataByIndex: function getRoleDataByIndex(index, role_list) { for (var k in role_list) { var v = role_list[k]; if (v.pos == index) { return v; } } }, dealPartners: function dealPartners(_ctype, _plst, _left) { var formation_config = gdata("formation_data", "data_form_data", _ctype); 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, _plst); //位置上没有英雄就选择置空 var role_vo = null; if (role_info) { if (_left) { role_data = HeroController.getInstance().getModel().getHeroInfoByBidStar(role_info.bid, role_info.star); partner_ids.push(role_data); role_vo = role_data; } else { role_info.is_master = true; role_info.rid = role_info.rid || 0; role_info.srv_id = role_info.srv_id || ""; role_vo = this.createHeroVo(role_info); } } role_datas.push(role_vo); } return role_datas; }, createHeroVo: function createHeroVo(role_data) { role_data.updateHeroVo = ""; var vof = data2Icon.data2Icon(role_data.bid); vof.level = role_data.lev; vof.stars = role_data.star; var vo = data2Icon.data2Icon(vof); return vo; }, // 待定 使用綁定值或者 傳入相關數據的方法 freshInfo: function freshInfo(_guessdata) { var guessinfo = _guessdata; if (guessinfo.step != 0) { var acamptype = guessinfo.a_formation_type; // 陣型顯示 var bcamptype = guessinfo.b_formation_type; // 陣型顯示 var ap_list = guessinfo.a_plist; // 夥伴列表 var bp_list = guessinfo.b_plist; // 夥伴列表 var aframe = guessinfo.a_avatar_id == 0 ? 1000 : guessinfo.a_avatar_id; // 頭像框 var bframe = guessinfo.b_avatar_id == 0 ? 1000 : guessinfo.b_avatar_id; // 頭像框 var apower = guessinfo.a_power; // 戰力 var bpower = guessinfo.b_power; // 戰力 var path = "prefab/pvp/ui"; var aformation_config = gdata("formation_data", "data_form_data", acamptype); var apaht = cc.path.join(path, "teamform_" + aformation_config.order); nx.gui.setSpriteFrame(this.nodLeftCamp, "", apaht); var cmp = nx.gui.getComponent(this.nodLeft, "bg/info/avatar", "cmp.common.header"); if (cmp) { cmp.setHeadRes(guessinfo.a_face); cmp.setFrameRes(aframe); } nx.gui.setString(this.nodLeft, "bg/info/power", apower); nx.gui.setString(this.nodLeft, "bg/info/lev", nx.text.format("LvNumber", guessinfo.a_lev)); nx.gui.setString(this.nodLeft, "bg/info/nbg/server", guessinfo.a_srv_id); nx.gui.setString(this.nodLeft, "bg/info/nbg/name", guessinfo.a_name); var arole = this.dealPartners(acamptype, ap_list, true); if (this.nodLeftParts) { this.nodLeftParts.rebuild(arole); } var bformation_config = gdata("formation_data", "data_form_data", bcamptype); var bpaht = cc.path.join(path, "teamform_" + bformation_config.order); nx.gui.setSpriteFrame(this.nodRightCamp, "", bpaht); // nx.gui.setSpriteFrame( this.nodRight, "bg/info/ctype", cc.path.join( path, "teamform_" + bcamptype ) ); var bcmp = nx.gui.getComponent(this.nodRight, "bg/info/avatar", "cmp.common.header"); if (bcmp) { bcmp.setHeadRes(guessinfo.b_face); bcmp.setFrameRes(bframe); } nx.gui.setString(this.nodRight, "bg/info/power", bpower); nx.gui.setString(this.nodRight, "bg/info/lev", nx.text.format("LvNumber", guessinfo.b_lev)); nx.gui.setString(this.nodRight, "bg/info/name", guessinfo.b_name); var sprites = nx.gui.find(this.nodLeft, "wings"); this.freshRp(bcamptype, bp_list); for (var i = 0; i < guessinfo.a_sprites.length; i++) { var sprite = guessinfo.a_sprites[i]; if (sprite) { var sid = sprite.item_bid; if (sid > 0) { var nod = sprites.children[i]; var ifg = gdata("item_data", "data_unit9", sid); nx.bridge.setIcon(nod, "icon", ifg.imageid); } } } } this.race = _guessdata; var desc = nx.text.getKey("champion_str35"); if (this.stepinfo.step == ArenaConst.champion_step.unopened) { nx.gui.setActive(this.nodEmpty, "bg/stime", true); } else { nx.gui.setActive(this.nodEmpty, "bg/stime", false); nx.gui.setString(this.nodEmpty, "bg/state", desc); } nx.gui.setActive(this.nodRace, "", guessinfo.step != 0); // 顯示對戰相關數據 nx.gui.setActive(this.nodEmpty, "", guessinfo.step == 0 || this.stepinfo.step == ArenaConst.champion_step.unopened); nx.gui.setActive(this.nodReplay, "", guessinfo.replay_id != 0); if (this.stepinfo.step_status == ArenaConst.champion_step_status.over) { nx.gui.setActive(this.nodLeft, "ico", guessinfo.ret == 1); nx.gui.setActive(this.nodRight, "ico", guessinfo.ret == 2); } if (this.race.replay_id != 0 && this.stepinfo.round_status == ArenaConst.champion_round_status.fight && this.stepinfo.flag != 0) { this.onTouchReplay(); } }, freshRp: function freshRp(bcamptype, bp_list) { var brole = this.dealPartners(bcamptype, bp_list); if (this.nodRightParts) { this.nodRightParts.rebuild(brole); } }, onTouchReplay: function onTouchReplay() { var srv_id = nx.bridge.vget("curServer").srv_id; BattleController.getInstance().sender_20036(this.race.replay_id, srv_id); } }); cc._RF.pop();