/****************************************************************** * * 伙伴信息页 --- 基础展示 * ******************************************************************/ const BridgeComponent = require( "bridge.component" ); const NxSpine = require( "nx.fx.spine" ); const CpartnerBody = require( "cmp.partner.body.show" ); const HeroConst = require( "hero_const" ); const HeroEvent = require( "hero_event" ); const TipsController = require( "tips_controller" ); const HeroController = require( "hero_controller" ); const HomeMod = require( "home.mod" ); const FID = require( "bridge.function.ids" ); cc.Class( { extends: BridgeComponent, properties: { spRole: { default: null, type: CpartnerBody }, spMini: { default: null, type: NxSpine }, nodInfo: { default: null, type: cc.Node }, nodLike: { default: null, type: cc.Node }, nodOps: { default: null, type: cc.Node }, nodTrial: { default: null, type: cc.Node }, }, // 显示 onLoad: function() { this.partner = {}; // 视图监听 this.vbind( [ [ "ShowPartner", this.onPartnerChanged.bind( this ) ] ] ); // 事件监听 // this.bindGEvent( HeroEvent.Hero_Data_Update, this.onPartnerUpdate.bind( this ) ); }, onDestroy: function() { this.partner = {}; nx.bridge.vset( "ShowPartner", {} ); this._super(); }, // 置空 setEmpty: function() { if( this.spRole.spRole ) { this.spRole.spRole.stop(); this.spRole.spRole.node.active = false; this.spMini.stop(); this.spMini.node.active = false; nx.gui.setActive( this, "qa", false ); nx.gui.setActive( this.nodInfo, "", false ); nx.gui.setActive( this.nodLike, "", false ); nx.gui.setActive( this.nodOps, "", false ); } }, // 有伙伴数据更新 onPartnerUpdate: function( _vo ) { if( _vo && this.partner && _vo.partner_id == this.partner.partner_id ) { this.onPartnerChanged( _vo, true ); } }, // 更新伙伴 onPartnerChanged: function( _partner, _update ) { let update = false; if( nx.dt.objNEmpty( this.partner ) ) { if( this.partner.bid == _partner.bid ) { update = true; } else { update = false; } } this.partner = _partner; // 置空 if( nx.dt.objEmpty( this.partner ) ) { this.setEmpty(); return; } // if( this.spRole.spRole.node.active ) { // update = true; // }else{ // update = false; // } nx.gui.setActive( this.nodInfo, "", true ); nx.gui.setActive( this.nodLike, "", true ); nx.gui.setActive( this.nodOps, "", true ); nx.gui.setActive( this.nodOps, "like/like_popup", false ); nx.gui.setActive( this.nodInfo, "camp/img", false ); nx.gui.setActive( this.nodOps, "lock/off", this.partner.is_lock == 0 ); nx.gui.setActive( this.nodOps, "lock/on", this.partner.is_lock != 0 ); nx.gui.setActive( this.nodOps, "back", this.partner.lev != 1 ); let desc = game.configs.partner_data.data_partner_base[this.partner.bid]; // 单次设置 if( update != true ) { // 名字 nx.gui.setString( this.nodInfo, "names/name", this.partner.name ); nx.gui.setString( this.nodInfo, "names/ename", this.partner.e_name ); // 品质 let path = cc.path.join( "coms/images", "mk_partner_qa" + this.partner.quality ); nx.gui.setSpriteFrame( this, "qa/qa", path ); let noddd = nx.gui.find( this, "qa/qa/spine" ); if( noddd ){ nx.gui.setActive( noddd, "", this.partner.quality == 5 ); } // 職業 let career = this.partner.type || 4; let icon = cc.path.join( "coms/images", "career" + career ); let name = nx.text.getKey( HeroConst.CareerName[ career ]) || nx.text.getKey( "lab_none" ); nx.gui.setString( this, "qa/career/career", nx.text.getKey( name ) ); nx.gui.setSpriteFrame( this, "qa/career/ico", icon ); // 描述 nx.gui.setString( this, "qa/desc/txt", desc ? desc.introduce_str : "" ); nx.gui.setActive( this, "qa/desc", desc ); // 阵营 path = cc.path.join( "prefab/partner/ui/camp" + this.partner.camp_type ); nx.gui.setString( this.nodInfo, "camp/img/txt", nx.text.getKey( "AnyNameCampName" + this.partner.camp_type ) ); nx.gui.setSpriteFrame( this.nodInfo, "camp", path ); // 动画 this.freshSpines(); } // 等级 nx.gui.setString( this.nodInfo, "lv", "Lv." + this.partner.lev || 1 ); // 星级 let path = cc.path.join( "coms/images", "star" + this.partner.star ); nx.gui.setSpriteFrame( this.nodInfo, "stars", path ); nx.gui.setString( this.nodInfo, "power/nod/power", this.partner.power ); // 亲密度 if( !game.configs.favor_data ) { nx.gui.setActive( this.nodOps, "gift", false ); nx.gui.setActive( this.nodOps, "like", false ); } else { let girl = HomeMod.getInstance().queryGirl( this.partner.bid ); if( girl ) { nx.gui.setActive( this.nodOps, "gift", true ); nx.gui.setActive( this.nodOps, "like", true ); nx.gui.setString( this.nodOps, "like/count/txt", girl.intimacy_lev ); nx.gui.setString( this.nodOps, "like/like_popup/like_txts/lev", girl.intimacy_lev ); } else { nx.gui.setActive( this.nodOps, "gift", false ); nx.gui.setActive( this.nodOps, "like", false ); } } nx.gui.setActive( this, "qa", true ); // 試用英雄 if(this.partner.trial_end_time > 0){ nx.gui.setActive(this.nodTrial,"",true); let cds = this.partner.trial_end_time - client.socket.getTime(); nx.gui.setCdTxt( this.nodTrial, "txt", cds ); }else{ nx.gui.setActive(this.nodTrial,"",false); } }, // 刷新模型显示 freshSpines: function() { let sinfo = nx.bridge.partner.getShowInfo( this.partner ); if( !sinfo ) { this.spRole.spRole.stop(); this.spRole.spRole.node.active = false; this.spMini.stop(); this.spMini.node.active = false; return; } // 展示 this.spRole.setPartner( this.partner ); // 战斗迷你 this.spMini.load( sinfo.sp_model, ( _e ) => { if( !_e ) { this.spMini.action( "stand2", true ); this.spMini.node.active = true; } else { this.spMini.stop(); this.spMini.node.active = false; } } ); }, // 鎖定 onTouchLock: function() { if( this.partner.resonate_lev != 0 ){ nx.tbox( "HomeCenterTip" ); return; } let lock = this.partner.is_lock; HeroController.getInstance().sender11015( this.partner.partner_id, lock == 0 ); }, // 点赞 onTouchLike: function() { nx.gui.setString( nx.gui.find( this.nodOps, "like/like_popup/like_txts/title" ), "", nx.text.getKey( "Current intimacy level" ) ); nx.gui.setActive( this.nodOps, "like/like_popup", !nx.gui.find( this.nodOps, "like/like_popup" ).active ); }, // 点赞 onTouchBack: function() { this.unscheduleAllCallbacks(); if( this.partner.is_lock ){ nx.tbox( "LockTip" ); return; } nx.bridge.vset( "PartnerBack", this.partner ); nx.bridge.jumper.jump2Window( FID.Back ); let cmp = nx.gui.getComponent( this.node.parent.parent, "", "cmp.partner.info.wnd" ); if( cmp ) { this.scheduleOnce( () => { cmp.close(); }, 0.3 ); } }, // 观察 onTouchWatch: function() { HeroController.getInstance().openHeroLookDrawWindowTest( true, this.partner ); }, // 礼物 onTouchGift: function() { nx.bridge.createPanel( "WndHome" ); this.scheduleOnce( () => { nx.bridge.createPanel( "WndBedroom" ); }, 0.2 ); }, // 皮肤 onTouchSkin: function() { }, // 人物介绍 onTouchStory: function() { // const TC = TipsController.getInstance(); // let txt = nx.text.getKey( "story" + this.partner.bid ); // TC.showTextPanel( "PartnerStory", txt ); nx.bridge.createPanel( "WndLibraryPartner", { bid: this.partner.bid, auto: false } ); }, onTouchCamp: function() { this.unscheduleAllCallbacks(); nx.gui.setActive( this.nodInfo, "camp/img", true ); this.scheduleOnce( () => { nx.gui.setActive( this.nodInfo, "camp/img", false ); }, 2 ); }, } );