2022-05-26 11:46:36 +08:00

707 lines
16 KiB
JavaScript

var SDKManage = require('SDKManage');
var NetManage = require('NetManage');
var playerData = require('playerData');
var gameConfig = require('gameConfig');
var Main = require('Main');
var pbheight = 110;
cc.Class({
extends: cc.Component,
properties: {
nd_friend: {
default: null,
type: cc.Node,
},
editbox: {
default: null,
type: cc.EditBox,
},
tableview_world: {
default: null,
type: cc.Node,
},
tableViewfriend: {
default: null,
type: cc.Node,
},
scollViewEmote: {
default: null,
type: cc.Node,
},
tableFriendList: {
default: null,
type: cc.Node,
},
nd_emot: {
default: null,
type: cc.Node,
},
nd_worldred: {
default: null,
type: cc.Node,
},
nd_guildred: {
default: null,
type: cc.Node,
},
nd_friendred: {
default: null,
type: cc.Node,
},
pb_friendinfo: {
default: null,
type: cc.Prefab,
},
moveContent: {
default: null,
type: cc.Node,
},
movePrefab: {
default: null,
type: cc.Prefab,
},
nd_guild: {
default: null,
type: cc.Node,
},
nd_team: {
default: null,
type: cc.Node,
},
nd_bg: {
default: [],
type: cc.Node,
},
lb_frinamechat: {
default: null,
type: cc.Label,
},
lb_friendnum: {
default: null,
type: cc.Label,
},
lb_labanum: {
default: null,
type: cc.Label,
},
pb_dalaba: {
default: null,
type: cc.Prefab,
},
emoteatlas: {
default: null,
type: cc.SpriteAtlas,
},
pb_chatemote: {
default: null,
type: cc.Prefab,
},
pb_charinfo: {
default: null,
type: cc.Prefab,
},
nd_emotepos: {
default: null,
type: cc.Node,
},
m_10105Com: {
default: null,
type: cc.Label,
},
emoteMax: 7,
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
this.editbox.node.on('editing-did-began', this.callbackbegin, this);
this.editbox.node.on('editing-did-ended', this.callbackend, this);
this.editbox.node.on('editing-return', this.callbackend, this);
this.nd_emot.on(
cc.Node.EventType.TOUCH_START,
this._touchnd_emot,
this
);
cc.Notifier.on('refreshchat', this, this.refreshchat.bind(this));
cc.Notifier.on('refreshchatred', this, this.refreshchatred.bind(this));
cc.Notifier.on('showplayerinfo', this, this.showplayerinfo.bind(this));
cc.Notifier.on('refreshdalaba', this, this.refreshdalaba.bind(this));
cc.Notifier.on('deleteItem', this, this.deleteItem.bind(this));
cc.Notifier.on('clickemote', this, this.doemot.bind(this));
cc.Notifier.on('callemote', this, this.callemote.bind(this));
cc.Notifier.on('closeemote', this, this._touchnd_emot.bind(this));
cc.Notifier.on('setemotepos', this, this.setemotepos.bind(this));
cc.Notifier.on('jointeam', this, this.joinTeam.bind(this));
cc.Notifier.on(
'SMGuildInfo',
this,
this.getGuildInfoCallBack.bind(this)
);
cc.Notifier.on('chat_playerInfo', this, this.getPlayerInfo.bind(this));
cc.Notifier.on(
'friendlist',
this,
this.SMFriendListCallBack.bind(this)
);
cc.Notifier.on('closechat', this, this.closechat.bind(this));
this.moveTextTime = 0;
cc.uiChat = this;
this.isCreate = false;
this.m_btnType = 1;
this.m_btnData = 0;
console.log('UIChatOnLoad');
},
start() {
this.nd_emot.active = false;
this.m_chatItemData = null;
if (this.m_btnType == 1) {
this.callworld();
}
console.log('UIChatStart');
this.refreshchatred();
cc.chatMgr.sendmsg('CMFriendList');
this.nd_team.active = false;
this.nd_guild.active = false;
if (playerData.teamuuid) {
this.nd_team.active = true;
}
// if (playerData.guild_id != '0') {
// this.nd_guild.active = true
// }
this.lb_labanum.string = 0;
// for (var j = 0; j < playerData.bag_list.length; j++) {
// if (gameConfig.wai_itemConfig[playerData.bag_list[j].id].fuction == 23) {
// this.lb_labanum.string = playerData.bag_list[j].num
// this.dalabanum = playerData.bag_list[j].num
// break;
// }
// }
},
onDestroy() {
this.nd_emot.off(
cc.Node.EventType.TOUCH_START,
this._touchnd_emot,
this
);
cc.Notifier.off('refreshchat', this);
cc.Notifier.off('refreshchatred', this);
cc.Notifier.off('showplayerinfo', this);
cc.Notifier.off('refreshdalaba', this);
cc.Notifier.off('deleteItem', this);
cc.Notifier.off('clickemote', this);
cc.Notifier.off('callemote', this);
cc.Notifier.off('closeemote', this);
cc.Notifier.off('setemotepos', this);
cc.Notifier.off('jointeam', this);
cc.Notifier.off('chat_playerInfo', this);
cc.Notifier.off('SMGuildInfo', this);
cc.Notifier.off('friendlist', this);
cc.Notifier.off('closechat', this);
},
refreshchat(msg) {
var functionarr = [
this.callworld.bind(this),
this.callfriend.bind(this),
this.callguild.bind(this),
this.callteam.bind(this),
];
if (msg[this.mode - 1]) {
functionarr[this.mode - 1]();
}
},
deleteItem(obj) {
if (obj.errcode == 0) {
this.dalabanum = obj.num;
}
},
refreshdalaba() {
//console.log("ResetDalab01a",cc.talkmgr.dalabamsg);
this.moveTextTime = 0;
if (cc.talkmgr.dalabamsg && cc.talkmgr.dalabamsg.length != 0) {
var self = this;
var dalabadata = cc.talkmgr.dalabamsg;
self.addMoveText(dalabadata[0].sender, dalabadata[0].msg_body);
cc.talkmgr.dalabamsg.splice(0, 1);
}
},
refreshchatred() {
this.nd_friendred.active = playerData.chatfriendred;
this.nd_guildred.active = playerData.chatguildred;
this.nd_worldred.active = playerData.chatworldred;
},
showplayerinfo(obj) {
// var nd = cc.instantiate(this.pb_friendinfo)
// nd.zIndex = 2
// this.node.addChild(nd)
// nd.getComponent("UIFriendInfo").showAddBtn(obj)
},
setemotepos(obj) {
this.nd_emotepos.x = obj.x;
this.nd_emotepos.y = obj.y;
},
_touchnd_emot() {
this.nd_emot.active = false;
},
callbackbegin(editbox) {
// do whatever you want with the editbox
this.close_status = false;
},
callbackend(editbox) {
this.close_status = true;
},
showpick() {
for (var i = 0; i < this.nd_bg.length; i++) {
this.nd_bg[i].active = false;
if (i == this.mode - 1) {
this.nd_bg[i].active = true;
}
}
},
showTipNotSend(time) {
var tempstr = cc.language.stringformat('shuohuataikuai', [
Math.ceil(time),
]);
cc.uiHelper.showTips(tempstr);
this.editbox.string = '';
},
sendmsg() {
this.nd_emot.active = false;
if (this.editbox.string == '') {
cc.uiHelper.showTips(cc.language.stringformat('neitongweikong'));
return;
}
var str = this.editbox.string;
var target = '';
var members = [];
var tempstr = '';
if (this.mode == 1) {
var lasttalketime = playerData.worldtime;
var nowtime = new Date().getTime();
var delta = (nowtime - lasttalketime) / 1000;
if (delta < 40) {
this.showTipNotSend(40 - delta);
return;
} else {
playerData.worldtime = nowtime;
playerData.canWorldMsg = false;
}
} else if (this.mode == 2) {
target = this.sendid;
if (!playerData.canFriendMsg) {
this.showTipNotSend(playerData.friendtime);
return;
} else {
playerData.friendtime = 3;
playerData.canFriendMsg = false;
}
} else if (this.mode == 3) {
if (!playerData.canGuildMsg) {
this.showTipNotSend(playerData.guildtime);
return;
} else {
playerData.guildtime = 3;
playerData.canGuildMsg = false;
}
} else {
if (
this.mode == 4 &&
playerData.team_list &&
playerData.team_list.length != 0
) {
var data = playerData.team_list;
for (var i in data) {
members.push(data[i].account_id);
}
// if (!playerData.canTeamMsg) {
// this.showTipNotSend(playerData.teamtime)
// return
// }
}
}
cc.chatMgr.sendmsg('CMSendChatMsg', {
chat_channel: this.mode,
target: target,
msg_type: 2,
msg_body: str,
members: members,
});
this.editbox.string = '';
},
senddalaba() {
// var str = this.editbox.string
// var target = ''
// cc.chatMgr.sendmsg('CMSendChatMsg', {
// chat_channel: 5,
// target: target,
// msg_type: 2,
// msg_body: str,
// })
// this.editbox.string = ''
// if (Number(this.dalabanum) <= 0 || !this.dalabanum) {
// cc.uiHelper.showTips(cc.language.stringformat("lbbz"))
// return
// }
return;
var nd = cc.instantiate(this.pb_dalaba);
nd.zIndex = 2;
this.node.addChild(nd);
},
callworld() {
this.mode = 1;
this.showpick();
this.last_id = cc.talkmgr.getAllLastid();
cc.chatMgr.sendmsg('CMReadMsgAndOpenChatNotify', {
last_ids: this.last_id,
curr_channel: this.mode,
});
var worlddata = cc.talkmgr.woldmsg;
this.tableview_world.active = true;
this.nd_friend.active = false;
this.tableview_world
.getComponent('tableView')
.initTableView(worlddata.length, {
array: worlddata,
target: this,
width: this.tableview_world.width,
});
this.tableview_world.getComponent('tableView').scrollToOffset(
{
x: 0,
y: worlddata.length * pbheight,
},
0
);
},
callguild() {
this.mode = 3;
this.nd_guildred.active = false;
this.showpick();
this.last_id = cc.talkmgr.getAllLastid();
cc.chatMgr.sendmsg('CMReadMsgAndOpenChatNotify', {
last_ids: this.last_id,
curr_channel: this.mode,
});
var guilddata = cc.talkmgr.guildmsg;
//console.log("guildMsg========",guilddata);
this.tableview_world.active = true;
this.nd_friend.active = false;
this.tableview_world
.getComponent('tableView')
.initTableView(guilddata.length, {
array: guilddata,
target: this,
width: this.tableview_world.width,
isguild: true,
});
this.tableview_world.getComponent('tableView').scrollToOffset(
{
x: 0,
y: guilddata.length * pbheight,
},
0
);
},
callteam() {
this.mode = 4;
this.showpick();
this.last_id = cc.talkmgr.getAllLastid();
cc.chatMgr.sendmsg('CMReadMsgAndOpenChatNotify', {
last_ids: this.last_id,
curr_channel: this.mode,
});
var teamdata = cc.talkmgr.teammsg;
this.tableview_world.active = true;
this.nd_friend.active = false;
this.tableview_world
.getComponent('tableView')
.initTableView(teamdata.length, {
array: teamdata,
target: this,
width: this.tableview_world.width,
});
this.tableview_world.getComponent('tableView').scrollToOffset(
{
x: 0,
y: teamdata.length * pbheight,
},
0
);
},
callfriend() {
this.mode = 2;
this.showpick();
this.last_id = cc.talkmgr.getAllLastid();
cc.chatMgr.sendmsg('CMReadMsgAndOpenChatNotify', {
last_ids: this.last_id,
curr_channel: this.mode,
});
this.tableview_world.active = false;
this.nd_friend.active = true;
var friendlist = []; //todo
for (var m = 0; m < playerData.friend_list.length; m++) {
playerData.friend_list[m].m_defaultSelect = 0;
let baseData = playerData.friend_list[m].base_data;
let accountID = baseData.account_id;
//console.log("FriendData=====",accountID,this.m_btnData);
if (this.m_btnData) {
if (this.m_btnData == accountID) {
playerData.friend_list[m].m_defaultSelect = 1;
}
}
friendlist.push(playerData.friend_list[m]);
}
this.m_btnData = null;
for (var i = friendlist.length - 1; i >= 0; i--) {
if (friendlist[i].base_data['account_id'] == SDKManage.account_id) {
friendlist.splice(i, 1);
break;
}
}
friendlist.sort((a, b) => {
var aonline = parseInt(a.base_data['_online']);
var bonline = parseInt(b.base_data['_online']);
if (aonline == bonline) {
return (
a.temp_custom_data['value1'] - b.temp_custom_data['value1']
);
} else {
return bonline - aonline;
}
});
if (friendlist.length > 0) {
if (!this.sendid) {
this.sendid = friendlist[0].base_data.account_id;
this.sendname = friendlist[0].base_data.nickname;
}
this.showfriend(this.sendid, this.sendname);
this.lb_friendnum.string = cc.language.stringformat(
'haoyoushuliang',
[friendlist.length]
);
} else {
this.lb_frinamechat.string = '';
this.lb_friendnum.string = cc.language.stringformat(
'haoyoushuliang',
['0']
);
}
this.tableFriendList
.getComponent('tableView')
.initTableView(friendlist.length, {
array: friendlist,
target: this,
});
},
showfriend(account_id, name) {
this.sendid = account_id;
this.sendname = name;
this.lb_frinamechat.string = cc.language.stringformat(
'yusheiliaotian',
[name]
);
var last_id = cc.talkmgr.getLastidbyChannel(2, this.sendid);
cc.chatMgr.sendmsg('CMSetCurrPrivateChatTarget', {
last_id: last_id,
private_target: this.sendid,
});
var data = cc.talkmgr.getfriendmsg(account_id);
for (let i = 0; i < data.length; i++) {
data[i].tmpState = 1;
}
this.tableViewfriend
.getComponent('tableView')
.initTableView(data.length, {
array: data,
target: this,
width: this.tableViewfriend.width,
});
this.tableViewfriend.getComponent('tableView').scrollToOffset(
{
x: 0,
y: data.length * pbheight,
},
0
);
},
callemote() {
this.nd_emot.zIndex = 3;
if (this.nd_emot.active) {
this.nd_emot.active = false;
} else {
this.nd_emot.active = true;
if (!this.isCreate) {
//this.scollViewEmote.destroyAllChildren()
//this.emoteMax = 40
for (var i = 1; i <= this.emoteMax; i++) {
var nd = cc.instantiate(this.pb_chatemote);
nd.zIndex = 10;
this.scollViewEmote.addChild(nd);
nd.getComponent('chatEmote').showChatEmote('e' + i);
}
}
this.isCreate = true;
}
},
doemot(v2) {
var temp = this.editbox;
this.nd_emot.active = false;
var add = '(' + v2 + ')';
var str1 = temp.string;
var str2 = temp.string + add;
temp.string = str2;
if (temp.string != str2) {
temp.string = str1;
}
},
showChatPopPanel(_data, _guildName) {
if (!this.ndcharinfo) {
this.ndcharinfo = cc.instantiate(this.pb_charinfo);
this.node.addChild(this.ndcharinfo);
}
this.ndcharinfo.active = true;
this.ndcharinfo.getComponent('chatcharinfo').initdata(_data);
},
update10105CntCallBack() {
this.update10105Cnt();
},
SMFriendListCallBack() {
if (this.m_btnType == 2) {
this.callfriend();
this.m_btnType = 0;
}
},
getPlayerInfo(_data) {
let guildID = _data.guild_id;
this.m_chatItemData = _data;
if (guildID > 0) {
cc.chatMgr.sendmsg('CMGuildInfo', {
guild_id: guildID,
});
} else {
this.showChatPopPanel(_data, 'no guild');
}
},
getGuildInfoCallBack(_data) {
let guildName = 'guild name';
guildName = _data.info.guild_name;
this.showChatPopPanel(this.m_chatItemData, guildName);
},
joinTeam(obj) {
if (obj.errcode != 0) {
playerData.teamuuid = null;
} else {
var node_id = 1;
if (playerData.node_id != 0) {
node_id = playerData.node_id;
}
this.close();
}
},
closePanel() {
this.close();
},
closechat() {
this.node.destroy();
},
close() {
cc.chatMgr.sendmsg('CMCloseChatNotify');
this.node.destroy();
},
addMoveText(sender, msg) {
if (!this.newText) {
this.newText = cc.instantiate(this.movePrefab);
this.moveContent.addChild(this.newText);
}
this.newText.getComponent('moveText_prefab').changeText(sender, msg, 2);
},
update(dt) {
this.moveTextTime += dt;
if (this.moveTextTime > 10) {
this.refreshdalaba();
}
// if (this.friendtime > 0) {
// this.friendtime -= dt
// if (this.friendtime <= 0) {
// this.friendtime = 0
// this.canFriendMsg = true
// }
// }
// if (this.guildtime > 0) {
// this.guildtime -= dt
// if (this.guildtime <= 0) {
// this.guildtime = 0
// this.canGuildMsg = true
// }
// }
// if (this.teamtime > 0) {
// this.teamtime -= dt
// if (this.teamtime <= 0) {
// this.teamtime = 0
// this.canTeamMsg = true
// }
// }
},
});