From 4ed7bd676740a21e0c75bfafeacea79909a352ec Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Mon, 23 Jun 2025 20:58:55 -0700 Subject: [PATCH] fix: some mail features (#1826) --- dGame/dUtilities/Mail.cpp | 15 ++++++++++++--- dGame/dUtilities/Mail.h | 4 ++++ dNet/MailInfo.cpp | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/dGame/dUtilities/Mail.cpp b/dGame/dUtilities/Mail.cpp index 6791020e..2e807c73 100644 --- a/dGame/dUtilities/Mail.cpp +++ b/dGame/dUtilities/Mail.cpp @@ -132,6 +132,7 @@ namespace Mail { } else { response.status = eSendResponse::SenderAccountIsMuted; } + LOG("Finished send with status %s", StringifiedEnum::ToString(response.status).data()); response.Send(sysAddr); } @@ -158,6 +159,7 @@ namespace Mail { DataResponse response; response.playerMail = playerMail; response.Send(sysAddr); + LOG("DataRequest"); } void DataResponse::Serialize(RakNet::BitStream& bitStream) const { @@ -196,6 +198,7 @@ namespace Mail { response.status = eAttachmentCollectResponse::Success; } } + LOG("AttachmentCollectResponse %s", StringifiedEnum::ToString(response.status).data()); response.Send(sysAddr); } @@ -218,14 +221,15 @@ namespace Mail { response.mailID = mailID; auto mailData = Database::Get()->GetMail(mailID); - if (mailData && !(mailData->itemLOT != 0 && mailData->itemCount > 0)) { + if (mailData && !(mailData->itemLOT > 0 && mailData->itemCount > 0)) { Database::Get()->DeleteMail(mailID); response.status = eDeleteResponse::Success; - } else if (mailData && mailData->itemLOT != 0 && mailData->itemCount > 0) { + } else if (mailData && mailData->itemLOT > 0 && mailData->itemCount > 0) { response.status = eDeleteResponse::HasAttachments; } else { response.status = eDeleteResponse::NotFound; } + LOG("DeleteRequest status %s", StringifiedEnum::ToString(response.status).data()); response.Send(sysAddr); } @@ -249,7 +253,9 @@ namespace Mail { if (Database::Get()->GetMail(mailID)) { response.status = eReadResponse::Success; Database::Get()->MarkMailRead(mailID); - } + } + + LOG("ReadRequest %s", StringifiedEnum::ToString(response.status).data()); response.Send(sysAddr); } @@ -267,6 +273,8 @@ namespace Mail { response.status = eNotificationResponse::NewMail; response.mailCount = unreadMailCount; } + + LOG("NotificationRequest %s", StringifiedEnum::ToString(response.status).data()); response.Send(sysAddr); } } @@ -288,6 +296,7 @@ void Mail::HandleMail(RakNet::BitStream& inStream, const SystemAddress& sysAddr, LOG_DEBUG("Error Reading Mail Request: %s", StringifiedEnum::ToString(data.messageID).data()); return; } + LOG("Received mail message %s", StringifiedEnum::ToString(data.messageID).data()); request->Handle(); } else { LOG_DEBUG("Unhandled Mail Request with ID: %i", data.messageID); diff --git a/dGame/dUtilities/Mail.h b/dGame/dUtilities/Mail.h index f4273543..059b28b1 100644 --- a/dGame/dUtilities/Mail.h +++ b/dGame/dUtilities/Mail.h @@ -119,12 +119,15 @@ namespace Mail { struct SendRequest : public MailLUBitStream { MailInfo mailInfo; + SendRequest() : MailLUBitStream(eMessageID::SendRequest) {} bool Deserialize(RakNet::BitStream& bitStream) override; void Handle() override; }; struct SendResponse :public MailLUBitStream { eSendResponse status = eSendResponse::UnknownError; + + SendResponse() : MailLUBitStream(eMessageID::SendResponse) {} void Serialize(RakNet::BitStream& bitStream) const override; }; @@ -137,6 +140,7 @@ namespace Mail { }; struct DataRequest : public MailLUBitStream { + DataRequest() : MailLUBitStream(eMessageID::DataRequest) {} bool Deserialize(RakNet::BitStream& bitStream) override { return true; }; void Handle() override; }; diff --git a/dNet/MailInfo.cpp b/dNet/MailInfo.cpp index 1556fc06..f4bd47f9 100644 --- a/dNet/MailInfo.cpp +++ b/dNet/MailInfo.cpp @@ -58,6 +58,7 @@ bool MailInfo::Deserialize(RakNet::BitStream& bitStream) { bitStream.IgnoreBytes(4); // padding DluAssert(bitStream.GetNumberOfUnreadBits() == 0); + LOG_DEBUG("MailInfo: %llu, %s, %s, %s, %llu, %i, %llu, %i, %llu, %i", id, subject.GetAsString().c_str(), body.GetAsString().c_str(), recipientName.GetAsString().c_str(), itemID, itemLOT, itemSubkey, itemCount, timeSent, wasRead); return true; }