1
This commit is contained in:
parent
8423d21970
commit
b7d3351182
@ -5,6 +5,7 @@
|
|||||||
#include "playermgr.h"
|
#include "playermgr.h"
|
||||||
#include "guild.h"
|
#include "guild.h"
|
||||||
#include "guildmgr.h"
|
#include "guildmgr.h"
|
||||||
|
#include "typeconvert.h"
|
||||||
|
|
||||||
void ChatMgr::Init()
|
void ChatMgr::Init()
|
||||||
{
|
{
|
||||||
@ -73,8 +74,11 @@ void ChatMgr::ProcWorldChat(Player* hum, const cs::CMSendChatMsg& msg)
|
|||||||
|
|
||||||
void ChatMgr::ProcPrivateChat(Player* hum, const cs::CMSendChatMsg& msg)
|
void ChatMgr::ProcPrivateChat(Player* hum, const cs::CMSendChatMsg& msg)
|
||||||
{
|
{
|
||||||
Player* target_hum = PlayerMgr::Instance()->GetPlayerByAccountId(msg.target());
|
if (hum->AccountId() == msg.target()) {
|
||||||
if (!target_hum) {
|
return;
|
||||||
|
}
|
||||||
|
Friend* target = hum->GetFriendById(msg.target());
|
||||||
|
if (!target) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
++private_msg_id_;
|
++private_msg_id_;
|
||||||
@ -82,12 +86,20 @@ void ChatMgr::ProcPrivateChat(Player* hum, const cs::CMSendChatMsg& msg)
|
|||||||
cs::MFChatMsg* p = new cs::MFChatMsg();
|
cs::MFChatMsg* p = new cs::MFChatMsg();
|
||||||
p->set_msg_uuid(private_msg_id_);
|
p->set_msg_uuid(private_msg_id_);
|
||||||
hum->FillMFUserInfo(p->mutable_sender());
|
hum->FillMFUserInfo(p->mutable_sender());
|
||||||
|
{
|
||||||
|
TypeConvert::Convert(target->base_data, *p->mutable_sender()->mutable_base_data());
|
||||||
|
TypeConvert::Convert(target->temp_custom_data, *p->mutable_sender()->mutable_temp_custom_data());
|
||||||
|
}
|
||||||
p->set_chat_channel(msg.chat_channel());
|
p->set_chat_channel(msg.chat_channel());
|
||||||
p->set_msg_type(msg.msg_type());
|
p->set_msg_type(msg.msg_type());
|
||||||
p->set_msg_body(msg.msg_body());
|
p->set_msg_body(msg.msg_body());
|
||||||
p->set_send_time(time(nullptr));
|
p->set_send_time(time(nullptr));
|
||||||
|
|
||||||
|
AddChatedUser(hum->AccountId(), msg.target(), p, private_msg_id_);
|
||||||
|
AddChatedUser(msg.target(), hum->AccountId(), p, private_msg_id_);
|
||||||
|
|
||||||
ChatMgr::Instance()->SyncPrivateChatMsg(hum);
|
ChatMgr::Instance()->SyncPrivateChatMsg(hum);
|
||||||
|
Player* target_hum = PlayerMgr::Instance()->GetPlayerByAccountId(msg.target());
|
||||||
if (target_hum) {
|
if (target_hum) {
|
||||||
ChatMgr::Instance()->SyncPrivateChatMsg(target_hum);
|
ChatMgr::Instance()->SyncPrivateChatMsg(target_hum);
|
||||||
}
|
}
|
||||||
@ -203,3 +215,22 @@ void ChatMgr::SyncGuildChatMsg(Player* hum)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChatMgr::AddChatedUser(const std::string& sender_id, const std::string& receiver_id,
|
||||||
|
cs::MFChatMsg* chat_msg, long long last_id)
|
||||||
|
{
|
||||||
|
auto itr = private_chated_users_.find(sender_id);
|
||||||
|
if (itr == private_chated_users_.end()) {
|
||||||
|
private_chated_users_[sender_id] = ChatedUserRec();
|
||||||
|
itr = private_chated_users_.find(sender_id);
|
||||||
|
}
|
||||||
|
itr->second.has_unread_msg = true;
|
||||||
|
auto itr2 = itr->second.users.find(receiver_id);
|
||||||
|
if (itr2 != itr->second.users.end()) {
|
||||||
|
itr->second.users[receiver_id] = ChatMsgRec();
|
||||||
|
itr2 = itr->second.users.find(receiver_id);
|
||||||
|
}
|
||||||
|
itr2->second.last_id = last_id;
|
||||||
|
itr2->second.msg_list.push_back(chat_msg);
|
||||||
|
itr2->second.PopAndDelete(50);
|
||||||
|
}
|
||||||
|
@ -56,6 +56,8 @@ class ChatMgr : public a8::Singleton<ChatMgr>
|
|||||||
void SyncWorldChatMsg(Player* hum);
|
void SyncWorldChatMsg(Player* hum);
|
||||||
void SyncPrivateChatMsg(Player* hum);
|
void SyncPrivateChatMsg(Player* hum);
|
||||||
void SyncGuildChatMsg(Player* hum);
|
void SyncGuildChatMsg(Player* hum);
|
||||||
|
void AddChatedUser(const std::string& sender_id, const std::string& receiver_id,
|
||||||
|
cs::MFChatMsg* chat_msg, long long last_id);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
long long private_msg_id_ = 1000;
|
long long private_msg_id_ = 1000;
|
||||||
|
@ -579,18 +579,6 @@ void Player::_CMSendChatMsg(f8::MsgHdr& hdr, const cs::CMSendChatMsg& msg)
|
|||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
ss::SS_IM_SendChatMsg ss_msg;
|
|
||||||
FillIMMsgConext(ss_msg.mutable_context());
|
|
||||||
ss_msg.set_chat_channel(msg.chat_channel());
|
|
||||||
ss_msg.set_target(msg.target());
|
|
||||||
ss_msg.set_msg_type(msg.msg_type());
|
|
||||||
ss_msg.set_msg_body(msg.msg_body());
|
|
||||||
Friend* friend_data = GetFriendById(msg.target());
|
|
||||||
if (friend_data) {
|
|
||||||
SendSSMsg(*friend_data, ss_msg);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_CMReadMsgAndOpenChatNotify(f8::MsgHdr& hdr, const cs::CMReadMsgAndOpenChatNotify& msg)
|
void Player::_CMReadMsgAndOpenChatNotify(f8::MsgHdr& hdr, const cs::CMReadMsgAndOpenChatNotify& msg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user