mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-31 04:32:06 +00:00 
			
		
		
		
	more misc work
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Aaron Kimbre
					Aaron Kimbre