mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-04-26 16:46:31 +00:00
more misc work
This commit is contained in:
parent
8364e60799
commit
48d32f2c77
@ -450,24 +450,21 @@ void ChatPacketHandler::HandleChatMessage(Packet* packet) {
|
||||
|
||||
|
||||
switch (data.channel) {
|
||||
case eChatChannel::LOCAL: {
|
||||
break;
|
||||
}
|
||||
case eChatChannel::TEAM: {
|
||||
auto* team = Game::playerContainer.GetTeam(data.sender.playerID);
|
||||
if (team == nullptr) return;
|
||||
data.teamID = team->teamID;
|
||||
case eChatChannel::TEAM: {
|
||||
auto* team = Game::playerContainer.GetTeam(data.sender.playerID);
|
||||
if (team == nullptr) return;
|
||||
data.teamID = team->teamID;
|
||||
|
||||
for (const auto memberId : team->memberIDs) {
|
||||
const auto& otherMember = Game::playerContainer.GetPlayerData(memberId);
|
||||
if (!otherMember) return;
|
||||
SendPrivateChatMessage(data.sender, otherMember, otherMember, data.message, eChatChannel::TEAM, eChatMessageResponseCode::SENT);
|
||||
for (const auto memberId : team->memberIDs) {
|
||||
const auto& otherMember = Game::playerContainer.GetPlayerData(memberId);
|
||||
if (!otherMember) return;
|
||||
SendPrivateChatMessage(data.sender, otherMember, otherMember, data.message, eChatChannel::TEAM, eChatMessageResponseCode::SENT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
LOG("Unhandled Chat channel [%s]", StringifiedEnum::ToString(data.channel).data());
|
||||
break;
|
||||
default:
|
||||
LOG_DEBUG("Unhandled Chat channel [%s]", StringifiedEnum::ToString(data.channel).data());
|
||||
break;
|
||||
}
|
||||
ChatWeb::SendWSChatMessage(data);
|
||||
}
|
||||
|
@ -150,12 +150,9 @@ namespace ChatWeb {
|
||||
json data;
|
||||
data["message"] = chatMessage.message.GetAsString();
|
||||
data["sender"] = chatMessage.sender;
|
||||
|
||||
data["channel"] = magic_enum::enum_name(chatMessage.channel);
|
||||
|
||||
switch (chatMessage.channel) {
|
||||
case eChatChannel::LOCAL:
|
||||
break;
|
||||
case eChatChannel::TEAM:
|
||||
data["teamID"] = chatMessage.teamID;
|
||||
break;
|
||||
|
@ -12,4 +12,4 @@ enum class eChatMessageResponseCode : uint8_t {
|
||||
RECEIVERFREETRIAL,
|
||||
};
|
||||
|
||||
#endif //!__ECHATMESSAGERESPONSECODES__H__
|
||||
#endif //!__ECHATMESSAGERESPONSECODES__H__
|
||||
|
@ -61,6 +61,9 @@ struct LUBitStream {
|
||||
void WriteHeader(RakNet::BitStream& bitStream) const;
|
||||
bool ReadHeader(RakNet::BitStream& bitStream);
|
||||
void Send(const SystemAddress& sysAddr) const;
|
||||
void Broadcast() const {
|
||||
Send(UNASSIGNED_SYSTEM_ADDRESS);
|
||||
};
|
||||
|
||||
virtual void Serialize(RakNet::BitStream& bitStream) const {}
|
||||
virtual bool Deserialize(RakNet::BitStream& bitStream) { return true; }
|
||||
|
@ -54,6 +54,55 @@ namespace ChatPackets {
|
||||
//TODO: Implement this
|
||||
return false;
|
||||
}
|
||||
void ChatMessage::Handle(){
|
||||
|
||||
}
|
||||
|
||||
void WorldChatMessage::Serialize(RakNet::BitStream& bitStream) const {
|
||||
|
||||
}
|
||||
bool WorldChatMessage::Deserialize(RakNet::BitStream& inStream) {
|
||||
VALIDATE_READ(inStream.Read(chatChannel));
|
||||
uint16_t padding;
|
||||
VALIDATE_READ(inStream.Read(padding));
|
||||
uint32_t messageLength;
|
||||
VALIDATE_READ(inStream.Read(messageLength));
|
||||
string message_tmp;
|
||||
for (uint32_t i = 0; i < messageLength; ++i) {
|
||||
uint16_t character;
|
||||
VALIDATE_READ(inStream.Read(character));
|
||||
message_tmp.push_back(character);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
void WorldChatMessage::Handle() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
void PrivateChatMessage::Serialize(RakNet::BitStream& bitStream) const {
|
||||
|
||||
}
|
||||
bool PrivateChatMessage::Deserialize(RakNet::BitStream& inStream) {
|
||||
|
||||
}
|
||||
void PrivateChatMessage::Handle() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
void UserChatMessage::Serialize(RakNet::BitStream& bitStream) const {
|
||||
|
||||
}
|
||||
bool UserChatMessage::Deserialize(RakNet::BitStream& inStream) {
|
||||
|
||||
}
|
||||
void UserChatMessage::Handle() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SendSystemMessage(const SystemAddress& sysAddr, const std::u16string& message, const bool broadcast) {
|
||||
CBITSTREAM;
|
||||
|
@ -61,6 +61,25 @@ namespace ChatPackets {
|
||||
ChatMessage() : LUBitStream(eConnectionType::CHAT, MessageType::Chat::GENERAL_CHAT_MESSAGE) {};
|
||||
virtual void Serialize(RakNet::BitStream& bitStream) const override;
|
||||
virtual bool Deserialize(RakNet::BitStream& inStream) override;
|
||||
virtual void Handle() override {};
|
||||
};
|
||||
|
||||
struct WorldChatMessage : public ChatMessage {
|
||||
virtual bool Deserialize(RakNet::BitStream& bitStream) override;
|
||||
virtual void Serialize(RakNet::BitStream& bitStream) const override;
|
||||
virtual void Handle() override;
|
||||
};
|
||||
|
||||
struct PrivateChatMessage : public ChatMessage {
|
||||
virtual bool Deserialize(RakNet::BitStream& inStream) override;
|
||||
virtual void Serialize(RakNet::BitStream& bitStream) const override;
|
||||
virtual void Handle() override;
|
||||
};
|
||||
|
||||
struct UserChatMessage : public ChatMessage {
|
||||
virtual bool Deserialize(RakNet::BitStream& inStream) override;
|
||||
virtual void Serialize(RakNet::BitStream& bitStream) const override;
|
||||
virtual void Handle() override;
|
||||
};
|
||||
|
||||
// Should be in client packets since it is a client connection type, but whatever
|
||||
|
@ -13,12 +13,6 @@ class PositionUpdate;
|
||||
|
||||
struct Packet;
|
||||
|
||||
struct ChatMessage {
|
||||
uint8_t chatChannel = 0;
|
||||
uint16_t unknown = 0;
|
||||
std::u16string message;
|
||||
};
|
||||
|
||||
struct ChatModerationRequest {
|
||||
uint8_t chatLevel = 0;
|
||||
uint8_t requestID = 0;
|
||||
@ -27,7 +21,6 @@ struct ChatModerationRequest {
|
||||
};
|
||||
|
||||
namespace ClientPackets {
|
||||
ChatMessage HandleChatMessage(Packet* packet);
|
||||
PositionUpdate HandleClientPositionUpdate(Packet* packet);
|
||||
ChatModerationRequest HandleChatModerationRequest(Packet* packet);
|
||||
int32_t SendTop5HelpIssues(Packet* packet);
|
||||
|
@ -183,4 +183,4 @@ void WorldPackets::SendDebugOuput(const SystemAddress& sysAddr, const std::strin
|
||||
bitStream.Write<uint32_t>(data.size());
|
||||
bitStream.Write(data);
|
||||
SEND_PACKET;
|
||||
}
|
||||
}
|
@ -10,9 +10,6 @@ struct SystemAddress;
|
||||
enum class eGameMasterLevel : uint8_t;
|
||||
enum class eCharacterCreationResponse : uint8_t;
|
||||
enum class eRenameResponse : uint8_t;
|
||||
namespace RakNet {
|
||||
class BitStream;
|
||||
};
|
||||
|
||||
struct HTTPMonitorInfo {
|
||||
uint16_t port = 80;
|
||||
|
@ -286,4 +286,4 @@ void Web::SendWSMessage(const std::string subscription, json& data) {
|
||||
mg_ws_send(wc, data.dump().c_str(), data.dump().size(), WEBSOCKET_OP_TEXT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1321,7 +1321,7 @@ void HandlePacket(Packet* packet) {
|
||||
if (chatDisabled) {
|
||||
ChatPackets::MessageFailure().Send(packet->systemAddress);
|
||||
} else {
|
||||
auto chatMessage = ClientPackets::HandleChatMessage(packet);
|
||||
ChatPackets::WorldChatMessage inChatMessage;
|
||||
// TODO: Find a good home for the logic in this case.
|
||||
User* user = UserManager::Instance()->GetUser(packet->systemAddress);
|
||||
if (!user) {
|
||||
@ -1342,15 +1342,12 @@ void HandlePacket(Packet* packet) {
|
||||
|
||||
std::string sMessage = GeneralUtils::UTF16ToWTF8(chatMessage.message);
|
||||
LOG("%s: %s", playerName.c_str(), sMessage.c_str());
|
||||
//(packet->systemAddress, chatMessage.chatChannel, playerName, user->GetLoggedInChar(), isMythran, chatMessage.message);
|
||||
|
||||
ChatPackets::ChatMessage outChatMessage;
|
||||
outChatMessage.chatChannel = chatMessage.chatChannel;
|
||||
outChatMessage.message = chatMessage.message;
|
||||
outChatMessage.senderMythran = isMythran;
|
||||
outChatMessage.senderName = playerName;
|
||||
outChatMessage.playerObjectID = user->GetLoggedInChar();
|
||||
outChatMessage.Send(packet->systemAddress);
|
||||
|
||||
outChatMessage.Broadcast();
|
||||
|
||||
{
|
||||
// TODO: make it so we don't write this manually, but instead use a proper read and writes
|
||||
|
Loading…
x
Reference in New Issue
Block a user