wip: test chat client

This commit is contained in:
Xiphoseer
2024-05-01 22:34:01 +02:00
parent 35c463656d
commit 776a9c36a4
6 changed files with 114 additions and 1 deletions

View File

@@ -355,6 +355,18 @@ void ChatPacketHandler::HandleGMLevelUpdate(Packet* packet) {
inStream.Read(player.gmLevel);
}
void ChatPacketHandler::HandleGMAnnounce(Packet* packet) {
CINSTREAM_SKIP_HEADER;
uint32_t titleLen, messageLen;
inStream.Read(titleLen);
std::string title(titleLen, 0);
inStream.Read(title.data(), titleLen);
inStream.Read(messageLen);
std::string message(messageLen, 0);
inStream.Read(message.data(), messageLen);
LOG("GM Announcement from %s: '%s' '%s'", packet->systemAddress.ToString(), title.c_str(), message.c_str());
}
void ChatPacketHandler::HandleWho(Packet* packet) {
CINSTREAM_SKIP_HEADER;

View File

@@ -50,6 +50,7 @@ namespace ChatPacketHandler {
void HandleFriendResponse(Packet* packet);
void HandleRemoveFriend(Packet* packet);
void HandleGMLevelUpdate(Packet* packet);
void HandleGMAnnounce(Packet* packet);
void HandleWho(Packet* packet);
void HandleShowAll(Packet* packet);

View File

@@ -122,10 +122,13 @@ int main(int argc, char** argv) {
uint32_t framesSinceMasterDisconnect = 0;
uint32_t framesSinceLastSQLPing = 0;
// Independant chat server
bool isStandalone = argc > 1 && strcmp(argv[1], "--standalone") == 0;
Game::logger->Flush(); // once immediately before main loop
while (!Game::ShouldShutdown()) {
//Check if we're still connected to master:
if (!Game::server->GetIsConnectedToMaster()) {
if (!isStandalone && !Game::server->GetIsConnectedToMaster()) {
framesSinceMasterDisconnect++;
if (framesSinceMasterDisconnect >= chatFramerate)
@@ -281,6 +284,7 @@ void HandlePacket(Packet* packet) {
break;
case eChatMessageType::GM_ANNOUNCE:{
// we just forward this packet to every connected server
ChatPacketHandler::HandleGMAnnounce(packet);
inStream.ResetReadPointer();
Game::server->Send(inStream, packet->systemAddress, true); // send to everyone except origin
}