var PathTool = require( "pathtool" ); var FriendController = require( "friend_controller" ); var FriendConst = require( "friend_const" ); var FriendVo = require( "friend_vo" ); var TimeTool = require( "timetool" ) const SvcItem = require( "nx.fx.sv.expand.item" ); const HomeModel = require( "home.mod" ); cc.Class( { extends: SvcItem, properties: { role_name: { default: null, type: cc.Label }, role_power: { default: null, type: cc.Label }, is_online: { default: null, type: cc.Node }, is_offline: { default: null, type: cc.Node }, head_img: { default: null, type: cc.Sprite }, add_label: { default: null, type: cc.Label }, head_con: { default: null, type: cc.Node }, del_btn: { default: null, type: cc.Button }, img_btn: { default: null, type: cc.Button }, rev_img_btn: { default: null, type: cc.Button }, add_btn: { default: null, type: cc.Button }, allow_btn: {//好友申请 default: null, type: cc.Node }, remove_btn: {//黑名单移除按钮 default: null, type: cc.Node }, nds: { default: null, type: cc.Node }, btns: { default: null, type: cc.Node }, fabPlayer: { default: null, type: cc.Prefab } }, // LIFE-CYCLE CALLBACKS: onLoad() { this.is_del = false; }, rebind: function ( _idx, _data, _key ) { this._super( _idx, _data, _key ); this.open_type = Number( _key ) || FriendConst.Type.MyFriend; //头像 if( !this.play_head ) { this.play_head = cc.instantiate( this.fabPlayer ); this.play_head.parent = this.head_con; let cmp = this.play_head.getComponent( "cmp.common.header" ); cmp.addCallBack( ( function () { FriendController.getInstance().openFriendCheckPanel( true, this.vo ); } ).bind( this ) ) } // 刷新 this.setData( this.mdata ) }, start() { }, onFocus() { }, outFocus() { }, //私聊 touchPrivateChat() { if( !this.vo ) return if( this.my_friend ) { //私聊 var ChatController = require( "chat_controller" ); var ChatConst = require( "chat_const" ); let vo = { avatar_bid: this.vo.avatar_bid , career: this.vo.career , dun_id: this.vo.dun_id , face_id: this.vo.face_id , gid: this.vo.gid , gift_status: this.vo.gift_status , gname: this.vo.gname , group_id: this.vo.group_id , gsrv_id: this.vo.gsrv_id , intimacy: this.vo.intimacy , is_awake: this.vo.is_awake , is_cross: this.vo.is_cross , is_draw: this.vo.is_draw , is_moshengren: this.vo.is_moshengren , is_online: this.vo.is_online , is_present: this.vo.is_present , is_used: this.vo.is_used , is_vip: this.vo.is_vip , lev: this.vo.lev , login_out_time: this.vo.login_out_time , login_time: this.vo.login_time , main_partner_id: this.vo.main_partner_id , name: this.vo.name , partner_bid: this.vo.partner_bid , partner_lev: this.vo.partner_lev , partner_star: this.vo.partner_star , power: this.vo.power , rid: this.vo.rid , sex: this.vo.sex , srv_id: this.vo.srv_id , talk_time: this.vo.talk_time }; ChatController.getInstance().openChatPanel( ChatConst.Channel.Friend, "friend", vo ); nx.bridge.closePanel( "WndFriend"); } }, touchAdd() { if( !this.vo ) return if( this.apply_panel ) { FriendController.getInstance().accept( this.vo.srv_id, this.vo.rid, 1 ); } }, touchHome() { nx.bridge.createPanel( "WndHome", { srv_id: this.mdata.srv_id, rid: this.mdata.rid, } ); nx.bridge.closePanel( "WndFriend" ); }, //拒绝好友申请 touchRefuse() { if( !this.vo ) return; FriendController.getInstance().accept( this.vo.srv_id, this.vo.rid, 0 ); }, //黑名单移除 touchRemove() { if( !this.vo ) return; FriendController.getInstance().deleteBlackList( this.vo.rid, this.vo.srv_id ); }, touchAllow() { if( !this.vo ) return; nx.gui.setLocked(this.allow_btn,"",true); nx.gui.getComponent( this.allow_btn, "", cc.Button ); // bt.interactable = false; FriendController.getInstance().addOther( this.vo.srv_id, this.vo.rid ); }, touchDel() { if( !this.vo ) return if( this.apply_panel ) { FriendController.getInstance().accept( this.vo.srv_id, this.vo.rid, 0 ); } else if( this.my_friend ) { FriendController.getInstance().delOther( this.vo.srv_id, this.vo.rid ); } }, touchInfo() { if( !this.vo ) return; FriendController.getInstance().sender_13316( 0, this.vo.rid, this.vo.srv_id ); }, touchInfo2() { if( !this.vo ) return; FriendController.getInstance().sender_13316( 1, this.vo.rid, this.vo.srv_id ) }, setData( data ) { if( nx.dt.objEmpty( data ) ) { return; } this.unBindEvent(); this.vo = data; if( this.vo == null ) return var data = this.vo; gcore.Timer.set( function () { this.updateMessage(); }.bind( this ), 60, 1 ) let cmp = this.play_head.getComponent( "cmp.common.header" ); cmp.setData( data ); if( data.name != null ) { this.role_name.string = data.name || ""; } if( data.lev != null ) { this.role_power.string = data.lev; } nx.gui.setActive( this.role_power.node.parent, "", data.lev ); this.updateOnlineTime(); this.addVoBindEvent(); }, // 更新在线时间 updateOnlineTime: function () { if( !this.vo ) return; let str = ""; if( this.vo.is_online != null && this.vo.is_online == 0 ) { this.is_online.active = false; this.is_offline.active = true; } else { this.is_online.active = true; this.is_offline.active = false; } }, addVoBindEvent: function () { // 直接用数据去监听这样避免了刷新的频繁 if( this.vo && this.vo != null && this.vo.bind ) { if( this.item_update_event == null ) { this.item_update_event = this.vo.bind( FriendVo.UPDATE_FRIEND_ATTR_LOGIN_OUT_TIME, function ( vo ) { this.updateOnlineTime(); }, this ) } } }, unBindEvent: function () { if( this.vo ) { if( this.item_update_event != null ) { this.vo.unbind( this.item_update_event ); this.item_update_event = null; } this.vo = null; } }, //根据类型创建显隐相关控件 updateMessage: function () { this.nds.active = false; this.btns.active = true; for( let i in this.nds.children ) { let btn = nx.gui.getComponent( this.nds.children[ i ], "img", cc.Button ); btn.interactable = true; this.nds.children[ i ].active = true; } for( let i in this.btns.children ) { let btn2 = this.btns.children[ i ].getComponent( cc.Button ); btn2.interactable = true; this.btns.children[ i ].active = false; } this.hideAllPanel(); if( this.open_type == FriendConst.Type.MyFriend ) { this.is_del = this.vo.del_status || false; this.updateMyFriend(); } else if( this.open_type == FriendConst.Type.ApplyList ) { this.is_del = false; this.updateApplyPanel(); } else if( this.open_type == FriendConst.Type.BlackList ) { this.is_del = false; this.updateBlackPanel(); } else if( this.open_type == FriendConst.Type.Find ) { this.is_del = false; this.updateRecommendPanel(); } }, hideAllPanel: function () { if( this.my_friend ) this.my_friend = false; // if (this.award_panel) // this.award_panel = false; if( this.apply_panel ) this.apply_panel = false; if( this.black_panel ) this.black_panel = false; if( this.del_friend_btn ) this.del_friend_btn = false; if( this.recommend_panel ) this.recommend_panel = false; }, //更新好友列表的控件 updateMyFriend: function () { if( !this.my_friend ) { //赠送按钮 this.my_friend = true; // this.nds.children[3].active = false; this.btns.active = false; } this.nds.active = true; if( this.vo == null ) return if( this.vo.is_present != null && this.vo.is_present == 1 ) { this.img_btn.interactable = false; } else { this.img_btn.interactable = true; } if( this.vo.is_draw != null && this.vo.is_draw == 1 ) { nx.mTip.openTip( "bar.friend.rev", true ); this.rev_img_btn.interactable = true; } else { this.rev_img_btn.interactable = false; } if( this.vo.is_home != null && this.vo.is_home == 1 ) {//开启家园 this.nds.children[ 3 ].active = true; } else { this.nds.children[ 3 ].active = false; } // if (this.is_del) // this.setDelStatus(this.is_del) }, //更新赠送的控件 updateAwardPanel: function () { // if (!this.award_panel) { // //友情点标志 // this.add_label.string = nx.text.getKey("friend_str30"); // this.award_panel = true; // this.nds.active = false; // } // this.del_btn.node.active = false; // if (!this.vo) // return // if (this.vo.is_present != null && this.vo.is_present == 1) { // this.add_btn.interactable = false; // } }, //更新申请列表的控件 updateApplyPanel: function () { if( !this.apply_panel ) { this.del_btn.node.active = true; this.add_btn.node.active = true; this.apply_panel = true; // this.add_label.string = nx.text.getKey("friend_str31"); this.nds.active = false; } }, //更新黑名单的控件 updateBlackPanel: function () { if( !this.black_panel ) { this.black_panel = true; this.nds.active = false; this.remove_btn.active = true; } }, //更新推荐好友的控件 updateRecommendPanel: function () { if( !this.recommend_panel ) { this.nds.active = false; this.allow_btn.active = true; nx.gui.setLocked(this.allow_btn,"",false); this.recommend_panel = true; } }, isHaveData: function () { if( this.vo ) return true else return false }, setDelStatus: function ( bool ) { if( bool ) this.hideAllPanel(); this.is_del = bool; if( !this.button && !bool ) return if( this.button ) { if( bool ) { this.add_label.string = nx.text.getKey( "friend_str4" ) this.nds.active = false; } } if( !bool ) this.updateMyFriend(); }, getData: function () { return this.vo }, onDestroy() { this.unBindEvent(); this.vo = null; } // update (dt) {}, } );