457 lines
12 KiB
JavaScript
457 lines
12 KiB
JavaScript
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) {},
|
|
} );
|