// 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 { cc.uiHelper.showTips( cc.language.stringformat("friend request send!") ); 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); } } console.log("自定义数据======02FromChatManager==", tmpState, noti); 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"]; console.log("公会ID=0222========", playerData.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(); } }, });