pubgv3/assets/scripts/chat/talkManage.js
zhuguoqing ff550d5d6a init
2022-05-22 10:32:02 +08:00

233 lines
7.9 KiB
JavaScript

var SDKManage = require("SDKManage")
var NetManage = require("NetManage")
var playerData = require("playerData")
var gameConfig = require("gameConfig")
var Main = require("Main");
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 () {},
onLoad() {
this.worldmax = 50
this.guildmax = 50
this.friendmax = 50
this.teammax = 50
this.woldmsg = []
this.guildmsg = []
this.friendmsg = {}
this.teammsg = []
this.dalabamsg = []
cc.talkmgr = this
cc.Notifier.on('SMChatMsgNotify', this, this.SMChatMsgNotify.bind(this));
cc.Notifier.on('SMUpdateChatRedPointNotify', this, this.SMUpdateChatRedPointNotify.bind(this));
},
onDestroy() {
cc.Notifier.off('SMChatMsgNotify', this);
cc.Notifier.off('SMUpdateChatRedPointNotify', this);
},
compareint64(a, b) {
if (a.high < b.high) {
return true
}
if (a.high == b.high) {
if (a.low <= b.low) {
return true
}
}
return false
},
SMUpdateChatRedPointNotify(msg) {
playerData.chatred = false
playerData.chatworldred = false
playerData.chatguildred = false
playerData.chatfriendred = false
if (msg.has_unread_msg_channels.length != 0) {
for (var i = 0; i < msg.has_unread_msg_channels.length; i++) {
if (msg.has_unread_msg_channels[i] == 1) {
// playerData.chatworldred = true
} else if (msg.has_unread_msg_channels[i] == 2) {
playerData.chatfriendred = true
playerData.chatred = true
} else if (msg.has_unread_msg_channels[i] == 3) {
playerData.chatguildred = true
playerData.chatred = true
}
}
}
SDKManage.m_chatUNReadArr = msg.has_unread_msg_channels;
cc.Notifier.emit('refreshchatred')
},
SMChatMsgNotify(msg) {
console.log("TalkMaanger=========",msg);
var arr = msg.msg_list
var biaoshi = [false, false, false, false]
for (var i = 0; i < arr.length; i++) {
var channel = arr[i].chat_channel
if (channel == 1) {
if (this.woldmsg.length > 0 && this.compareint64(arr[i].msg_uuid, this.woldmsg[this.woldmsg.length - 1].msg_uuid)) {
continue
}
this.woldmsg.push(arr[i])
if (this.woldmsg.length > this.worldmax) {
this.woldmsg.splice(0, 1)
}
biaoshi[0] = true
} else if (channel == 2) {
var accountid = arr[i].sender.base_data.account_id
if (accountid == SDKManage.account_id) { //todo 通过id 判断是否自己
accountid = arr[i].receiver.base_data.account_id
}
if (!this.friendmsg[accountid]) {
this.friendmsg[accountid] = []
try {
var str = cc.sys.localStorage.getItem(SDKManage.account_id + accountid)
if (str && str != "") {
this.friendmsg[accountid] = JSON.parse(str)
}
} catch (e) {
this.friendmsg[accountid] = []
}
}
var temp = JSON.parse(JSON.stringify(arr[i]))
temp.accountid = arr[i].sender.base_data.account_id
if (this.friendmsg[accountid].length > 0 && this.compareint64(arr[i].msg_uuid, this.friendmsg[accountid][this.friendmsg[accountid].length - 1].msg_uuid)) {
continue
}
this.friendmsg[accountid].push(temp)
if (this.friendmsg[accountid].length > this.friendmax) {
this.friendmsg[accountid].splice(0, 1)
}
try {
cc.sys.localStorage.setItem(SDKManage.account_id + accountid, JSON.stringify(this.friendmsg[accountid]));
} catch (e) {}
biaoshi[1] = true
} else if (channel == 3) {
if (this.guildmsg.length > 0 && this.compareint64(arr[i].msg_uuid, this.guildmsg[this.guildmsg.length - 1].msg_uuid)) {
continue
}
this.guildmsg.push(arr[i])
if (this.guildmsg.length > this.guildmax) {
this.guildmsg.splice(0, 1)
}
biaoshi[2] = true
} else if (channel == 4) {
if (this.teammsg.length > 0 && this.compareint64(arr[i].msg_uuid, this.teammsg[this.teammsg.length - 1].msg_uuid)) {
continue
}
this.teammsg.push(arr[i])
if (this.teammsg.length > this.teammax) {
this.teammsg.splice(0, 1)
}
biaoshi[3] = true
} else if (channel == 5) {
this.dalabamsg.push(arr[i])
cc.Notifier.emit('refreshdalaba');
let msgBody01 = arr[i].msg_body;
cc.Notifier.emit('runMsg',""+msgBody01);
}
}
cc.Notifier.emit('refreshchat', biaoshi);
},
getfriendmsg(accountid) {
if (!this.friendmsg[accountid]) {
this.friendmsg[accountid] = []
try {
var str = cc.sys.localStorage.getItem(SDKManage.account_id + accountid)
if (str && str != "") {
this.friendmsg[accountid] = JSON.parse(str)
}
} catch (e) {
this.friendmsg[accountid] = []
}
}
return this.friendmsg[accountid]
},
getLastidbyChannel(channel, accountid) {
var last_id = 0
var arr
if (channel == 1) {
arr = this.woldmsg
} else if (channel == 2) {
if (!this.friendmsg[accountid]) {
this.friendmsg[accountid] = []
}
try {
var str = cc.sys.localStorage.getItem(SDKManage.account_id + accountid)
if (str && str != "") {
this.friendmsg[accountid] = JSON.parse(str)
}
} catch (e) {
this.friendmsg[accountid] = []
}
arr = this.friendmsg[accountid]
} else if (channel == 3) {
arr = this.guildmsg
} else if (channel == 4) {
arr = this.teammsg
}
if (arr && arr.length != 0) {
last_id = arr[arr.length - 1].msg_uuid
}
return last_id
},
getAllLastid() {
var temp =
[{
key: 1,
val: this.getLastidbyChannel(1)
}, {
key: 3,
val: this.getLastidbyChannel(3)
}, {
key: 4,
val: this.getLastidbyChannel(4)
},]
return temp
}
// update (dt) {
// },
});