264 lines
8.1 KiB
JavaScript
264 lines
8.1 KiB
JavaScript
// Learn cc.Class:
|
|
// - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/class.html
|
|
// - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/class.html
|
|
// Learn Attribute:
|
|
// - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
|
|
// - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/reference/attributes.html
|
|
// Learn life-cycle callbacks:
|
|
// - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
|
|
// - [English] https://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html
|
|
var charserver = require("chatrsp")
|
|
var playerData = require("playerData")
|
|
var NetManage = require("NetManage")
|
|
cc.Class({
|
|
extends: cc.Component,
|
|
|
|
properties: {
|
|
// foo: {
|
|
// // ATTRIBUTES:
|
|
// default: null, // The default value will be used only when the component attaching
|
|
// // to a node for the first time
|
|
// type: cc.SpriteFrame, // optional, default is typeof default
|
|
// serializable: true, // optional, default is true
|
|
// },
|
|
// bar: {
|
|
// get () {
|
|
// return this._bar;
|
|
// },
|
|
// set (value) {
|
|
// this._bar = value;
|
|
// }
|
|
// },
|
|
},
|
|
|
|
// LIFE-CYCLE CALLBACKS:
|
|
|
|
onLoad () {
|
|
cc.chatMgr = this
|
|
},
|
|
|
|
initengine (offical,opt) {
|
|
this.chat = new charserver()
|
|
this.chat.initengine(offical,true)
|
|
this.bindcallback()
|
|
this.chat.loginparma = opt
|
|
this.haslongin = false
|
|
this.tmpmsg = []
|
|
// this.sendmsg("CMLogin",{
|
|
// account_id:opt.account_id,
|
|
// session_id:opt.session_id,
|
|
// nickname:opt.nickname,
|
|
// avatar_url:opt.avatar_url,
|
|
// sex:opt.sex
|
|
// })
|
|
},
|
|
|
|
|
|
sendmsg(msg,parma){
|
|
var flag = true
|
|
//console.log("ChatMsg=====222",msg,parma);
|
|
if(this[msg]){
|
|
flag = this[msg](parma)
|
|
}
|
|
if (flag) {
|
|
if(this.haslongin){
|
|
this.chat.sendmsg(msg,parma)
|
|
}else{
|
|
this.tmpmsg.push({m:msg,p:parma})
|
|
}
|
|
}
|
|
},
|
|
CMFriendApply(parma){
|
|
var date = new Date()
|
|
this.time = Number(playerData.invitecd / 1000) - (date.getTime() / 1000 - playerData.friendtime)
|
|
let uid = parma.friend_id;
|
|
let tmpState = playerData.checkAtFriendApplyArr(uid)
|
|
if(tmpState == 1)
|
|
{
|
|
cc.uiHelper.showTips(cc.language.stringformat("nottimeaddsameplayer"));
|
|
return false
|
|
}
|
|
else
|
|
{
|
|
playerData.AddfriendApplyArr(uid);
|
|
}
|
|
// if (playerData.inviteaccountid == parma.friend_id && this.time > 0) {
|
|
|
|
// return false
|
|
// } else {
|
|
// playerData.inviteaccountid = parma.friend_id
|
|
// playerData.friendtime = date.getTime() / 1000
|
|
// }
|
|
return true
|
|
},
|
|
onSMFriendList(msg){
|
|
playerData.friend_list = msg.friend_list
|
|
cc.Notifier.emit('friendlist', msg)
|
|
},
|
|
|
|
SMFriendIdList(msg){
|
|
playerData.friends = msg.friends
|
|
playerData.blacklist = msg.blacklist
|
|
},
|
|
|
|
onSMFriendAgree(msg){
|
|
|
|
},
|
|
|
|
SMCustomMsgNotify(msg){
|
|
var noti = JSON.parse(msg.msg)
|
|
let tmpState = 0;
|
|
|
|
if (noti['type'] == 1 && !playerData.inteam && playerData.inviteflag) {
|
|
playerData.teamuuid = noti['msg']
|
|
playerData.invite_name = noti['name']
|
|
playerData.invite_ava = noti['avatar_url']
|
|
playerData.invite_sex = noti['sex']
|
|
tmpState = 1;
|
|
cc.Notifier.emit('friendinvite')
|
|
}
|
|
|
|
if (noti['type'] == 2 && playerData.guild_id == '0') {
|
|
if ((playerData.invite_guild_id == '' && playerData.invite_guild_sign == '') ||
|
|
(this.compareInviteid(playerData.invite_guild_id, noti['msg']))) {
|
|
|
|
var msgbox = {
|
|
'id':noti['msg'],
|
|
'name':noti['name'],
|
|
'sign':noti['sign'],
|
|
}
|
|
playerData.invite_guild_id = noti['msg']
|
|
playerData.invite_guild_name = noti['name']
|
|
playerData.invite_guild_sign = noti['sign']
|
|
tmpState = 1;
|
|
cc.Notifier.emit('guildinvite', msgbox)
|
|
}
|
|
}
|
|
|
|
if(tmpState == 0)
|
|
{
|
|
cc.Notifier.emit('SMCustomMsgNotify', msg)
|
|
}
|
|
|
|
},
|
|
|
|
compareInviteid(v1, v2){
|
|
if (v1.high != v2.high && v1.low != v2.low) {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
},
|
|
|
|
SMUpdateRedPointNotify(msg){
|
|
console.log(msg.red_point_flags)
|
|
if (this.istrue(0, msg.red_point_flags)) {
|
|
playerData.friend_red = 1
|
|
} else {
|
|
playerData.friend_red = 0
|
|
}
|
|
cc.Notifier.emit('showFriendRedPoint')
|
|
|
|
if (this.istrue(1, msg.red_point_flags)) {
|
|
playerData.guild_red = 1
|
|
} else {
|
|
playerData.guild_red = 0
|
|
}
|
|
cc.Notifier.emit('showGuildRedPoint')
|
|
|
|
if (this.istrue(2, msg.red_point_flags)) {
|
|
playerData.chatred = true
|
|
} else {
|
|
playerData.chatred = false
|
|
}
|
|
cc.Notifier.emit('refreshchatred')
|
|
},
|
|
|
|
istrue(num, flag){
|
|
if ((flag & (1 << num)) != 0) {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
},
|
|
|
|
SMLogin(msg){
|
|
cc.openGuild = true
|
|
if (msg.errcode == 0) {
|
|
this.haslongin = true
|
|
this.account_info = msg.account_info
|
|
playerData.guild_id = this.account_info.user_info.base_data['guild_id']
|
|
|
|
if (playerData.guild_id == '0') {
|
|
playerData.isguild = false
|
|
} else {
|
|
playerData.isguild = true
|
|
playerData.guild_job = this.account_info.user_info.base_data['guild_job']
|
|
playerData.guild_sign = this.account_info.user_info.base_data['user_sign']
|
|
}
|
|
}
|
|
},
|
|
SMFriendBlackList(msg){
|
|
playerData.black_list = msg.black_list
|
|
cc.Notifier.emit('blacklist', msg)
|
|
},
|
|
|
|
SMShowErrorMsg(msg) {
|
|
cc.uiHelper.showTips(msg.msg)
|
|
},
|
|
|
|
onnetclose(){
|
|
this.haslongin = false
|
|
},
|
|
|
|
SMGuildCreate(msg){
|
|
if (!msg.errcode) {
|
|
playerData.guild_id = msg.guild_id
|
|
playerData.isguild = true
|
|
cc.uiHelper.showTips(cc.language.stringformat("createguildsuccess"))
|
|
NetManage.updateDiamond()
|
|
cc.Notifier.emit("SMGuildCreate",msg);
|
|
} else {
|
|
cc.uiHelper.showTips(msg.errmsg);
|
|
}
|
|
},
|
|
|
|
bindcallback(){
|
|
this.chat.bindrecvMsg({
|
|
"SMFriendList":this.onSMFriendList.bind(this),
|
|
"SMCustomMsgNotify":this.SMCustomMsgNotify.bind(this),
|
|
"SMUpdateRedPointNotify":this.SMUpdateRedPointNotify.bind(this),
|
|
"SMLogin":this.SMLogin.bind(this),
|
|
"SMFriendBlackList":this.SMFriendBlackList.bind(this),
|
|
"SMShowErrorMsg":this.SMShowErrorMsg.bind(this),
|
|
"SMFriendIdList":this.SMFriendIdList.bind(this),
|
|
"SMGuildCreate":this.SMGuildCreate.bind(this),
|
|
})
|
|
this.chat.bindclose(this.onnetclose.bind(this))
|
|
},
|
|
update (dt) {
|
|
if(this.chat){
|
|
this.chat.update(dt)
|
|
}
|
|
if(this.haslongin&&this.tmpmsg.length>0){
|
|
for(var i = 0;i<this.tmpmsg.length;i++){
|
|
this.chat.sendmsg(this.tmpmsg[i].m,this.tmpmsg[i].p)
|
|
}
|
|
this.tmpmsg.length = 0
|
|
}
|
|
},
|
|
|
|
|
|
checkreconnectNet(){
|
|
if(this.chat){
|
|
this.chat.m_chat.checkreconnectNet()
|
|
}
|
|
},
|
|
close(){
|
|
if(this.chat){
|
|
this.chat.close()
|
|
}
|
|
}
|
|
|
|
});
|