mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-11 17:51:04 +00:00
Chat protocol rewrite (#5117)
* New TOCLIENT_CHAT_MESSAGE packet * Rename old packet to TOCLIENT_CHAT_MESSAGE_OLD for compat * Handle TOCLIENT_CHAT_MESSAGE new structure client side * Client chat queue should use a specific object * SendChatMessage: use the right packet depending on protocol version (not complete yet) * Add chatmessage(type) objects and handle them client side (partially) * Use ChatMessage instead of std::wstring server side * Update with timestamp support
This commit is contained in:
parent
ecbc972ea6
commit
7ddf67aa14
16 changed files with 251 additions and 51 deletions
|
@ -693,6 +693,32 @@ void ClientInterface::sendToAll(NetworkPacket *pkt)
|
|||
}
|
||||
}
|
||||
|
||||
void ClientInterface::sendToAllCompat(NetworkPacket *pkt, NetworkPacket *legacypkt,
|
||||
u16 min_proto_ver)
|
||||
{
|
||||
MutexAutoLock clientslock(m_clients_mutex);
|
||||
for (std::unordered_map<u16, RemoteClient*>::iterator i = m_clients.begin();
|
||||
i != m_clients.end(); ++i) {
|
||||
RemoteClient *client = i->second;
|
||||
NetworkPacket *pkt_to_send = nullptr;
|
||||
|
||||
if (client->net_proto_version >= min_proto_ver) {
|
||||
pkt_to_send = pkt;
|
||||
} else if (client->net_proto_version != 0) {
|
||||
pkt_to_send = legacypkt;
|
||||
} else {
|
||||
warningstream << "Client with unhandled version to handle: '"
|
||||
<< client->net_proto_version << "'";
|
||||
continue;
|
||||
}
|
||||
|
||||
m_con->Send(client->peer_id,
|
||||
clientCommandFactoryTable[pkt_to_send->getCommand()].channel,
|
||||
pkt_to_send,
|
||||
clientCommandFactoryTable[pkt_to_send->getCommand()].reliable);
|
||||
}
|
||||
}
|
||||
|
||||
RemoteClient* ClientInterface::getClientNoEx(u16 peer_id, ClientState state_min)
|
||||
{
|
||||
MutexAutoLock clientslock(m_clients_mutex);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue