mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-31 04:32:06 +00:00 
			
		
		
		
	Merge remote-tracking branch 'upstream/main' into PetFixes
This commit is contained in:
		| @@ -179,7 +179,7 @@ file(ARCHIVE_EXTRACT INPUT ${PROJECT_BINARY_DIR}/navmeshes.zip DESTINATION ${PRO | ||||
| file(REMOVE ${PROJECT_BINARY_DIR}/navmeshes.zip) | ||||
|  | ||||
| # Copy vanity files on first build | ||||
| set(VANITY_FILES "CREDITS.md" "INFO.md" "TESTAMENT.md" "NPC.xml") | ||||
| set(VANITY_FILES "CREDITS.md" "INFO.md" "TESTAMENT.md" "root.xml" "dev-tribute.xml" "atm.xml") | ||||
|  | ||||
| foreach(file ${VANITY_FILES}) | ||||
| 	configure_file("${CMAKE_SOURCE_DIR}/vanity/${file}" "${CMAKE_BINARY_DIR}/vanity/${file}" COPYONLY) | ||||
|   | ||||
| @@ -59,7 +59,7 @@ void ChatIgnoreList::GetIgnoreList(Packet* packet) { | ||||
| 		bitStream.Write(LUWString(ignoredPlayer.playerName, 36)); | ||||
| 	} | ||||
|  | ||||
| 	Game::server->Send(&bitStream, packet->systemAddress, false); | ||||
| 	Game::server->Send(bitStream, packet->systemAddress, false); | ||||
| } | ||||
|  | ||||
| void ChatIgnoreList::AddIgnore(Packet* packet) { | ||||
| @@ -131,7 +131,7 @@ void ChatIgnoreList::AddIgnore(Packet* packet) { | ||||
| 	bitStream.Write(playerNameSend); | ||||
| 	bitStream.Write(ignoredPlayerId); | ||||
|  | ||||
| 	Game::server->Send(&bitStream, packet->systemAddress, false); | ||||
| 	Game::server->Send(bitStream, packet->systemAddress, false); | ||||
| } | ||||
|  | ||||
| void ChatIgnoreList::RemoveIgnore(Packet* packet) { | ||||
| @@ -167,5 +167,5 @@ void ChatIgnoreList::RemoveIgnore(Packet* packet) { | ||||
| 	LUWString playerNameSend(removedIgnoreStr, 33); | ||||
| 	bitStream.Write(playerNameSend); | ||||
|  | ||||
| 	Game::server->Send(&bitStream, packet->systemAddress, false); | ||||
| 	Game::server->Send(bitStream, packet->systemAddress, false); | ||||
| } | ||||
|   | ||||
| @@ -211,7 +211,7 @@ void HandlePacket(Packet* packet) { | ||||
| 		case eChatInternalMessageType::ANNOUNCEMENT: { | ||||
| 			//we just forward this packet to every connected server | ||||
| 			CINSTREAM; | ||||
| 			Game::server->Send(&inStream, packet->systemAddress, true); //send to everyone except origin | ||||
| 			Game::server->Send(inStream, packet->systemAddress, true); //send to everyone except origin | ||||
| 			break; | ||||
| 		} | ||||
|  | ||||
|   | ||||
| @@ -150,7 +150,7 @@ void PlayerContainer::BroadcastMuteUpdate(LWOOBJID player, time_t time) { | ||||
| 	bitStream.Write(player); | ||||
| 	bitStream.Write(time); | ||||
|  | ||||
| 	Game::server->Send(&bitStream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 	Game::server->Send(bitStream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| } | ||||
|  | ||||
| TeamData* PlayerContainer::CreateLocalTeam(std::vector<LWOOBJID> members) { | ||||
| @@ -365,7 +365,7 @@ void PlayerContainer::UpdateTeamsOnWorld(TeamData* team, bool deleteTeam) { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	Game::server->Send(&bitStream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 	Game::server->Send(bitStream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| } | ||||
|  | ||||
| std::u16string PlayerContainer::GetName(LWOOBJID playerID) { | ||||
|   | ||||
| @@ -9,12 +9,11 @@ | ||||
|  * AMF3 Deserializer written by EmosewaMC | ||||
|  */ | ||||
|  | ||||
| AMFBaseValue* AMFDeserialize::Read(RakNet::BitStream* inStream) { | ||||
| 	if (!inStream) return nullptr; | ||||
| AMFBaseValue* AMFDeserialize::Read(RakNet::BitStream& inStream) { | ||||
| 	AMFBaseValue* returnValue = nullptr; | ||||
| 	// Read in the value type from the bitStream | ||||
| 	eAmf marker; | ||||
| 	inStream->Read(marker); | ||||
| 	inStream.Read(marker); | ||||
| 	// Based on the typing, create the value associated with that and return the base value class | ||||
| 	switch (marker) { | ||||
| 	case eAmf::Undefined: { | ||||
| @@ -79,13 +78,13 @@ AMFBaseValue* AMFDeserialize::Read(RakNet::BitStream* inStream) { | ||||
| 	return returnValue; | ||||
| } | ||||
|  | ||||
| uint32_t AMFDeserialize::ReadU29(RakNet::BitStream* inStream) { | ||||
| uint32_t AMFDeserialize::ReadU29(RakNet::BitStream& inStream) { | ||||
| 	bool byteFlag = true; | ||||
| 	uint32_t actualNumber{}; | ||||
| 	uint8_t numberOfBytesRead{}; | ||||
| 	while (byteFlag && numberOfBytesRead < 4) { | ||||
| 		uint8_t byte{}; | ||||
| 		inStream->Read(byte); | ||||
| 		inStream.Read(byte); | ||||
| 		// Parse the byte | ||||
| 		if (numberOfBytesRead < 3) { | ||||
| 			byteFlag = byte & static_cast<uint8_t>(1 << 7); | ||||
| @@ -101,7 +100,7 @@ uint32_t AMFDeserialize::ReadU29(RakNet::BitStream* inStream) { | ||||
| 	return actualNumber; | ||||
| } | ||||
|  | ||||
| const std::string AMFDeserialize::ReadString(RakNet::BitStream* inStream) { | ||||
| const std::string AMFDeserialize::ReadString(RakNet::BitStream& inStream) { | ||||
| 	auto length = ReadU29(inStream); | ||||
| 	// Check if this is a reference | ||||
| 	bool isReference = length % 2 == 1; | ||||
| @@ -109,7 +108,7 @@ const std::string AMFDeserialize::ReadString(RakNet::BitStream* inStream) { | ||||
| 	length = length >> 1; | ||||
| 	if (isReference) { | ||||
| 		std::string value(length, 0); | ||||
| 		inStream->Read(&value[0], length); | ||||
| 		inStream.Read(&value[0], length); | ||||
| 		// Empty strings are never sent by reference | ||||
| 		if (!value.empty()) accessedElements.push_back(value); | ||||
| 		return value; | ||||
| @@ -119,20 +118,20 @@ const std::string AMFDeserialize::ReadString(RakNet::BitStream* inStream) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfDouble(RakNet::BitStream* inStream) { | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfDouble(RakNet::BitStream& inStream) { | ||||
| 	double value; | ||||
| 	inStream->Read<double>(value); | ||||
| 	inStream.Read<double>(value); | ||||
| 	return new AMFDoubleValue(value); | ||||
| } | ||||
|  | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfArray(RakNet::BitStream* inStream) { | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfArray(RakNet::BitStream& inStream) { | ||||
| 	auto arrayValue = new AMFArrayValue(); | ||||
|  | ||||
| 	// Read size of dense array | ||||
| 	auto sizeOfDenseArray = (ReadU29(inStream) >> 1); | ||||
| 	const auto sizeOfDenseArray = (ReadU29(inStream) >> 1); | ||||
| 	// Then read associative portion | ||||
| 	while (true) { | ||||
| 		auto key = ReadString(inStream); | ||||
| 		const auto key = ReadString(inStream); | ||||
| 		// No more associative values when we encounter an empty string key | ||||
| 		if (key.size() == 0) break; | ||||
| 		arrayValue->Insert(key, Read(inStream)); | ||||
| @@ -144,10 +143,10 @@ AMFBaseValue* AMFDeserialize::ReadAmfArray(RakNet::BitStream* inStream) { | ||||
| 	return arrayValue; | ||||
| } | ||||
|  | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfString(RakNet::BitStream* inStream) { | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfString(RakNet::BitStream& inStream) { | ||||
| 	return new AMFStringValue(ReadString(inStream)); | ||||
| } | ||||
|  | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfInteger(RakNet::BitStream* inStream) { | ||||
| AMFBaseValue* AMFDeserialize::ReadAmfInteger(RakNet::BitStream& inStream) { | ||||
| 	return new AMFIntValue(ReadU29(inStream)); | ||||
| } | ||||
|   | ||||
| @@ -15,7 +15,7 @@ public: | ||||
| 	 * @param inStream inStream to read value from. | ||||
| 	 * @return Returns an AMFValue with all the information from the bitStream in it. | ||||
| 	 */ | ||||
| 	AMFBaseValue* Read(RakNet::BitStream* inStream); | ||||
| 	AMFBaseValue* Read(RakNet::BitStream& inStream); | ||||
| private: | ||||
| 	/** | ||||
| 	 * @brief Private method to read a U29 integer from a bitstream | ||||
| @@ -23,7 +23,7 @@ private: | ||||
| 	 * @param inStream bitstream to read data from | ||||
| 	 * @return The number as an unsigned 29 bit integer | ||||
| 	 */ | ||||
| 	uint32_t ReadU29(RakNet::BitStream* inStream); | ||||
| 	static uint32_t ReadU29(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Reads a string from a bitstream | ||||
| @@ -31,7 +31,7 @@ private: | ||||
| 	 * @param inStream bitStream to read data from | ||||
| 	 * @return The read string | ||||
| 	 */ | ||||
| 	const std::string ReadString(RakNet::BitStream* inStream); | ||||
| 	const std::string ReadString(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Read an AMFDouble value from a bitStream | ||||
| @@ -39,7 +39,7 @@ private: | ||||
| 	 * @param inStream bitStream to read data from | ||||
| 	 * @return Double value represented as an AMFValue | ||||
| 	 */ | ||||
| 	AMFBaseValue* ReadAmfDouble(RakNet::BitStream* inStream); | ||||
| 	AMFBaseValue* ReadAmfDouble(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Read an AMFArray from a bitStream | ||||
| @@ -47,7 +47,7 @@ private: | ||||
| 	 * @param inStream bitStream to read data from | ||||
| 	 * @return Array value represented as an AMFValue | ||||
| 	 */ | ||||
| 	AMFBaseValue* ReadAmfArray(RakNet::BitStream* inStream); | ||||
| 	AMFBaseValue* ReadAmfArray(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Read an AMFString from a bitStream | ||||
| @@ -55,7 +55,7 @@ private: | ||||
| 	 * @param inStream bitStream to read data from | ||||
| 	 * @return String value represented as an AMFValue | ||||
| 	 */ | ||||
| 	AMFBaseValue* ReadAmfString(RakNet::BitStream* inStream); | ||||
| 	AMFBaseValue* ReadAmfString(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Read an AMFInteger from a bitStream | ||||
| @@ -63,7 +63,7 @@ private: | ||||
| 	 * @param inStream bitStream to read data from | ||||
| 	 * @return Integer value represented as an AMFValue | ||||
| 	 */ | ||||
| 	AMFBaseValue* ReadAmfInteger(RakNet::BitStream* inStream); | ||||
| 	AMFBaseValue* ReadAmfInteger(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	/** | ||||
| 	 * List of strings read so far saved to be read by reference. | ||||
|   | ||||
							
								
								
									
										105
									
								
								dCommon/Amf3.h
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								dCommon/Amf3.h
									
									
									
									
									
								
							| @@ -41,12 +41,14 @@ template <typename ValueType> | ||||
| class AMFValue : public AMFBaseValue { | ||||
| public: | ||||
| 	AMFValue() = default; | ||||
| 	AMFValue(const ValueType value) { m_Data = value; } | ||||
| 	AMFValue(const ValueType value) : m_Data{ value } {} | ||||
|  | ||||
| 	virtual ~AMFValue() override = default; | ||||
|  | ||||
| 	[[nodiscard]] constexpr eAmf GetValueType() const noexcept override; | ||||
|  | ||||
| 	[[nodiscard]] const ValueType& GetValue() const { return m_Data; } | ||||
|  | ||||
| 	void SetValue(const ValueType value) { m_Data = value; } | ||||
|  | ||||
| protected: | ||||
| @@ -54,7 +56,7 @@ protected: | ||||
| }; | ||||
|  | ||||
| // Explicit template class instantiations | ||||
| template class AMFValue<std::nullptr_t>;  | ||||
| template class AMFValue<std::nullptr_t>; | ||||
| template class AMFValue<bool>; | ||||
| template class AMFValue<int32_t>; | ||||
| template class AMFValue<uint32_t>; | ||||
| @@ -110,7 +112,7 @@ public: | ||||
| 	[[nodiscard]] constexpr eAmf GetValueType() const noexcept override { return eAmf::Array; } | ||||
|  | ||||
| 	~AMFArrayValue() override { | ||||
| 		for (auto valueToDelete : GetDense()) { | ||||
| 		for (const auto* valueToDelete : GetDense()) { | ||||
| 			if (valueToDelete) { | ||||
| 				delete valueToDelete; | ||||
| 				valueToDelete = nullptr; | ||||
| @@ -127,12 +129,12 @@ public: | ||||
| 	/** | ||||
| 	 * Returns the Associative portion of the object | ||||
| 	 */ | ||||
| 	[[nodiscard]] inline AMFAssociative& GetAssociative() noexcept { return this->associative; } | ||||
| 	[[nodiscard]] inline const AMFAssociative& GetAssociative() const noexcept { return m_Associative; } | ||||
|  | ||||
| 	/** | ||||
| 	 * Returns the dense portion of the object | ||||
| 	 */ | ||||
| 	[[nodiscard]] inline AMFDense& GetDense() noexcept { return this->dense; } | ||||
| 	[[nodiscard]] inline const AMFDense& GetDense() const noexcept { return m_Dense; } | ||||
|  | ||||
| 	/** | ||||
| 	 * Inserts an AMFValue into the associative portion with the given key. | ||||
| @@ -150,12 +152,12 @@ public: | ||||
| 	 */ | ||||
| 	template <typename ValueType> | ||||
| 	[[maybe_unused]] std::pair<AMFValue<ValueType>*, bool> Insert(const std::string& key, const ValueType value) { | ||||
| 		auto element = associative.find(key); | ||||
| 		const auto element = m_Associative.find(key); | ||||
| 		AMFValue<ValueType>* val = nullptr; | ||||
| 		bool found = true; | ||||
| 		if (element == associative.end()) { | ||||
| 		if (element == m_Associative.cend()) { | ||||
| 			val = new AMFValue<ValueType>(value); | ||||
| 			associative.insert(std::make_pair(key, val)); | ||||
| 			m_Associative.emplace(key, val); | ||||
| 		} else { | ||||
| 			val = dynamic_cast<AMFValue<ValueType>*>(element->second); | ||||
| 			found = false; | ||||
| @@ -165,12 +167,12 @@ public: | ||||
|  | ||||
| 	// Associates an array with a string key | ||||
| 	[[maybe_unused]] std::pair<AMFBaseValue*, bool> Insert(const std::string& key) { | ||||
| 		auto element = associative.find(key); | ||||
| 		const auto element = m_Associative.find(key); | ||||
| 		AMFArrayValue* val = nullptr; | ||||
| 		bool found = true; | ||||
| 		if (element == associative.end()) { | ||||
| 		if (element == m_Associative.cend()) { | ||||
| 			val = new AMFArrayValue(); | ||||
| 			associative.insert(std::make_pair(key, val)); | ||||
| 			m_Associative.emplace(key, val); | ||||
| 		} else { | ||||
| 			val = dynamic_cast<AMFArrayValue*>(element->second); | ||||
| 			found = false; | ||||
| @@ -182,13 +184,13 @@ public: | ||||
| 	[[maybe_unused]] std::pair<AMFBaseValue*, bool> Insert(const size_t index) { | ||||
| 		AMFArrayValue* val = nullptr; | ||||
| 		bool inserted = false; | ||||
| 		if (index >= dense.size()) { | ||||
| 			dense.resize(index + 1); | ||||
| 		if (index >= m_Dense.size()) { | ||||
| 			m_Dense.resize(index + 1); | ||||
| 			val = new AMFArrayValue(); | ||||
| 			dense.at(index) = val; | ||||
| 			m_Dense.at(index) = val; | ||||
| 			inserted = true; | ||||
| 		} | ||||
| 		return std::make_pair(dynamic_cast<AMFArrayValue*>(dense.at(index)), inserted); | ||||
| 		return std::make_pair(dynamic_cast<AMFArrayValue*>(m_Dense.at(index)), inserted); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -205,13 +207,13 @@ public: | ||||
| 	[[maybe_unused]] std::pair<AMFValue<ValueType>*, bool> Insert(const size_t index, const ValueType value) { | ||||
| 		AMFValue<ValueType>* val = nullptr; | ||||
| 		bool inserted = false; | ||||
| 		if (index >= this->dense.size()) { | ||||
| 			this->dense.resize(index + 1); | ||||
| 		if (index >= m_Dense.size()) { | ||||
| 			m_Dense.resize(index + 1); | ||||
| 			val = new AMFValue<ValueType>(value); | ||||
| 			this->dense.at(index) = val; | ||||
| 			m_Dense.at(index) = val; | ||||
| 			inserted = true; | ||||
| 		} | ||||
| 		return std::make_pair(dynamic_cast<AMFValue<ValueType>*>(this->dense.at(index)), inserted); | ||||
| 		return std::make_pair(dynamic_cast<AMFValue<ValueType>*>(m_Dense.at(index)), inserted); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -224,12 +226,12 @@ public: | ||||
| 	 * @param value The value to insert | ||||
| 	 */ | ||||
| 	void Insert(const std::string& key, AMFBaseValue* const value) { | ||||
| 		auto element = associative.find(key); | ||||
| 		if (element != associative.end() && element->second) { | ||||
| 		const auto element = m_Associative.find(key); | ||||
| 		if (element != m_Associative.cend() && element->second) { | ||||
| 			delete element->second; | ||||
| 			element->second = value; | ||||
| 		} else { | ||||
| 			associative.insert(std::make_pair(key, value)); | ||||
| 			m_Associative.emplace(key, value); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -243,13 +245,13 @@ public: | ||||
| 	 * @param value The value to insert | ||||
| 	 */ | ||||
| 	void Insert(const size_t index, AMFBaseValue* const value) { | ||||
| 		if (index < dense.size()) { | ||||
| 			AMFDense::iterator itr = dense.begin() + index; | ||||
| 			if (*itr) delete dense.at(index); | ||||
| 		if (index < m_Dense.size()) { | ||||
| 			const AMFDense::const_iterator itr = m_Dense.cbegin() + index; | ||||
| 			if (*itr) delete m_Dense.at(index); | ||||
| 		} else { | ||||
| 			dense.resize(index + 1); | ||||
| 			m_Dense.resize(index + 1); | ||||
| 		} | ||||
| 		dense.at(index) = value; | ||||
| 		m_Dense.at(index) = value; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -264,7 +266,7 @@ public: | ||||
| 	 */ | ||||
| 	template <typename ValueType> | ||||
| 	[[maybe_unused]] inline AMFValue<ValueType>* Push(const ValueType value) { | ||||
| 		return Insert(this->dense.size(), value).first; | ||||
| 		return Insert(m_Dense.size(), value).first; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -275,10 +277,10 @@ public: | ||||
| 	 * @param key The key to remove from the associative portion | ||||
| 	 */ | ||||
| 	void Remove(const std::string& key, const bool deleteValue = true) { | ||||
| 		AMFAssociative::iterator it = this->associative.find(key); | ||||
| 		if (it != this->associative.end()) { | ||||
| 		const AMFAssociative::const_iterator it = m_Associative.find(key); | ||||
| 		if (it != m_Associative.cend()) { | ||||
| 			if (deleteValue) delete it->second; | ||||
| 			this->associative.erase(it); | ||||
| 			m_Associative.erase(it); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -286,27 +288,24 @@ public: | ||||
| 	 * Pops the last element in the dense portion, deleting it in the process. | ||||
| 	 */ | ||||
| 	void Remove(const size_t index) { | ||||
| 		if (!this->dense.empty() && index < this->dense.size()) { | ||||
| 			auto itr = this->dense.begin() + index; | ||||
| 		if (!m_Dense.empty() && index < m_Dense.size()) { | ||||
| 			const auto itr = m_Dense.cbegin() + index; | ||||
| 			if (*itr) delete (*itr); | ||||
| 			this->dense.erase(itr); | ||||
| 			m_Dense.erase(itr); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	void Pop() { | ||||
| 		if (!this->dense.empty()) Remove(this->dense.size() - 1); | ||||
| 		if (!m_Dense.empty()) Remove(m_Dense.size() - 1); | ||||
| 	} | ||||
|  | ||||
| 	[[nodiscard]] AMFArrayValue* GetArray(const std::string& key) { | ||||
| 		AMFAssociative::const_iterator it = this->associative.find(key); | ||||
| 		if (it != this->associative.end()) { | ||||
| 			return dynamic_cast<AMFArrayValue*>(it->second); | ||||
| 		} | ||||
| 		return nullptr; | ||||
| 	[[nodiscard]] AMFArrayValue* GetArray(const std::string& key) const { | ||||
| 		const AMFAssociative::const_iterator it = m_Associative.find(key); | ||||
| 		return it != m_Associative.cend() ? dynamic_cast<AMFArrayValue*>(it->second) : nullptr; | ||||
| 	} | ||||
|  | ||||
| 	[[nodiscard]] AMFArrayValue* GetArray(const size_t index) { | ||||
| 		return index >= this->dense.size() ? nullptr : dynamic_cast<AMFArrayValue*>(this->dense.at(index)); | ||||
| 	[[nodiscard]] AMFArrayValue* GetArray(const size_t index) const { | ||||
| 		return index < m_Dense.size() ? dynamic_cast<AMFArrayValue*>(m_Dense.at(index)) : nullptr; | ||||
| 	} | ||||
|  | ||||
| 	[[maybe_unused]] inline AMFArrayValue* InsertArray(const std::string& key) { | ||||
| @@ -318,7 +317,7 @@ public: | ||||
| 	} | ||||
|  | ||||
| 	[[maybe_unused]] inline AMFArrayValue* PushArray() { | ||||
| 		return static_cast<AMFArrayValue*>(Insert(this->dense.size()).first); | ||||
| 		return static_cast<AMFArrayValue*>(Insert(m_Dense.size()).first); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -332,16 +331,16 @@ public: | ||||
| 	 */ | ||||
| 	template <typename AmfType> | ||||
| 	[[nodiscard]] AMFValue<AmfType>* Get(const std::string& key) const { | ||||
| 		AMFAssociative::const_iterator it = this->associative.find(key); | ||||
| 		return it != this->associative.end() ? | ||||
| 		const AMFAssociative::const_iterator it = m_Associative.find(key); | ||||
| 		return it != m_Associative.cend() ? | ||||
| 			dynamic_cast<AMFValue<AmfType>*>(it->second) : | ||||
| 			nullptr; | ||||
| 	} | ||||
|  | ||||
| 	// Get from the array but dont cast it | ||||
| 	[[nodiscard]] AMFBaseValue* Get(const std::string& key) const { | ||||
| 		AMFAssociative::const_iterator it = this->associative.find(key); | ||||
| 		return it != this->associative.end() ? it->second : nullptr; | ||||
| 		const AMFAssociative::const_iterator it = m_Associative.find(key); | ||||
| 		return it != m_Associative.cend() ? it->second : nullptr; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -355,27 +354,27 @@ public: | ||||
| 	 */ | ||||
| 	template <typename AmfType> | ||||
| 	[[nodiscard]] AMFValue<AmfType>* Get(const size_t index) const { | ||||
| 		return index < this->dense.size() ? | ||||
| 			dynamic_cast<AMFValue<AmfType>*>(this->dense.at(index)) : | ||||
| 		return index < m_Dense.size() ? | ||||
| 			dynamic_cast<AMFValue<AmfType>*>(m_Dense.at(index)) : | ||||
| 			nullptr; | ||||
| 	} | ||||
|  | ||||
| 	// Get from the dense but dont cast it | ||||
| 	[[nodiscard]] AMFBaseValue* Get(const size_t index) const { | ||||
| 		return index < this->dense.size() ? this->dense.at(index) : nullptr; | ||||
| 		return index < m_Dense.size() ? m_Dense.at(index) : nullptr; | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	/** | ||||
| 	 * The associative portion.  These values are key'd with strings to an AMFValue. | ||||
| 	 */ | ||||
| 	AMFAssociative associative; | ||||
| 	AMFAssociative m_Associative; | ||||
|  | ||||
| 	/** | ||||
| 	 * The dense portion.  These AMFValue's are stored one after | ||||
| 	 * another with the most recent addition being at the back. | ||||
| 	 */ | ||||
| 	AMFDense dense; | ||||
| 	AMFDense m_Dense; | ||||
| }; | ||||
|  | ||||
| #endif  //!__AMF3__H__ | ||||
|   | ||||
| @@ -53,7 +53,7 @@ void RakNet::BitStream::Write<AMFBaseValue&>(AMFBaseValue& value) { | ||||
|  * A private function to write an value to a RakNet::BitStream | ||||
|  * RakNet writes in the correct byte order - do not reverse this. | ||||
|  */ | ||||
| void WriteUInt29(RakNet::BitStream* bs, uint32_t v) { | ||||
| void WriteUInt29(RakNet::BitStream& bs, uint32_t v) { | ||||
| 	unsigned char b4 = static_cast<unsigned char>(v); | ||||
| 	if (v < 0x00200000) { | ||||
| 		b4 = b4 & 0x7F; | ||||
| @@ -65,10 +65,10 @@ void WriteUInt29(RakNet::BitStream* bs, uint32_t v) { | ||||
| 				unsigned char b2; | ||||
| 				v = v >> 7; | ||||
| 				b2 = static_cast<unsigned char>(v) | 0x80; | ||||
| 				bs->Write(b2); | ||||
| 				bs.Write(b2); | ||||
| 			} | ||||
|  | ||||
| 			bs->Write(b3); | ||||
| 			bs.Write(b3); | ||||
| 		} | ||||
| 	} else { | ||||
| 		unsigned char b1; | ||||
| @@ -82,19 +82,19 @@ void WriteUInt29(RakNet::BitStream* bs, uint32_t v) { | ||||
| 		v = v >> 7; | ||||
| 		b1 = static_cast<unsigned char>(v) | 0x80; | ||||
|  | ||||
| 		bs->Write(b1); | ||||
| 		bs->Write(b2); | ||||
| 		bs->Write(b3); | ||||
| 		bs.Write(b1); | ||||
| 		bs.Write(b2); | ||||
| 		bs.Write(b3); | ||||
| 	} | ||||
|  | ||||
| 	bs->Write(b4); | ||||
| 	bs.Write(b4); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Writes a flag number to a RakNet::BitStream | ||||
|  * RakNet writes in the correct byte order - do not reverse this. | ||||
|  */ | ||||
| void WriteFlagNumber(RakNet::BitStream* bs, uint32_t v) { | ||||
| void WriteFlagNumber(RakNet::BitStream& bs, uint32_t v) { | ||||
| 	v = (v << 1) | 0x01; | ||||
| 	WriteUInt29(bs, v); | ||||
| } | ||||
| @@ -104,9 +104,9 @@ void WriteFlagNumber(RakNet::BitStream* bs, uint32_t v) { | ||||
|  * | ||||
|  * RakNet writes in the correct byte order - do not reverse this. | ||||
|  */ | ||||
| void WriteAMFString(RakNet::BitStream* bs, const std::string& str) { | ||||
| void WriteAMFString(RakNet::BitStream& bs, const std::string& str) { | ||||
| 	WriteFlagNumber(bs, static_cast<uint32_t>(str.size())); | ||||
| 	bs->Write(str.c_str(), static_cast<uint32_t>(str.size())); | ||||
| 	bs.Write(str.c_str(), static_cast<uint32_t>(str.size())); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -114,8 +114,8 @@ void WriteAMFString(RakNet::BitStream* bs, const std::string& str) { | ||||
|  * | ||||
|  * RakNet writes in the correct byte order - do not reverse this. | ||||
|  */ | ||||
| void WriteAMFU16(RakNet::BitStream* bs, uint16_t value) { | ||||
| 	bs->Write(value); | ||||
| void WriteAMFU16(RakNet::BitStream& bs, uint16_t value) { | ||||
| 	bs.Write(value); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -123,8 +123,8 @@ void WriteAMFU16(RakNet::BitStream* bs, uint16_t value) { | ||||
|  * | ||||
|  * RakNet writes in the correct byte order - do not reverse this. | ||||
|  */ | ||||
| void WriteAMFU32(RakNet::BitStream* bs, uint32_t value) { | ||||
| 	bs->Write(value); | ||||
| void WriteAMFU32(RakNet::BitStream& bs, uint32_t value) { | ||||
| 	bs.Write(value); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -132,40 +132,40 @@ void WriteAMFU32(RakNet::BitStream* bs, uint32_t value) { | ||||
|  * | ||||
|  * RakNet writes in the correct byte order - do not reverse this. | ||||
|  */ | ||||
| void WriteAMFU64(RakNet::BitStream* bs, uint64_t value) { | ||||
| 	bs->Write(value); | ||||
| void WriteAMFU64(RakNet::BitStream& bs, uint64_t value) { | ||||
| 	bs.Write(value); | ||||
| } | ||||
|  | ||||
| // Writes an AMFIntegerValue to BitStream | ||||
| template<> | ||||
| void RakNet::BitStream::Write<AMFIntValue&>(AMFIntValue& value) { | ||||
| 	WriteUInt29(this, value.GetValue()); | ||||
| 	WriteUInt29(*this, value.GetValue()); | ||||
| } | ||||
|  | ||||
| // Writes an AMFDoubleValue to BitStream | ||||
| template<> | ||||
| void RakNet::BitStream::Write<AMFDoubleValue&>(AMFDoubleValue& value) { | ||||
| 	double d = value.GetValue(); | ||||
| 	WriteAMFU64(this, *reinterpret_cast<uint64_t*>(&d)); | ||||
| 	WriteAMFU64(*this, *reinterpret_cast<uint64_t*>(&d)); | ||||
| } | ||||
|  | ||||
| // Writes an AMFStringValue to BitStream | ||||
| template<> | ||||
| void RakNet::BitStream::Write<AMFStringValue&>(AMFStringValue& value) { | ||||
| 	WriteAMFString(this, value.GetValue()); | ||||
| 	WriteAMFString(*this, value.GetValue()); | ||||
| } | ||||
|  | ||||
| // Writes an AMFArrayValue to BitStream | ||||
| template<> | ||||
| void RakNet::BitStream::Write<AMFArrayValue&>(AMFArrayValue& value) { | ||||
| 	uint32_t denseSize = value.GetDense().size(); | ||||
| 	WriteFlagNumber(this, denseSize); | ||||
| 	WriteFlagNumber(*this, denseSize); | ||||
|  | ||||
| 	auto it = value.GetAssociative().begin(); | ||||
| 	auto end = value.GetAssociative().end(); | ||||
|  | ||||
| 	while (it != end) { | ||||
| 		WriteAMFString(this, it->first); | ||||
| 		WriteAMFString(*this, it->first); | ||||
| 		this->Write<AMFBaseValue&>(*it->second); | ||||
| 		it++; | ||||
| 	} | ||||
|   | ||||
| @@ -278,14 +278,14 @@ std::vector<std::string> GeneralUtils::SplitString(const std::string& str, char | ||||
| 	return vector; | ||||
| } | ||||
|  | ||||
| std::u16string GeneralUtils::ReadWString(RakNet::BitStream* inStream) { | ||||
| std::u16string GeneralUtils::ReadWString(RakNet::BitStream& inStream) { | ||||
| 	uint32_t length; | ||||
| 	inStream->Read<uint32_t>(length); | ||||
| 	inStream.Read<uint32_t>(length); | ||||
|  | ||||
| 	std::u16string string; | ||||
| 	for (auto i = 0; i < length; i++) { | ||||
| 		uint16_t c; | ||||
| 		inStream->Read(c); | ||||
| 		inStream.Read(c); | ||||
| 		string.push_back(c); | ||||
| 	} | ||||
|  | ||||
| @@ -294,28 +294,50 @@ std::u16string GeneralUtils::ReadWString(RakNet::BitStream* inStream) { | ||||
|  | ||||
| std::vector<std::string> GeneralUtils::GetSqlFileNamesFromFolder(const std::string& folder) { | ||||
| 	// Because we dont know how large the initial number before the first _ is we need to make it a map like so. | ||||
|     std::map<uint32_t, std::string> filenames{}; | ||||
| 	std::map<uint32_t, std::string> filenames{}; | ||||
| 	for (auto& t : std::filesystem::directory_iterator(folder)) { | ||||
|         auto filename = t.path().filename().string(); | ||||
|         auto index = std::stoi(GeneralUtils::SplitString(filename, '_').at(0)); | ||||
|         filenames.insert(std::make_pair(index, filename)); | ||||
| 		auto filename = t.path().filename().string(); | ||||
| 		auto index = std::stoi(GeneralUtils::SplitString(filename, '_').at(0)); | ||||
| 		filenames.insert(std::make_pair(index, filename)); | ||||
| 	} | ||||
|  | ||||
| 	// Now sort the map by the oldest migration. | ||||
| 	std::vector<std::string> sortedFiles{}; | ||||
|     auto fileIterator = filenames.begin(); | ||||
|     std::map<uint32_t, std::string>::iterator oldest = filenames.begin(); | ||||
|     while (!filenames.empty()) { | ||||
| 	auto fileIterator = filenames.begin(); | ||||
| 	std::map<uint32_t, std::string>::iterator oldest = filenames.begin(); | ||||
| 	while (!filenames.empty()) { | ||||
| 		if (fileIterator == filenames.end()) { | ||||
|             sortedFiles.push_back(oldest->second); | ||||
|             filenames.erase(oldest); | ||||
|             fileIterator = filenames.begin(); | ||||
|             oldest = filenames.begin(); | ||||
|             continue; | ||||
| 			sortedFiles.push_back(oldest->second); | ||||
| 			filenames.erase(oldest); | ||||
| 			fileIterator = filenames.begin(); | ||||
| 			oldest = filenames.begin(); | ||||
| 			continue; | ||||
| 		} | ||||
|         if (oldest->first > fileIterator->first) oldest = fileIterator; | ||||
|         fileIterator++; | ||||
| 		if (oldest->first > fileIterator->first) oldest = fileIterator; | ||||
| 		fileIterator++; | ||||
| 	} | ||||
|  | ||||
| 	return sortedFiles; | ||||
| } | ||||
|  | ||||
| #ifdef DARKFLAME_PLATFORM_MACOS | ||||
|  | ||||
| // MacOS floating-point parse function specializations | ||||
| namespace GeneralUtils::details { | ||||
| 	template <> | ||||
| 	[[nodiscard]] float _parse<float>(const std::string_view str, size_t& parseNum) { | ||||
| 		return std::stof(std::string{ str }, &parseNum); | ||||
| 	} | ||||
|  | ||||
| 	template <> | ||||
| 	[[nodiscard]] double _parse<double>(const std::string_view str, size_t& parseNum) { | ||||
| 		return std::stod(std::string{ str }, &parseNum); | ||||
| 	} | ||||
|  | ||||
| 	template <> | ||||
| 	[[nodiscard]] long double _parse<long double>(const std::string_view str, size_t& parseNum) { | ||||
| 		return std::stold(std::string{ str }, &parseNum); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -116,7 +116,7 @@ namespace GeneralUtils { | ||||
|  | ||||
| 	bool ReplaceInString(std::string& str, const std::string& from, const std::string& to); | ||||
|  | ||||
| 	std::u16string ReadWString(RakNet::BitStream* inStream); | ||||
| 	std::u16string ReadWString(RakNet::BitStream& inStream); | ||||
|  | ||||
| 	std::vector<std::wstring> SplitString(std::wstring& str, wchar_t delimiter); | ||||
|  | ||||
| @@ -168,25 +168,10 @@ namespace GeneralUtils { | ||||
|  | ||||
| #ifdef DARKFLAME_PLATFORM_MACOS | ||||
|  | ||||
| 	// Anonymous namespace containing MacOS floating-point parse function specializations | ||||
| 	namespace { | ||||
| 	// MacOS floating-point parse helper function specializations | ||||
| 	namespace details { | ||||
| 		template <std::floating_point T> | ||||
| 		[[nodiscard]] T Parse(const std::string_view str, size_t* parseNum); | ||||
|  | ||||
| 		template <> | ||||
| 		[[nodiscard]] float Parse<float>(const std::string_view str, size_t* parseNum) { | ||||
| 			return std::stof(std::string{ str }, parseNum); | ||||
| 		} | ||||
|  | ||||
| 		template <> | ||||
| 		[[nodiscard]] double Parse<double>(const std::string_view str, size_t* parseNum) { | ||||
| 			return std::stod(std::string{ str }, parseNum); | ||||
| 		} | ||||
|  | ||||
| 		template <> | ||||
| 		[[nodiscard]] long double Parse<long double>(const std::string_view str, size_t* parseNum) { | ||||
| 			return std::stold(std::string{ str }, parseNum); | ||||
| 		} | ||||
| 		[[nodiscard]] T _parse(const std::string_view str, size_t& parseNum); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -196,9 +181,10 @@ namespace GeneralUtils { | ||||
| 	 * @returns An std::optional containing the desired value if it is equivalent to the string | ||||
| 	*/ | ||||
| 	template <std::floating_point T> | ||||
| 	[[nodiscard]] std::optional<T> TryParse(const std::string_view str) noexcept try { | ||||
| 	[[nodiscard]] std::optional<T> TryParse(const std::string_view str) noexcept | ||||
| 	try { | ||||
| 		size_t parseNum; | ||||
| 		const T result = Parse<T>(str, &parseNum); | ||||
| 		const T result = details::_parse<T>(str, parseNum); | ||||
| 		const bool isParsed = str.length() == parseNum; | ||||
|  | ||||
| 		return isParsed ? result : std::optional<T>{}; | ||||
|   | ||||
| @@ -31,7 +31,7 @@ public: | ||||
|  | ||||
| 	virtual ~LDFBaseData() {} | ||||
|  | ||||
| 	virtual void WriteToPacket(RakNet::BitStream* packet) = 0; | ||||
| 	virtual void WriteToPacket(RakNet::BitStream& packet) = 0; | ||||
|  | ||||
| 	virtual const std::u16string& GetKey() = 0; | ||||
|  | ||||
| @@ -62,17 +62,17 @@ private: | ||||
| 	T value; | ||||
|  | ||||
| 	//! Writes the key to the packet | ||||
| 	void WriteKey(RakNet::BitStream* packet) { | ||||
| 		packet->Write<uint8_t>(this->key.length() * sizeof(uint16_t)); | ||||
| 	void WriteKey(RakNet::BitStream& packet) { | ||||
| 		packet.Write<uint8_t>(this->key.length() * sizeof(uint16_t)); | ||||
| 		for (uint32_t i = 0; i < this->key.length(); ++i) { | ||||
| 			packet->Write<uint16_t>(this->key[i]); | ||||
| 			packet.Write<uint16_t>(this->key[i]); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	//! Writes the value to the packet | ||||
| 	void WriteValue(RakNet::BitStream* packet) { | ||||
| 		packet->Write<uint8_t>(this->GetValueType()); | ||||
| 		packet->Write(this->value); | ||||
| 	void WriteValue(RakNet::BitStream& packet) { | ||||
| 		packet.Write<uint8_t>(this->GetValueType()); | ||||
| 		packet.Write(this->value); | ||||
| 	} | ||||
|  | ||||
| public: | ||||
| @@ -108,7 +108,7 @@ public: | ||||
| 	/*! | ||||
| 	  \param packet The packet | ||||
| 	 */ | ||||
| 	void WriteToPacket(RakNet::BitStream* packet) override { | ||||
| 	void WriteToPacket(RakNet::BitStream& packet) override { | ||||
| 		this->WriteKey(packet); | ||||
| 		this->WriteValue(packet); | ||||
| 	} | ||||
| @@ -178,31 +178,31 @@ template<> inline eLDFType LDFData<std::string>::GetValueType(void) { return LDF | ||||
|  | ||||
| // The specialized version for std::u16string (UTF-16) | ||||
| template<> | ||||
| inline void LDFData<std::u16string>::WriteValue(RakNet::BitStream* packet) { | ||||
| 	packet->Write<uint8_t>(this->GetValueType()); | ||||
| inline void LDFData<std::u16string>::WriteValue(RakNet::BitStream& packet) { | ||||
| 	packet.Write<uint8_t>(this->GetValueType()); | ||||
|  | ||||
| 	packet->Write<uint32_t>(this->value.length()); | ||||
| 	packet.Write<uint32_t>(this->value.length()); | ||||
| 	for (uint32_t i = 0; i < this->value.length(); ++i) { | ||||
| 		packet->Write<uint16_t>(this->value[i]); | ||||
| 		packet.Write<uint16_t>(this->value[i]); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // The specialized version for bool | ||||
| template<> | ||||
| inline void LDFData<bool>::WriteValue(RakNet::BitStream* packet) { | ||||
| 	packet->Write<uint8_t>(this->GetValueType()); | ||||
| inline void LDFData<bool>::WriteValue(RakNet::BitStream& packet) { | ||||
| 	packet.Write<uint8_t>(this->GetValueType()); | ||||
|  | ||||
| 	packet->Write<uint8_t>(this->value); | ||||
| 	packet.Write<uint8_t>(this->value); | ||||
| } | ||||
|  | ||||
| // The specialized version for std::string (UTF-8) | ||||
| template<> | ||||
| inline void LDFData<std::string>::WriteValue(RakNet::BitStream* packet) { | ||||
| 	packet->Write<uint8_t>(this->GetValueType()); | ||||
| inline void LDFData<std::string>::WriteValue(RakNet::BitStream& packet) { | ||||
| 	packet.Write<uint8_t>(this->GetValueType()); | ||||
|  | ||||
| 	packet->Write<uint32_t>(this->value.length()); | ||||
| 	packet.Write<uint32_t>(this->value.length()); | ||||
| 	for (uint32_t i = 0; i < this->value.length(); ++i) { | ||||
| 		packet->Write<uint8_t>(this->value[i]); | ||||
| 		packet.Write<uint8_t>(this->value[i]); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -34,8 +34,8 @@ constexpr uint32_t lowFrameDelta = FRAMES_TO_MS(lowFramerate); | ||||
| #define CINSTREAM RakNet::BitStream inStream(packet->data, packet->length, false); | ||||
| #define CINSTREAM_SKIP_HEADER CINSTREAM if (inStream.GetNumberOfUnreadBits() >= BYTES_TO_BITS(HEADER_SIZE)) inStream.IgnoreBytes(HEADER_SIZE); else inStream.IgnoreBits(inStream.GetNumberOfUnreadBits()); | ||||
| #define CMSGHEADER BitStreamUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::GAME_MSG); | ||||
| #define SEND_PACKET Game::server->Send(&bitStream, sysAddr, false); | ||||
| #define SEND_PACKET_BROADCAST Game::server->Send(&bitStream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| #define SEND_PACKET Game::server->Send(bitStream, sysAddr, false); | ||||
| #define SEND_PACKET_BROADCAST Game::server->Send(bitStream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
|  | ||||
| //=========== TYPEDEFS ========== | ||||
|  | ||||
|   | ||||
| @@ -106,7 +106,7 @@ enum class eReplicaComponentType : uint32_t { | ||||
| 	INTERACTION_MANAGER, | ||||
| 	DONATION_VENDOR, | ||||
| 	COMBAT_MEDIATOR, | ||||
| 	COMMENDATION_VENDOR, | ||||
| 	ACHIEVEMENT_VENDOR, | ||||
| 	GATE_RUSH_CONTROL, | ||||
| 	RAIL_ACTIVATOR, | ||||
| 	ROLLER, | ||||
|   | ||||
							
								
								
									
										15
									
								
								dCommon/dEnums/eVendorTransactionResult.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								dCommon/dEnums/eVendorTransactionResult.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| #ifndef __EVENDORTRANSACTIONRESULT__ | ||||
| #define __EVENDORTRANSACTIONRESULT__ | ||||
|  | ||||
| #include <cstdint> | ||||
|  | ||||
| enum class eVendorTransactionResult : uint32_t { | ||||
| 	SELL_SUCCESS = 0, | ||||
| 	SELL_FAIL, | ||||
| 	PURCHASE_SUCCESS, | ||||
| 	PURCHASE_FAIL, | ||||
| 	DONATION_FAIL, | ||||
| 	DONATION_FULL | ||||
| }; | ||||
|  | ||||
| #endif // !__EVENDORTRANSACTIONRESULT__ | ||||
| @@ -79,7 +79,6 @@ void CDMissionsTable::LoadValuesFromDatabase() { | ||||
| 		entries.push_back(entry); | ||||
| 		tableData.nextRow(); | ||||
| 	} | ||||
|  | ||||
| 	tableData.finalize(); | ||||
|  | ||||
| 	Default.id = -1; | ||||
| @@ -118,3 +117,12 @@ const CDMissions& CDMissionsTable::GetByMissionID(uint32_t missionID, bool& foun | ||||
| 	return Default; | ||||
| } | ||||
|  | ||||
| const std::set<int32_t> CDMissionsTable::GetMissionsForReward(LOT lot) { | ||||
| 	std::set<int32_t> toReturn {}; | ||||
| 	for (const auto& entry : GetEntries()) { | ||||
| 		if (lot == entry.reward_item1 || lot == entry.reward_item2 || lot == entry.reward_item3 || lot == entry.reward_item4) { | ||||
| 			toReturn.insert(entry.id); | ||||
| 		} | ||||
| 	} | ||||
| 	return toReturn; | ||||
| } | ||||
|   | ||||
| @@ -70,6 +70,9 @@ public: | ||||
|  | ||||
| 	const CDMissions& GetByMissionID(uint32_t missionID, bool& found) const; | ||||
|  | ||||
| 	const std::set<int32_t> GetMissionsForReward(LOT lot); | ||||
|  | ||||
|  | ||||
| 	static CDMissions Default; | ||||
| }; | ||||
|  | ||||
|   | ||||
							
								
								
									
										110
									
								
								dGame/Entity.cpp
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								dGame/Entity.cpp
									
									
									
									
									
								
							| @@ -82,6 +82,7 @@ | ||||
| #include "CollectibleComponent.h" | ||||
| #include "ItemComponent.h" | ||||
| #include "GhostComponent.h" | ||||
| #include "AchievementVendorComponent.h" | ||||
|  | ||||
| // Table includes | ||||
| #include "CDComponentsRegistryTable.h" | ||||
| @@ -615,6 +616,8 @@ void Entity::Initialize() { | ||||
| 		AddComponent<VendorComponent>(); | ||||
| 	} else if ((compRegistryTable->GetByIDAndType(m_TemplateID, eReplicaComponentType::DONATION_VENDOR, -1) != -1)) { | ||||
| 		AddComponent<DonationVendorComponent>(); | ||||
| 	} else if ((compRegistryTable->GetByIDAndType(m_TemplateID, eReplicaComponentType::ACHIEVEMENT_VENDOR, -1) != -1)) { | ||||
| 		AddComponent<AchievementVendorComponent>(); | ||||
| 	} | ||||
|  | ||||
| 	if (compRegistryTable->GetByIDAndType(m_TemplateID, eReplicaComponentType::PROPERTY_VENDOR, -1) != -1) { | ||||
| @@ -896,34 +899,34 @@ void Entity::SetGMLevel(eGameMasterLevel value) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacketType packetType) { | ||||
| void Entity::WriteBaseReplicaData(RakNet::BitStream& outBitStream, eReplicaPacketType packetType) { | ||||
| 	if (packetType == eReplicaPacketType::CONSTRUCTION) { | ||||
| 		outBitStream->Write(m_ObjectID); | ||||
| 		outBitStream->Write(m_TemplateID); | ||||
| 		outBitStream.Write(m_ObjectID); | ||||
| 		outBitStream.Write(m_TemplateID); | ||||
|  | ||||
| 		if (IsPlayer()) { | ||||
| 			std::string name = m_Character != nullptr ? m_Character->GetName() : "Invalid"; | ||||
| 			outBitStream->Write<uint8_t>(uint8_t(name.size())); | ||||
| 			outBitStream.Write<uint8_t>(uint8_t(name.size())); | ||||
|  | ||||
| 			for (size_t i = 0; i < name.size(); ++i) { | ||||
| 				outBitStream->Write<uint16_t>(name[i]); | ||||
| 				outBitStream.Write<uint16_t>(name[i]); | ||||
| 			} | ||||
| 		} else { | ||||
| 			const auto& name = GetVar<std::string>(u"npcName"); | ||||
| 			outBitStream->Write<uint8_t>(uint8_t(name.size())); | ||||
| 			outBitStream.Write<uint8_t>(uint8_t(name.size())); | ||||
|  | ||||
| 			for (size_t i = 0; i < name.size(); ++i) { | ||||
| 				outBitStream->Write<uint16_t>(name[i]); | ||||
| 				outBitStream.Write<uint16_t>(name[i]); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		outBitStream->Write<uint32_t>(0); //Time since created on server | ||||
| 		outBitStream.Write<uint32_t>(0); //Time since created on server | ||||
|  | ||||
| 		const auto& syncLDF = GetVar<std::vector<std::u16string>>(u"syncLDF"); | ||||
|  | ||||
| 		// Only sync for models. | ||||
| 		if (m_Settings.size() > 0 && (GetComponent<ModelComponent>() && !GetComponent<PetComponent>())) { | ||||
| 			outBitStream->Write1(); //ldf data | ||||
| 			outBitStream.Write1(); //ldf data | ||||
|  | ||||
| 			RakNet::BitStream settingStream; | ||||
| 			int32_t numberOfValidKeys = m_Settings.size(); | ||||
| @@ -940,13 +943,13 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke | ||||
|  | ||||
| 			for (LDFBaseData* data : m_Settings) { | ||||
| 				if (data && data->GetValueType() != eLDFType::LDF_TYPE_UNKNOWN) { | ||||
| 					data->WriteToPacket(&settingStream); | ||||
| 					data->WriteToPacket(settingStream); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			outBitStream->Write(settingStream.GetNumberOfBytesUsed() + 1); | ||||
| 			outBitStream->Write<uint8_t>(0); //no compression used | ||||
| 			outBitStream->Write(settingStream); | ||||
| 			outBitStream.Write(settingStream.GetNumberOfBytesUsed() + 1); | ||||
| 			outBitStream.Write<uint8_t>(0); //no compression used | ||||
| 			outBitStream.Write(settingStream); | ||||
| 		} else if (!syncLDF.empty()) { | ||||
| 			std::vector<LDFBaseData*> ldfData; | ||||
|  | ||||
| @@ -954,79 +957,79 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke | ||||
| 				ldfData.push_back(GetVarData(data)); | ||||
| 			} | ||||
|  | ||||
| 			outBitStream->Write1(); //ldf data | ||||
| 			outBitStream.Write1(); //ldf data | ||||
|  | ||||
| 			RakNet::BitStream settingStream; | ||||
| 			settingStream.Write<uint32_t>(ldfData.size()); | ||||
| 			for (LDFBaseData* data : ldfData) { | ||||
| 				if (data) { | ||||
| 					data->WriteToPacket(&settingStream); | ||||
| 					data->WriteToPacket(settingStream); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			outBitStream->Write(settingStream.GetNumberOfBytesUsed() + 1); | ||||
| 			outBitStream->Write<uint8_t>(0); //no compression used | ||||
| 			outBitStream->Write(settingStream); | ||||
| 			outBitStream.Write(settingStream.GetNumberOfBytesUsed() + 1); | ||||
| 			outBitStream.Write<uint8_t>(0); //no compression used | ||||
| 			outBitStream.Write(settingStream); | ||||
| 		} else { | ||||
| 			outBitStream->Write0(); //No ldf data | ||||
| 			outBitStream.Write0(); //No ldf data | ||||
| 		} | ||||
|  | ||||
| 		TriggerComponent* triggerComponent; | ||||
| 		if (TryGetComponent(eReplicaComponentType::TRIGGER, triggerComponent)) { | ||||
| 			// has trigger component, check to see if we have events to handle | ||||
| 			auto* trigger = triggerComponent->GetTrigger(); | ||||
| 			outBitStream->Write<bool>(trigger && trigger->events.size() > 0); | ||||
| 			outBitStream.Write<bool>(trigger && trigger->events.size() > 0); | ||||
| 		} else { // no trigger componenet, so definitely no triggers | ||||
| 			outBitStream->Write0(); | ||||
| 			outBitStream.Write0(); | ||||
| 		} | ||||
|  | ||||
|  | ||||
| 		if (m_ParentEntity != nullptr || m_SpawnerID != 0) { | ||||
| 			outBitStream->Write1(); | ||||
| 			if (m_ParentEntity != nullptr) outBitStream->Write(GeneralUtils::SetBit(m_ParentEntity->GetObjectID(), static_cast<uint32_t>(eObjectBits::CLIENT))); | ||||
| 			else if (m_Spawner != nullptr && m_Spawner->m_Info.isNetwork) outBitStream->Write(m_SpawnerID); | ||||
| 			else outBitStream->Write(GeneralUtils::SetBit(m_SpawnerID, static_cast<uint32_t>(eObjectBits::CLIENT))); | ||||
| 		} else outBitStream->Write0(); | ||||
| 			outBitStream.Write1(); | ||||
| 			if (m_ParentEntity != nullptr) outBitStream.Write(GeneralUtils::SetBit(m_ParentEntity->GetObjectID(), static_cast<uint32_t>(eObjectBits::CLIENT))); | ||||
| 			else if (m_Spawner != nullptr && m_Spawner->m_Info.isNetwork) outBitStream.Write(m_SpawnerID); | ||||
| 			else outBitStream.Write(GeneralUtils::SetBit(m_SpawnerID, static_cast<uint32_t>(eObjectBits::CLIENT))); | ||||
| 		} else outBitStream.Write0(); | ||||
|  | ||||
| 		outBitStream->Write(m_HasSpawnerNodeID); | ||||
| 		if (m_HasSpawnerNodeID) outBitStream->Write(m_SpawnerNodeID); | ||||
| 		outBitStream.Write(m_HasSpawnerNodeID); | ||||
| 		if (m_HasSpawnerNodeID) outBitStream.Write(m_SpawnerNodeID); | ||||
|  | ||||
| 		//outBitStream->Write0(); //Spawner node id | ||||
| 		//outBitStream.Write0(); //Spawner node id | ||||
|  | ||||
| 		if (m_Scale == 1.0f || m_Scale == 0.0f) outBitStream->Write0(); | ||||
| 		if (m_Scale == 1.0f || m_Scale == 0.0f) outBitStream.Write0(); | ||||
| 		else { | ||||
| 			outBitStream->Write1(); | ||||
| 			outBitStream->Write(m_Scale); | ||||
| 			outBitStream.Write1(); | ||||
| 			outBitStream.Write(m_Scale); | ||||
| 		} | ||||
|  | ||||
| 		outBitStream->Write0(); //ObjectWorldState | ||||
| 		outBitStream.Write0(); //ObjectWorldState | ||||
|  | ||||
| 		if (m_GMLevel != eGameMasterLevel::CIVILIAN) { | ||||
| 			outBitStream->Write1(); | ||||
| 			outBitStream->Write(m_GMLevel); | ||||
| 		} else outBitStream->Write0(); //No GM Level | ||||
| 			outBitStream.Write1(); | ||||
| 			outBitStream.Write(m_GMLevel); | ||||
| 		} else outBitStream.Write0(); //No GM Level | ||||
| 	} | ||||
|  | ||||
| 	// Only serialize parent / child info should the info be dirty (changed) or if this is the construction of the entity. | ||||
| 	outBitStream->Write(m_IsParentChildDirty || packetType == eReplicaPacketType::CONSTRUCTION); | ||||
| 	outBitStream.Write(m_IsParentChildDirty || packetType == eReplicaPacketType::CONSTRUCTION); | ||||
| 	if (m_IsParentChildDirty || packetType == eReplicaPacketType::CONSTRUCTION) { | ||||
| 		m_IsParentChildDirty = false; | ||||
| 		outBitStream->Write(m_ParentEntity != nullptr); | ||||
| 		outBitStream.Write(m_ParentEntity != nullptr); | ||||
| 		if (m_ParentEntity) { | ||||
| 			outBitStream->Write(m_ParentEntity->GetObjectID()); | ||||
| 			outBitStream->Write0(); | ||||
| 			outBitStream.Write(m_ParentEntity->GetObjectID()); | ||||
| 			outBitStream.Write0(); | ||||
| 		} | ||||
| 		outBitStream->Write(m_ChildEntities.size() > 0); | ||||
| 		outBitStream.Write(m_ChildEntities.size() > 0); | ||||
| 		if (m_ChildEntities.size() > 0) { | ||||
| 			outBitStream->Write<uint16_t>(m_ChildEntities.size()); | ||||
| 			outBitStream.Write<uint16_t>(m_ChildEntities.size()); | ||||
| 			for (Entity* child : m_ChildEntities) { | ||||
| 				outBitStream->Write<uint64_t>(child->GetObjectID()); | ||||
| 				outBitStream.Write<uint64_t>(child->GetObjectID()); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType packetType) { | ||||
| void Entity::WriteComponents(RakNet::BitStream& outBitStream, eReplicaPacketType packetType) { | ||||
|  | ||||
| 	/** | ||||
| 	 * This has to be done in a specific order. | ||||
| @@ -1114,7 +1117,7 @@ void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType | ||||
| 			possessorComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| 		} else { | ||||
| 			// Should never happen, but just to be safe | ||||
| 			outBitStream->Write0(); | ||||
| 			outBitStream.Write0(); | ||||
| 		} | ||||
|  | ||||
| 		LevelProgressionComponent* levelProgressionComponent; | ||||
| @@ -1122,7 +1125,7 @@ void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType | ||||
| 			levelProgressionComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| 		} else { | ||||
| 			// Should never happen, but just to be safe | ||||
| 			outBitStream->Write0(); | ||||
| 			outBitStream.Write0(); | ||||
| 		} | ||||
|  | ||||
| 		PlayerForcedMovementComponent* playerForcedMovementComponent; | ||||
| @@ -1130,7 +1133,7 @@ void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType | ||||
| 			playerForcedMovementComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| 		} else { | ||||
| 			// Should never happen, but just to be safe | ||||
| 			outBitStream->Write0(); | ||||
| 			outBitStream.Write0(); | ||||
| 		} | ||||
|  | ||||
| 		characterComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| @@ -1191,6 +1194,11 @@ void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType | ||||
| 		donationVendorComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| 	} | ||||
|  | ||||
| 	AchievementVendorComponent* achievementVendorComponent; | ||||
| 	if (TryGetComponent(eReplicaComponentType::ACHIEVEMENT_VENDOR, achievementVendorComponent)) { | ||||
| 		achievementVendorComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| 	} | ||||
|  | ||||
| 	BouncerComponent* bouncerComponent; | ||||
| 	if (TryGetComponent(eReplicaComponentType::BOUNCER, bouncerComponent)) { | ||||
| 		bouncerComponent->Serialize(outBitStream, bIsInitialUpdate); | ||||
| @@ -1242,7 +1250,7 @@ void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType | ||||
| 	// BBB Component, unused currently | ||||
| 	// Need to to write0 so that is serialized correctly | ||||
| 	// TODO: Implement BBB Component | ||||
| 	outBitStream->Write0(); | ||||
| 	outBitStream.Write0(); | ||||
| } | ||||
|  | ||||
| void Entity::UpdateXMLDoc(tinyxml2::XMLDocument* doc) { | ||||
| @@ -2189,3 +2197,9 @@ void Entity::SetRespawnRot(const NiQuaternion& rotation) { | ||||
| 	auto* characterComponent = GetComponent<CharacterComponent>(); | ||||
| 	if (characterComponent) characterComponent->SetRespawnRot(rotation); | ||||
| } | ||||
|  | ||||
| void Entity::SetScale(const float scale) { | ||||
| 	if (scale == m_Scale) return; | ||||
| 	m_Scale = scale; | ||||
| 	Game::entityManager->SerializeEntity(this); | ||||
| } | ||||
| @@ -171,8 +171,8 @@ public: | ||||
|  | ||||
| 	std::unordered_map<eReplicaComponentType, Component*>& GetComponents() { return m_Components; } // TODO: Remove | ||||
|  | ||||
| 	void WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacketType packetType); | ||||
| 	void WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType packetType); | ||||
| 	void WriteBaseReplicaData(RakNet::BitStream& outBitStream, eReplicaPacketType packetType); | ||||
| 	void WriteComponents(RakNet::BitStream& outBitStream, eReplicaPacketType packetType); | ||||
| 	void UpdateXMLDoc(tinyxml2::XMLDocument* doc); | ||||
| 	void Update(float deltaTime); | ||||
|  | ||||
| @@ -295,6 +295,8 @@ public: | ||||
|  | ||||
| 	void ProcessPositionUpdate(PositionUpdate& update); | ||||
|  | ||||
| 	void SetScale(const float scale); | ||||
|  | ||||
| protected: | ||||
| 	LWOOBJID m_ObjectID; | ||||
|  | ||||
|   | ||||
| @@ -178,18 +178,18 @@ void EntityManager::SerializeEntities() { | ||||
| 		stream.Write<char>(ID_REPLICA_MANAGER_SERIALIZE); | ||||
| 		stream.Write<unsigned short>(entity->GetNetworkId()); | ||||
|  | ||||
| 		entity->WriteBaseReplicaData(&stream, eReplicaPacketType::SERIALIZATION); | ||||
| 		entity->WriteComponents(&stream, eReplicaPacketType::SERIALIZATION); | ||||
| 		entity->WriteBaseReplicaData(stream, eReplicaPacketType::SERIALIZATION); | ||||
| 		entity->WriteComponents(stream, eReplicaPacketType::SERIALIZATION); | ||||
|  | ||||
| 		if (entity->GetIsGhostingCandidate()) { | ||||
| 			for (auto* player : PlayerManager::GetAllPlayers()) { | ||||
| 				auto* ghostComponent = player->GetComponent<GhostComponent>(); | ||||
| 				if (ghostComponent && ghostComponent->IsObserved(toSerialize)) { | ||||
| 					Game::server->Send(&stream, player->GetSystemAddress(), false); | ||||
| 					Game::server->Send(stream, player->GetSystemAddress(), false); | ||||
| 				} | ||||
| 			} | ||||
| 		} else { | ||||
| 			Game::server->Send(&stream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 			Game::server->Send(stream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 		} | ||||
| 	} | ||||
| 	m_EntitiesToSerialize.clear(); | ||||
| @@ -359,16 +359,16 @@ void EntityManager::ConstructEntity(Entity* entity, const SystemAddress& sysAddr | ||||
| 	stream.Write(true); | ||||
| 	stream.Write<uint16_t>(entity->GetNetworkId()); | ||||
|  | ||||
| 	entity->WriteBaseReplicaData(&stream, eReplicaPacketType::CONSTRUCTION); | ||||
| 	entity->WriteComponents(&stream, eReplicaPacketType::CONSTRUCTION); | ||||
| 	entity->WriteBaseReplicaData(stream, eReplicaPacketType::CONSTRUCTION); | ||||
| 	entity->WriteComponents(stream, eReplicaPacketType::CONSTRUCTION); | ||||
|  | ||||
| 	if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) { | ||||
| 		if (skipChecks) { | ||||
| 			Game::server->Send(&stream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 			Game::server->Send(stream, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 		} else { | ||||
| 			for (auto* player : PlayerManager::GetAllPlayers()) { | ||||
| 				if (player->GetPlayerReadyForUpdates()) { | ||||
| 					Game::server->Send(&stream, player->GetSystemAddress(), false); | ||||
| 					Game::server->Send(stream, player->GetSystemAddress(), false); | ||||
| 				} else { | ||||
| 					auto* ghostComponent = player->GetComponent<GhostComponent>(); | ||||
| 					if (ghostComponent) ghostComponent->AddLimboConstruction(entity->GetObjectID()); | ||||
| @@ -376,7 +376,7 @@ void EntityManager::ConstructEntity(Entity* entity, const SystemAddress& sysAddr | ||||
| 			} | ||||
| 		} | ||||
| 	} else { | ||||
| 		Game::server->Send(&stream, sysAddr, false); | ||||
| 		Game::server->Send(stream, sysAddr, false); | ||||
| 	} | ||||
|  | ||||
| 	if (entity->IsPlayer()) { | ||||
| @@ -407,7 +407,7 @@ void EntityManager::DestructEntity(Entity* entity, const SystemAddress& sysAddr) | ||||
| 	stream.Write<uint8_t>(ID_REPLICA_MANAGER_DESTRUCTION); | ||||
| 	stream.Write<uint16_t>(entity->GetNetworkId()); | ||||
|  | ||||
| 	Game::server->Send(&stream, sysAddr, sysAddr == UNASSIGNED_SYSTEM_ADDRESS); | ||||
| 	Game::server->Send(stream, sysAddr, sysAddr == UNASSIGNED_SYSTEM_ADDRESS); | ||||
|  | ||||
| 	for (auto* player : PlayerManager::GetAllPlayers()) { | ||||
| 		if (!player->GetPlayerReadyForUpdates()) { | ||||
| @@ -575,13 +575,13 @@ void EntityManager::ScheduleForKill(Entity* entity) { | ||||
|  | ||||
| 	const auto objectId = entity->GetObjectID(); | ||||
|  | ||||
| 	if (std::find(m_EntitiesToKill.begin(), m_EntitiesToKill.end(), objectId) != m_EntitiesToKill.end()) { | ||||
| 	if (std::find(m_EntitiesToKill.begin(), m_EntitiesToKill.end(), objectId) == m_EntitiesToKill.end()) { | ||||
| 		m_EntitiesToKill.push_back(objectId); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void EntityManager::ScheduleForDeletion(LWOOBJID entity) { | ||||
| 	if (std::find(m_EntitiesToDelete.begin(), m_EntitiesToDelete.end(), entity) != m_EntitiesToDelete.end()) { | ||||
| 	if (std::find(m_EntitiesToDelete.begin(), m_EntitiesToDelete.end(), entity) == m_EntitiesToDelete.end()) { | ||||
| 		m_EntitiesToDelete.push_back(entity); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -43,9 +43,9 @@ inline void WriteLeaderboardRow(std::ostringstream& leaderboard, const uint32_t& | ||||
| 	leaderboard << "\nResult[0].Row[" << index << "]." << data->GetString(); | ||||
| } | ||||
|  | ||||
| void Leaderboard::Serialize(RakNet::BitStream* bitStream) const { | ||||
| 	bitStream->Write(gameID); | ||||
| 	bitStream->Write(infoType); | ||||
| void Leaderboard::Serialize(RakNet::BitStream& bitStream) const { | ||||
| 	bitStream.Write(gameID); | ||||
| 	bitStream.Write(infoType); | ||||
|  | ||||
| 	std::ostringstream leaderboard; | ||||
|  | ||||
| @@ -64,12 +64,12 @@ void Leaderboard::Serialize(RakNet::BitStream* bitStream) const { | ||||
|  | ||||
| 	// Serialize the thing to a BitStream | ||||
| 	uint32_t leaderboardSize = leaderboard.tellp(); | ||||
| 	bitStream->Write<uint32_t>(leaderboardSize); | ||||
| 	bitStream.Write<uint32_t>(leaderboardSize); | ||||
| 	// Doing this all in 1 call so there is no possbility of a dangling pointer. | ||||
| 	bitStream->WriteAlignedBytes(reinterpret_cast<const unsigned char*>(GeneralUtils::ASCIIToUTF16(leaderboard.str()).c_str()), leaderboardSize * sizeof(char16_t)); | ||||
| 	if (leaderboardSize > 0) bitStream->Write<uint16_t>(0); | ||||
| 	bitStream->Write0(); | ||||
| 	bitStream->Write0(); | ||||
| 	bitStream.WriteAlignedBytes(reinterpret_cast<const unsigned char*>(GeneralUtils::ASCIIToUTF16(leaderboard.str()).c_str()), leaderboardSize * sizeof(char16_t)); | ||||
| 	if (leaderboardSize > 0) bitStream.Write<uint16_t>(0); | ||||
| 	bitStream.Write0(); | ||||
| 	bitStream.Write0(); | ||||
| } | ||||
|  | ||||
| void Leaderboard::QueryToLdf(std::unique_ptr<sql::ResultSet>& rows) { | ||||
|   | ||||
| @@ -88,7 +88,7 @@ public: | ||||
| 	 * | ||||
| 	 * Expensive!  Leaderboards are very string intensive so be wary of performatnce calling this method. | ||||
| 	 */ | ||||
| 	void Serialize(RakNet::BitStream* bitStream) const; | ||||
| 	void Serialize(RakNet::BitStream& bitStream) const; | ||||
|  | ||||
| 	/** | ||||
| 	 * Builds the leaderboard from the database based on the associated gameID | ||||
|   | ||||
| @@ -104,7 +104,7 @@ void Trade::SetAccepted(LWOOBJID participant, bool value) { | ||||
| 		} | ||||
|  | ||||
| 		Complete(); | ||||
| 		TradingManager::Instance()->CancelTrade(m_TradeId); | ||||
| 		TradingManager::Instance()->CancelTrade(LWOOBJID_EMPTY, m_TradeId, false); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -178,14 +178,14 @@ void Trade::Complete() { | ||||
| 	return; | ||||
| } | ||||
|  | ||||
| void Trade::Cancel() { | ||||
| void Trade::Cancel(const LWOOBJID canceller) { | ||||
| 	auto* entityA = GetParticipantAEntity(); | ||||
| 	auto* entityB = GetParticipantBEntity(); | ||||
|  | ||||
| 	if (entityA == nullptr || entityB == nullptr) return; | ||||
|  | ||||
| 	GameMessages::SendServerTradeCancel(entityA->GetObjectID(), entityA->GetSystemAddress()); | ||||
| 	GameMessages::SendServerTradeCancel(entityB->GetObjectID(), entityB->GetSystemAddress()); | ||||
| 	if (entityA->GetObjectID() != canceller || canceller == LWOOBJID_EMPTY) GameMessages::SendServerTradeCancel(entityA->GetObjectID(), entityA->GetSystemAddress()); | ||||
| 	if (entityB->GetObjectID() != canceller || canceller == LWOOBJID_EMPTY) GameMessages::SendServerTradeCancel(entityB->GetObjectID(), entityB->GetSystemAddress()); | ||||
| } | ||||
|  | ||||
| void Trade::SendUpdateToOther(LWOOBJID participant) { | ||||
| @@ -262,11 +262,13 @@ Trade* TradingManager::GetPlayerTrade(LWOOBJID playerId) const { | ||||
| 	return nullptr; | ||||
| } | ||||
|  | ||||
| void TradingManager::CancelTrade(LWOOBJID tradeId) { | ||||
| void TradingManager::CancelTrade(const LWOOBJID canceller, LWOOBJID tradeId, const bool sendCancelMessage) { | ||||
| 	auto* trade = GetTrade(tradeId); | ||||
|  | ||||
| 	if (trade == nullptr) return; | ||||
|  | ||||
| 	if (sendCancelMessage) trade->Cancel(canceller); | ||||
|  | ||||
| 	delete trade; | ||||
|  | ||||
| 	trades.erase(tradeId); | ||||
|   | ||||
| @@ -30,7 +30,7 @@ public: | ||||
| 	void SetAccepted(LWOOBJID participant, bool value); | ||||
|  | ||||
| 	void Complete(); | ||||
| 	void Cancel(); | ||||
| 	void Cancel(const LWOOBJID canceller); | ||||
|  | ||||
| 	void SendUpdateToOther(LWOOBJID participant); | ||||
|  | ||||
| @@ -66,7 +66,7 @@ public: | ||||
|  | ||||
| 	Trade* GetTrade(LWOOBJID tradeId) const; | ||||
| 	Trade* GetPlayerTrade(LWOOBJID playerId) const; | ||||
| 	void CancelTrade(LWOOBJID tradeId); | ||||
| 	void CancelTrade(const LWOOBJID canceller, LWOOBJID tradeId, const bool sendCancelMessage = true); | ||||
| 	Trade* NewTrade(LWOOBJID participantA, LWOOBJID participantB); | ||||
|  | ||||
| private: | ||||
|   | ||||
| @@ -5,35 +5,35 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void AirMovementBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void AirMovementBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	uint32_t handle{}; | ||||
|  | ||||
| 	if (!bitStream->Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	context->RegisterSyncBehavior(handle, this, branch, this->m_Timeout); | ||||
| } | ||||
|  | ||||
| void AirMovementBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void AirMovementBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	const auto handle = context->GetUniqueSkillId(); | ||||
|  | ||||
| 	bitStream->Write(handle); | ||||
| 	bitStream.Write(handle); | ||||
| } | ||||
|  | ||||
| void AirMovementBehavior::Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void AirMovementBehavior::Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	uint32_t behaviorId{}; | ||||
|  | ||||
| 	if (!bitStream->Read(behaviorId)) { | ||||
| 		LOG("Unable to read behaviorId from bitStream, aborting Sync! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(behaviorId)) { | ||||
| 		LOG("Unable to read behaviorId from bitStream, aborting Sync! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	LWOOBJID target{}; | ||||
|  | ||||
| 	if (!bitStream->Read(target)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Sync! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(target)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Sync! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -6,11 +6,11 @@ class AirMovementBehavior final : public Behavior | ||||
| public: | ||||
| 	explicit AirMovementBehavior(const uint32_t behavior_id) : Behavior(behavior_id) {} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| private: | ||||
|   | ||||
| @@ -3,13 +3,13 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void AndBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void AndBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	for (auto* behavior : this->m_behaviors) { | ||||
| 		behavior->Handle(context, bitStream, branch); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void AndBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void AndBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	for (auto* behavior : this->m_behaviors) { | ||||
| 		behavior->Calculate(context, bitStream, branch); | ||||
| 	} | ||||
|   | ||||
| @@ -15,9 +15,9 @@ public: | ||||
| 	explicit AndBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #include "BuffComponent.h" | ||||
|  | ||||
|  | ||||
| void ApplyBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ApplyBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* entity = Game::entityManager->GetEntity(branch.target == LWOOBJID_EMPTY ? context->originator : branch.target); | ||||
|  | ||||
| 	if (entity == nullptr) return; | ||||
| @@ -30,7 +30,7 @@ void ApplyBuffBehavior::UnCast(BehaviorContext* context, BehaviorBranchContext b | ||||
| 	buffComponent->RemoveBuff(m_BuffId); | ||||
| } | ||||
|  | ||||
| void ApplyBuffBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ApplyBuffBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -24,11 +24,11 @@ public: | ||||
| 	explicit ApplyBuffBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| private: | ||||
|   | ||||
| @@ -12,11 +12,11 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void AreaOfEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void AreaOfEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	uint32_t targetCount{}; | ||||
|  | ||||
| 	if (!bitStream->Read(targetCount)) { | ||||
| 		LOG("Unable to read targetCount from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(targetCount)) { | ||||
| 		LOG("Unable to read targetCount from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| @@ -40,7 +40,7 @@ void AreaOfEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream* b | ||||
|  | ||||
| 	for (auto i = 0u; i < targetCount; ++i) { | ||||
| 		LWOOBJID target{}; | ||||
| 		if (!bitStream->Read(target)) { | ||||
| 		if (!bitStream.Read(target)) { | ||||
| 			LOG("failed to read in target %i from bitStream, aborting target Handle!", i); | ||||
| 		}; | ||||
| 		targets.push_back(target); | ||||
| @@ -54,7 +54,7 @@ void AreaOfEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream* b | ||||
| 	PlayFx(u"cast", context->originator); | ||||
| } | ||||
|  | ||||
| void AreaOfEffectBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void AreaOfEffectBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* caster = Game::entityManager->GetEntity(context->caster); | ||||
| 	if (!caster) return; | ||||
|  | ||||
| @@ -83,7 +83,7 @@ void AreaOfEffectBehavior::Calculate(BehaviorContext* context, RakNet::BitStream | ||||
| 	// resize if we have more than max targets allows | ||||
| 	if (targets.size() > this->m_maxTargets) targets.resize(this->m_maxTargets); | ||||
|  | ||||
| 	bitStream->Write<uint32_t>(targets.size()); | ||||
| 	bitStream.Write<uint32_t>(targets.size()); | ||||
|  | ||||
| 	if (targets.size() == 0) { | ||||
| 		PlayFx(u"miss", context->originator); | ||||
| @@ -92,7 +92,7 @@ void AreaOfEffectBehavior::Calculate(BehaviorContext* context, RakNet::BitStream | ||||
| 		context->foundTarget = true; | ||||
| 		// write all the targets to the bitstream | ||||
| 		for (auto* target : targets) { | ||||
| 			bitStream->Write(target->GetObjectID()); | ||||
| 			bitStream.Write(target->GetObjectID()); | ||||
| 		} | ||||
|  | ||||
| 		// then cast all the actions | ||||
|   | ||||
| @@ -6,8 +6,8 @@ class AreaOfEffectBehavior final : public Behavior | ||||
| { | ||||
| public: | ||||
| 	explicit AreaOfEffectBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Load() override; | ||||
| private: | ||||
| 	Behavior* m_action; | ||||
|   | ||||
| @@ -4,11 +4,11 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void AttackDelayBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void AttackDelayBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	uint32_t handle{}; | ||||
|  | ||||
| 	if (!bitStream->Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	}; | ||||
|  | ||||
| @@ -17,10 +17,10 @@ void AttackDelayBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void AttackDelayBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void AttackDelayBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	const auto handle = context->GetUniqueSkillId(); | ||||
|  | ||||
| 	bitStream->Write(handle); | ||||
| 	bitStream.Write(handle); | ||||
|  | ||||
| 	context->foundTarget = true; | ||||
|  | ||||
| @@ -31,11 +31,11 @@ void AttackDelayBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void AttackDelayBehavior::Sync(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void AttackDelayBehavior::Sync(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	this->m_action->Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
| void AttackDelayBehavior::SyncCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void AttackDelayBehavior::SyncCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	PlayFx(u"cast", context->originator); | ||||
|  | ||||
| 	this->m_action->Calculate(context, bitStream, branch); | ||||
|   | ||||
| @@ -19,13 +19,13 @@ public: | ||||
| 	explicit AttackDelayBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void SyncCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void SyncCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| #include "BehaviorContext.h" | ||||
| #include "eBasicAttackSuccessTypes.h" | ||||
|  | ||||
| void BasicAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void BasicAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	if (context->unmanaged) { | ||||
| 		auto* entity = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| @@ -30,22 +30,22 @@ void BasicAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	bitStream->AlignReadToByteBoundary(); | ||||
| 	bitStream.AlignReadToByteBoundary(); | ||||
|  | ||||
| 	uint16_t allocatedBits{}; | ||||
| 	if (!bitStream->Read(allocatedBits) || allocatedBits == 0) { | ||||
| 	if (!bitStream.Read(allocatedBits) || allocatedBits == 0) { | ||||
| 		LOG_DEBUG("No allocated bits"); | ||||
| 		return; | ||||
| 	} | ||||
| 	LOG_DEBUG("Number of allocated bits %i", allocatedBits); | ||||
| 	const auto baseAddress = bitStream->GetReadOffset(); | ||||
| 	const auto baseAddress = bitStream.GetReadOffset(); | ||||
|  | ||||
| 	DoHandleBehavior(context, bitStream, branch); | ||||
|  | ||||
| 	bitStream->SetReadOffset(baseAddress + allocatedBits); | ||||
| 	bitStream.SetReadOffset(baseAddress + allocatedBits); | ||||
| } | ||||
|  | ||||
| void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* targetEntity = Game::entityManager->GetEntity(branch.target); | ||||
| 	if (!targetEntity) { | ||||
| 		LOG("Target targetEntity %llu not found.", branch.target); | ||||
| @@ -62,7 +62,7 @@ void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::Bit | ||||
| 	bool isImmune{}; | ||||
| 	bool isSuccess{}; | ||||
|  | ||||
| 	if (!bitStream->Read(isBlocked)) { | ||||
| 	if (!bitStream.Read(isBlocked)) { | ||||
| 		LOG("Unable to read isBlocked"); | ||||
| 		return; | ||||
| 	} | ||||
| @@ -74,7 +74,7 @@ void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::Bit | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	if (!bitStream->Read(isImmune)) { | ||||
| 	if (!bitStream.Read(isImmune)) { | ||||
| 		LOG("Unable to read isImmune"); | ||||
| 		return; | ||||
| 	} | ||||
| @@ -85,20 +85,20 @@ void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::Bit | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	if (!bitStream->Read(isSuccess)) { | ||||
| 	if (!bitStream.Read(isSuccess)) { | ||||
| 		LOG("failed to read success from bitstream"); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	if (isSuccess) { | ||||
| 		uint32_t armorDamageDealt{}; | ||||
| 		if (!bitStream->Read(armorDamageDealt)) { | ||||
| 		if (!bitStream.Read(armorDamageDealt)) { | ||||
| 			LOG("Unable to read armorDamageDealt"); | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		uint32_t healthDamageDealt{}; | ||||
| 		if (!bitStream->Read(healthDamageDealt)) { | ||||
| 		if (!bitStream.Read(healthDamageDealt)) { | ||||
| 			LOG("Unable to read healthDamageDealt"); | ||||
| 			return; | ||||
| 		} | ||||
| @@ -111,7 +111,7 @@ void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::Bit | ||||
| 		} | ||||
|  | ||||
| 		bool died{}; | ||||
| 		if (!bitStream->Read(died)) { | ||||
| 		if (!bitStream.Read(died)) { | ||||
| 			LOG("Unable to read died"); | ||||
| 			return; | ||||
| 		} | ||||
| @@ -122,7 +122,7 @@ void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::Bit | ||||
| 	} | ||||
|  | ||||
| 	uint8_t successState{}; | ||||
| 	if (!bitStream->Read(successState)) { | ||||
| 	if (!bitStream.Read(successState)) { | ||||
| 		LOG("Unable to read success state"); | ||||
| 		return; | ||||
| 	} | ||||
| @@ -144,26 +144,26 @@ void BasicAttackBehavior::DoHandleBehavior(BehaviorContext* context, RakNet::Bit | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void BasicAttackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| 	bitStream->AlignWriteToByteBoundary(); | ||||
| void BasicAttackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	bitStream.AlignWriteToByteBoundary(); | ||||
|  | ||||
| 	const auto allocatedAddress = bitStream->GetWriteOffset(); | ||||
| 	const auto allocatedAddress = bitStream.GetWriteOffset(); | ||||
|  | ||||
| 	bitStream->Write<uint16_t>(0); | ||||
| 	bitStream.Write<uint16_t>(0); | ||||
|  | ||||
| 	const auto startAddress = bitStream->GetWriteOffset(); | ||||
| 	const auto startAddress = bitStream.GetWriteOffset(); | ||||
|  | ||||
| 	DoBehaviorCalculation(context, bitStream, branch); | ||||
|  | ||||
| 	const auto endAddress = bitStream->GetWriteOffset(); | ||||
| 	const auto endAddress = bitStream.GetWriteOffset(); | ||||
| 	const uint16_t allocate = endAddress - startAddress; | ||||
|  | ||||
| 	bitStream->SetWriteOffset(allocatedAddress); | ||||
| 	bitStream->Write(allocate); | ||||
| 	bitStream->SetWriteOffset(startAddress + allocate); | ||||
| 	bitStream.SetWriteOffset(allocatedAddress); | ||||
| 	bitStream.Write(allocate); | ||||
| 	bitStream.SetWriteOffset(startAddress + allocate); | ||||
| } | ||||
|  | ||||
| void BasicAttackBehavior::DoBehaviorCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void BasicAttackBehavior::DoBehaviorCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* targetEntity = Game::entityManager->GetEntity(branch.target); | ||||
| 	if (!targetEntity) { | ||||
| 		LOG("Target entity %llu is null!", branch.target); | ||||
| @@ -178,7 +178,7 @@ void BasicAttackBehavior::DoBehaviorCalculation(BehaviorContext* context, RakNet | ||||
|  | ||||
| 	const bool isBlocking = destroyableComponent->GetAttacksToBlock() > 0; | ||||
|  | ||||
| 	bitStream->Write(isBlocking); | ||||
| 	bitStream.Write(isBlocking); | ||||
|  | ||||
| 	if (isBlocking) { | ||||
| 		destroyableComponent->SetAttacksToBlock(destroyableComponent->GetAttacksToBlock() - 1); | ||||
| @@ -188,7 +188,7 @@ void BasicAttackBehavior::DoBehaviorCalculation(BehaviorContext* context, RakNet | ||||
| 	} | ||||
|  | ||||
| 	const bool isImmune = destroyableComponent->IsImmune() || destroyableComponent->IsCooldownImmune(); | ||||
| 	bitStream->Write(isImmune); | ||||
| 	bitStream.Write(isImmune); | ||||
|  | ||||
| 	if (isImmune) { | ||||
| 		LOG_DEBUG("Target targetEntity %llu is immune!", branch.target); | ||||
| @@ -210,7 +210,7 @@ void BasicAttackBehavior::DoBehaviorCalculation(BehaviorContext* context, RakNet | ||||
| 	const uint32_t healthDamageDealt = previousHealth - destroyableComponent->GetHealth(); | ||||
| 	isSuccess = armorDamageDealt > 0 || healthDamageDealt > 0 || (armorDamageDealt + healthDamageDealt) > 0; | ||||
|  | ||||
| 	bitStream->Write(isSuccess); | ||||
| 	bitStream.Write(isSuccess); | ||||
|  | ||||
| 	//Handle player damage cooldown | ||||
| 	if (isSuccess && targetEntity->IsPlayer() && !this->m_DontApplyImmune) { | ||||
| @@ -225,12 +225,12 @@ void BasicAttackBehavior::DoBehaviorCalculation(BehaviorContext* context, RakNet | ||||
| 			successState = this->m_OnFailArmor->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY ? eBasicAttackSuccessTypes::FAILIMMUNE : eBasicAttackSuccessTypes::FAILARMOR; | ||||
| 		} | ||||
|  | ||||
| 		bitStream->Write(armorDamageDealt); | ||||
| 		bitStream->Write(healthDamageDealt); | ||||
| 		bitStream->Write(targetEntity->GetIsDead()); | ||||
| 		bitStream.Write(armorDamageDealt); | ||||
| 		bitStream.Write(healthDamageDealt); | ||||
| 		bitStream.Write(targetEntity->GetIsDead()); | ||||
| 	} | ||||
|  | ||||
| 	bitStream->Write(successState); | ||||
| 	bitStream.Write(successState); | ||||
|  | ||||
| 	switch (static_cast<eBasicAttackSuccessTypes>(successState)) { | ||||
| 	case eBasicAttackSuccessTypes::SUCCESS: | ||||
|   | ||||
| @@ -12,7 +12,7 @@ public: | ||||
| 	 * is then offset to after the allocated bits for this stream. | ||||
| 	 * | ||||
| 	 */ | ||||
| 	void DoHandleBehavior(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch); | ||||
| 	void DoHandleBehavior(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Handles a client initialized Basic Attack Behavior cast to be deserialized and verified on the server. | ||||
| @@ -22,14 +22,14 @@ public: | ||||
| 	 * and will fail gracefully if an overread is detected. | ||||
| 	 * @param branch The context of this specific branch of the Skill Behavior.  Changes based on which branch you are going down. | ||||
| 	 */ | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Writes a 16bit short to the bitStream and when the actual behavior calculation finishes with all of its branches, the number | ||||
| 	 * of bits used is then written to where the 16bit short initially was. | ||||
| 	 * | ||||
| 	 */ | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Calculates a server initialized Basic Attack Behavior cast to be serialized to the client | ||||
| @@ -38,7 +38,7 @@ public: | ||||
| 	 * @param bitStream The bitStream to serialize to. | ||||
| 	 * @param branch The context of this specific branch of the Skill Behavior.  Changes based on which branch you are going down. | ||||
| 	 */ | ||||
| 	void DoBehaviorCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch); | ||||
| 	void DoBehaviorCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief Loads this Behaviors parameters from the database.  For this behavior specifically: | ||||
|   | ||||
| @@ -487,10 +487,10 @@ std::map<std::string, float> Behavior::GetParameterNames() const { | ||||
| void Behavior::Load() { | ||||
| } | ||||
|  | ||||
| void Behavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void Behavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| } | ||||
|  | ||||
| void Behavior::Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void Behavior::Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| } | ||||
|  | ||||
| void Behavior::UnCast(BehaviorContext* context, BehaviorBranchContext branch) { | ||||
| @@ -502,10 +502,10 @@ void Behavior::Timer(BehaviorContext* context, BehaviorBranchContext branch, LWO | ||||
| void Behavior::End(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) { | ||||
| } | ||||
|  | ||||
| void Behavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void Behavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| } | ||||
|  | ||||
| void Behavior::SyncCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void Behavior::SyncCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| } | ||||
|  | ||||
| Behavior::~Behavior() { | ||||
|   | ||||
| @@ -68,9 +68,9 @@ public: | ||||
| 	virtual void Load(); | ||||
|  | ||||
| 	// Player side | ||||
| 	virtual void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch); | ||||
| 	virtual void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch); | ||||
|  | ||||
| 	virtual void Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch); | ||||
| 	virtual void Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch); | ||||
|  | ||||
| 	virtual void UnCast(BehaviorContext* context, BehaviorBranchContext branch); | ||||
|  | ||||
| @@ -79,9 +79,9 @@ public: | ||||
| 	virtual void End(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second); | ||||
|  | ||||
| 	// Npc side | ||||
| 	virtual void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch); | ||||
| 	virtual void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch); | ||||
|  | ||||
| 	virtual void SyncCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch); | ||||
| 	virtual void SyncCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch); | ||||
|  | ||||
| 	/* | ||||
| 	 * Creations/destruction | ||||
|   | ||||
| @@ -105,7 +105,7 @@ void BehaviorContext::ExecuteUpdates() { | ||||
| 	this->scheduledUpdates.clear(); | ||||
| } | ||||
|  | ||||
| void BehaviorContext::SyncBehavior(const uint32_t syncId, RakNet::BitStream* bitStream) { | ||||
| void BehaviorContext::SyncBehavior(const uint32_t syncId, RakNet::BitStream& bitStream) { | ||||
| 	BehaviorSyncEntry entry; | ||||
| 	auto found = false; | ||||
|  | ||||
| @@ -243,27 +243,25 @@ bool BehaviorContext::CalculateUpdate(const float deltaTime) { | ||||
| 		echo.uiBehaviorHandle = entry.handle; | ||||
| 		echo.uiSkillHandle = this->skillUId; | ||||
|  | ||||
| 		auto* bitStream = new RakNet::BitStream(); | ||||
| 		RakNet::BitStream bitStream{}; | ||||
|  | ||||
| 		// Calculate sync | ||||
| 		entry.behavior->SyncCalculation(this, bitStream, entry.branchContext); | ||||
|  | ||||
| 		if (!clientInitalized) { | ||||
| 			echo.sBitStream.assign(reinterpret_cast<char*>(bitStream->GetData()), bitStream->GetNumberOfBytesUsed()); | ||||
| 			echo.sBitStream.assign(reinterpret_cast<char*>(bitStream.GetData()), bitStream.GetNumberOfBytesUsed()); | ||||
|  | ||||
| 			// Write message | ||||
| 			RakNet::BitStream message; | ||||
|  | ||||
| 			BitStreamUtils::WriteHeader(message, eConnectionType::CLIENT, eClientMessageType::GAME_MSG); | ||||
| 			message.Write(this->originator); | ||||
| 			echo.Serialize(&message); | ||||
| 			echo.Serialize(message); | ||||
|  | ||||
| 			Game::server->Send(&message, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 			Game::server->Send(message, UNASSIGNED_SYSTEM_ADDRESS, true); | ||||
| 		} | ||||
|  | ||||
| 		ExecuteUpdates(); | ||||
|  | ||||
| 		delete bitStream; | ||||
| 	} | ||||
|  | ||||
| 	std::vector<BehaviorSyncEntry> valid; | ||||
|   | ||||
| @@ -93,7 +93,7 @@ struct BehaviorContext | ||||
|  | ||||
| 	void ExecuteUpdates(); | ||||
|  | ||||
| 	void SyncBehavior(uint32_t syncId, RakNet::BitStream* bitStream); | ||||
| 	void SyncBehavior(uint32_t syncId, RakNet::BitStream& bitStream); | ||||
|  | ||||
| 	void Update(float deltaTime); | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| #include "Logger.h" | ||||
| #include "DestroyableComponent.h" | ||||
|  | ||||
| void BlockBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void BlockBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	const auto target = context->originator; | ||||
|  | ||||
| 	auto* entity = Game::entityManager->GetEntity(target); | ||||
| @@ -33,7 +33,7 @@ void BlockBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStrea | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void BlockBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void BlockBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,9 +13,9 @@ public: | ||||
| 	explicit BlockBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| #include "Logger.h" | ||||
| #include "DestroyableComponent.h" | ||||
|  | ||||
| void BuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void BuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	const auto target = branch.target != LWOOBJID_EMPTY ? branch.target : context->originator; | ||||
|  | ||||
| 	auto* entity = Game::entityManager->GetEntity(target); | ||||
|   | ||||
| @@ -16,7 +16,7 @@ public: | ||||
| 	explicit BuffBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
| #include "Logger.h" | ||||
| #include "PossessableComponent.h" | ||||
|  | ||||
| void CarBoostBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void CarBoostBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	GameMessages::SendVehicleAddPassiveBoostAction(branch.target, UNASSIGNED_SYSTEM_ADDRESS); | ||||
|  | ||||
| 	auto* entity = Game::entityManager->GetEntity(context->originator); | ||||
|   | ||||
| @@ -17,7 +17,7 @@ public: | ||||
| 	explicit CarBoostBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -3,11 +3,11 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void ChainBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void ChainBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	uint32_t chainIndex{}; | ||||
|  | ||||
| 	if (!bitStream->Read(chainIndex)) { | ||||
| 		LOG("Unable to read chainIndex from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(chainIndex)) { | ||||
| 		LOG("Unable to read chainIndex from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| @@ -16,12 +16,12 @@ void ChainBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStrea | ||||
| 	if (chainIndex < this->m_behaviors.size()) { | ||||
| 		this->m_behaviors.at(chainIndex)->Handle(context, bitStream, branch); | ||||
| 	} else { | ||||
| 		LOG("chainIndex out of bounds, aborting handle of chain %i bits unread %i", chainIndex, bitStream->GetNumberOfUnreadBits()); | ||||
| 		LOG("chainIndex out of bounds, aborting handle of chain %i bits unread %i", chainIndex, bitStream.GetNumberOfUnreadBits()); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ChainBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| 	bitStream->Write(1); | ||||
| void ChainBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	bitStream.Write(1); | ||||
|  | ||||
| 	this->m_behaviors.at(0)->Calculate(context, bitStream, branch); | ||||
| } | ||||
|   | ||||
| @@ -16,9 +16,9 @@ public: | ||||
| 	explicit ChainBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include "BehaviorContext.h" | ||||
| #include "BehaviorBranchContext.h" | ||||
|  | ||||
| void ChangeIdleFlagsBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ChangeIdleFlagsBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	const auto target = branch.target != LWOOBJID_EMPTY ? branch.target : context->originator; | ||||
| 	if (!target) return; | ||||
|  | ||||
| @@ -16,7 +16,7 @@ void ChangeIdleFlagsBehavior::Handle(BehaviorContext* context, RakNet::BitStream | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ChangeIdleFlagsBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ChangeIdleFlagsBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -11,8 +11,8 @@ public: | ||||
| 	 */ | ||||
| 	explicit ChangeIdleFlagsBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
| 	void End(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
| 	void Load() override; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include "BehaviorContext.h" | ||||
| #include "EntityManager.h" | ||||
|  | ||||
| void ChangeOrientationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ChangeOrientationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Entity* sourceEntity; | ||||
| 	if (this->m_orientCaster) sourceEntity = Game::entityManager->GetEntity(context->originator); | ||||
| 	else sourceEntity = Game::entityManager->GetEntity(branch.target); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| class ChangeOrientationBehavior final : public Behavior { | ||||
| public: | ||||
| 	explicit ChangeOrientationBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Load() override; | ||||
| private: | ||||
| 	bool m_orientCaster; | ||||
|   | ||||
| @@ -4,10 +4,10 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void ChargeUpBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void ChargeUpBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	uint32_t handle{}; | ||||
|  | ||||
| 	if (!bitStream->Read(handle)) { | ||||
| 	if (!bitStream.Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! variable_type"); | ||||
| 		return; | ||||
| 	}; | ||||
| @@ -15,10 +15,10 @@ void ChargeUpBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitSt | ||||
| 	context->RegisterSyncBehavior(handle, this, branch, this->m_MaxDuration); | ||||
| } | ||||
|  | ||||
| void ChargeUpBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ChargeUpBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| } | ||||
|  | ||||
| void ChargeUpBehavior::Sync(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void ChargeUpBehavior::Sync(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	this->m_action->Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -6,11 +6,11 @@ class ChargeUpBehavior final : public Behavior | ||||
| public: | ||||
| 	explicit ChargeUpBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| private: | ||||
|   | ||||
| @@ -3,13 +3,13 @@ | ||||
| #include "BehaviorContext.h" | ||||
|  | ||||
|  | ||||
| void ClearTargetBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ClearTargetBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	branch.target = LWOOBJID_EMPTY; | ||||
|  | ||||
| 	this->m_action->Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
| void ClearTargetBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ClearTargetBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	branch.target = LWOOBJID_EMPTY; | ||||
|  | ||||
| 	this->m_action->Calculate(context, bitStream, branch); | ||||
|   | ||||
| @@ -14,9 +14,9 @@ public: | ||||
| 	explicit ClearTargetBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include "BehaviorBranchContext.h" | ||||
| #include "InventoryComponent.h" | ||||
|  | ||||
| void ConsumeItemBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ConsumeItemBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto action_to_cast = m_ActionNotConsumed; | ||||
| 	if (this->m_ConsumeLOT != -1) { | ||||
| 		auto caster = Game::entityManager->GetEntity(context->caster); | ||||
| @@ -19,7 +19,7 @@ void ConsumeItemBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi | ||||
| 	if(action_to_cast) action_to_cast->Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
| void ConsumeItemBehavior::Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ConsumeItemBehavior::Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -5,8 +5,8 @@ class ConsumeItemBehavior final : public Behavior | ||||
| { | ||||
| public: | ||||
| 	explicit ConsumeItemBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Load() override; | ||||
|  | ||||
| private: | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| #include "Logger.h" | ||||
| #include "DestroyableComponent.h" | ||||
|  | ||||
| void DamageAbsorptionBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void DamageAbsorptionBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (target == nullptr) { | ||||
| @@ -29,7 +29,7 @@ void DamageAbsorptionBehavior::Handle(BehaviorContext* context, RakNet::BitStrea | ||||
| 	context->RegisterTimerBehavior(this, branch, target->GetObjectID()); | ||||
| } | ||||
|  | ||||
| void DamageAbsorptionBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void DamageAbsorptionBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,9 +13,9 @@ public: | ||||
| 	explicit DamageAbsorptionBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| #include "Logger.h" | ||||
| #include "DestroyableComponent.h" | ||||
|  | ||||
| void DamageReductionBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void DamageReductionBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (target == nullptr) { | ||||
| @@ -27,7 +27,7 @@ void DamageReductionBehavior::Handle(BehaviorContext* context, RakNet::BitStream | ||||
| 	context->RegisterTimerBehavior(this, branch, target->GetObjectID()); | ||||
| } | ||||
|  | ||||
| void DamageReductionBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void DamageReductionBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,9 +13,9 @@ public: | ||||
| 	explicit DamageReductionBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| #include "EntityManager.h" | ||||
| #include "BehaviorContext.h" | ||||
|  | ||||
| void DarkInspirationBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void DarkInspirationBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (target == nullptr) { | ||||
| @@ -25,7 +25,7 @@ void DarkInspirationBehavior::Handle(BehaviorContext* context, RakNet::BitStream | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void DarkInspirationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void DarkInspirationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (target == nullptr) { | ||||
|   | ||||
| @@ -11,9 +11,9 @@ public: | ||||
| 	explicit DarkInspirationBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| private: | ||||
|   | ||||
| @@ -2,13 +2,13 @@ | ||||
| #include "BehaviorBranchContext.h" | ||||
| #include "BehaviorContext.h" | ||||
|  | ||||
| void DurationBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void DurationBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	branch.duration = this->m_duration; | ||||
|  | ||||
| 	this->m_action->Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
| void DurationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void DurationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	branch.duration = this->m_duration; | ||||
|  | ||||
| 	this->m_action->Calculate(context, bitStream, branch); | ||||
|   | ||||
| @@ -11,9 +11,9 @@ public: | ||||
| 	explicit DurationBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| private: | ||||
|   | ||||
| @@ -3,11 +3,11 @@ | ||||
| #include "BehaviorContext.h" | ||||
| #include "BehaviorBranchContext.h" | ||||
|  | ||||
| void EndBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void EndBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	context->InvokeEnd(this->m_startBehavior); | ||||
| } | ||||
|  | ||||
| void EndBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void EndBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	context->InvokeEnd(this->m_startBehavior); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,9 +13,9 @@ public: | ||||
| 	explicit EndBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #include "BehaviorBranchContext.h" | ||||
|  | ||||
|  | ||||
| void FallSpeedBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void FallSpeedBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	// make sure required parameter has non-default value | ||||
| 	if (m_PercentSlowed == 0.0f) return; | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
| @@ -23,7 +23,7 @@ void FallSpeedBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitS | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void FallSpeedBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void FallSpeedBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -6,8 +6,8 @@ class FallSpeedBehavior final : public Behavior | ||||
| public: | ||||
| 	explicit FallSpeedBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
| 	void End(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|   | ||||
| @@ -6,29 +6,29 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void ForceMovementBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void ForceMovementBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	if (this->m_hitAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && this->m_hitEnemyAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && this->m_hitFactionAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY) { | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	uint32_t handle{}; | ||||
| 	if (!bitStream->Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(handle)) { | ||||
| 		LOG("Unable to read handle from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
| 	context->RegisterSyncBehavior(handle, this, branch, this->m_Duration); | ||||
| } | ||||
|  | ||||
| void ForceMovementBehavior::Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ForceMovementBehavior::Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	uint32_t next{}; | ||||
| 	if (!bitStream->Read(next)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Sync! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(next)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Sync! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	LWOOBJID target{}; | ||||
| 	if (!bitStream->Read(target)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Sync! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(target)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Sync! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| @@ -37,7 +37,7 @@ void ForceMovementBehavior::Sync(BehaviorContext* context, RakNet::BitStream* bi | ||||
| 	behavior->Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
| void ForceMovementBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ForceMovementBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	if (this->m_hitAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && this->m_hitEnemyAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && this->m_hitFactionAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY) { | ||||
| 		return; | ||||
| 	} | ||||
| @@ -56,7 +56,7 @@ void ForceMovementBehavior::Calculate(BehaviorContext* context, RakNet::BitStrea | ||||
| 	} | ||||
|  | ||||
| 	const auto skillHandle = context->GetUniqueSkillId(); | ||||
| 	bitStream->Write(skillHandle); | ||||
| 	bitStream.Write(skillHandle); | ||||
|  | ||||
| 	context->SyncCalculation(skillHandle, this->m_Duration, this, branch); | ||||
| } | ||||
| @@ -71,7 +71,7 @@ void ForceMovementBehavior::Load() { | ||||
| 	this->m_Yaw = GetFloat("yaw"); | ||||
| } | ||||
|  | ||||
| void ForceMovementBehavior::SyncCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ForceMovementBehavior::SyncCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* casterEntity = Game::entityManager->GetEntity(context->caster); | ||||
| 	if (casterEntity != nullptr) { | ||||
| 		auto* controllablePhysicsComponent = casterEntity->GetComponent<ControllablePhysicsComponent>(); | ||||
|   | ||||
| @@ -22,13 +22,13 @@ public: | ||||
| 	explicit ForceMovementBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void SyncCalculation(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void SyncCalculation(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Sync(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| #include "eReplicaComponentType.h" | ||||
|  | ||||
|  | ||||
| void HealBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) { | ||||
| void HealBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bit_stream, const BehaviorBranchContext branch) { | ||||
| 	auto* entity = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (entity == nullptr) { | ||||
| @@ -28,7 +28,7 @@ void HealBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bit_strea | ||||
| } | ||||
|  | ||||
|  | ||||
| void HealBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) { | ||||
| void HealBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, const BehaviorBranchContext branch) { | ||||
| 	Handle(context, bit_stream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,9 +13,9 @@ public: | ||||
| 	explicit HealBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| #include "Logger.h" | ||||
|  | ||||
|  | ||||
| void ImaginationBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) { | ||||
| void ImaginationBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bit_stream, const BehaviorBranchContext branch) { | ||||
| 	auto* entity = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (entity == nullptr) { | ||||
| @@ -23,7 +23,7 @@ void ImaginationBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi | ||||
|  | ||||
| } | ||||
|  | ||||
| void ImaginationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) { | ||||
| void ImaginationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, const BehaviorBranchContext branch) { | ||||
| 	Handle(context, bit_stream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,9 +13,9 @@ public: | ||||
| 	explicit ImaginationBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| #include "ControllablePhysicsComponent.h" | ||||
| #include "eStateChangeType.h" | ||||
|  | ||||
| void ImmunityBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void ImmunityBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	if (!target) { | ||||
| @@ -51,7 +51,7 @@ void ImmunityBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitSt | ||||
| 	context->RegisterTimerBehavior(this, branch, target->GetObjectID()); | ||||
| } | ||||
|  | ||||
| void ImmunityBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ImmunityBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -11,9 +11,9 @@ public: | ||||
| 	explicit ImmunityBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override; | ||||
|  | ||||
|   | ||||
| @@ -7,12 +7,12 @@ | ||||
| #include "SkillComponent.h" | ||||
|  | ||||
|  | ||||
| void InterruptBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void InterruptBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	if (branch.target != context->originator) { | ||||
| 		bool unknown = false; | ||||
|  | ||||
| 		if (!bitStream->Read(unknown)) { | ||||
| 			LOG("Unable to read unknown1 from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 		if (!bitStream.Read(unknown)) { | ||||
| 			LOG("Unable to read unknown1 from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 			return; | ||||
| 		}; | ||||
|  | ||||
| @@ -22,8 +22,8 @@ void InterruptBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitS | ||||
| 	if (!this->m_interruptBlock) { | ||||
| 		bool unknown = false; | ||||
|  | ||||
| 		if (!bitStream->Read(unknown)) { | ||||
| 			LOG("Unable to read unknown2 from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 		if (!bitStream.Read(unknown)) { | ||||
| 			LOG("Unable to read unknown2 from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 			return; | ||||
| 		}; | ||||
|  | ||||
| @@ -34,8 +34,8 @@ void InterruptBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitS | ||||
| 	{ | ||||
| 		bool unknown = false; | ||||
|  | ||||
| 		if (!bitStream->Read(unknown)) { | ||||
| 			LOG("Unable to read unknown3 from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 		if (!bitStream.Read(unknown)) { | ||||
| 			LOG("Unable to read unknown3 from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 			return; | ||||
| 		}; | ||||
| 	} | ||||
| @@ -54,16 +54,16 @@ void InterruptBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitS | ||||
| } | ||||
|  | ||||
|  | ||||
| void InterruptBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void InterruptBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	if (branch.target != context->originator) { | ||||
| 		bitStream->Write(false); | ||||
| 		bitStream.Write(false); | ||||
| 	} | ||||
|  | ||||
| 	if (!this->m_interruptBlock) { | ||||
| 		bitStream->Write(false); | ||||
| 		bitStream.Write(false); | ||||
| 	} | ||||
|  | ||||
| 	bitStream->Write(false); | ||||
| 	bitStream.Write(false); | ||||
|  | ||||
| 	if (branch.target == context->originator) return; | ||||
|  | ||||
|   | ||||
| @@ -15,9 +15,9 @@ public: | ||||
| 	explicit InterruptBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  | ||||
| #include "Character.h" | ||||
|  | ||||
| void JetPackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) { | ||||
| void JetPackBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bit_stream, const BehaviorBranchContext branch) { | ||||
| 	auto* entity = Game::entityManager->GetEntity(branch.target); | ||||
|  | ||||
| 	GameMessages::SendSetJetPackMode(entity, true, this->m_BypassChecks, this->m_EnableHover, this->m_effectId, this->m_Airspeed, this->m_MaxAirspeed, this->m_VerticalVelocity, this->m_WarningEffectID); | ||||
| @@ -33,7 +33,7 @@ void JetPackBehavior::UnCast(BehaviorContext* context, BehaviorBranchContext bra | ||||
|     } | ||||
| } | ||||
|  | ||||
| void JetPackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) { | ||||
| void JetPackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, const BehaviorBranchContext branch) { | ||||
| 	Handle(context, bit_stream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -18,11 +18,11 @@ public: | ||||
| 	explicit JetPackBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -9,16 +9,16 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void KnockbackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void KnockbackBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	bool unknown{}; | ||||
|  | ||||
| 	if (!bitStream->Read(unknown)) { | ||||
| 		LOG("Unable to read unknown from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(unknown)) { | ||||
| 		LOG("Unable to read unknown from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	}; | ||||
| } | ||||
|  | ||||
| void KnockbackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void KnockbackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	bool blocked = false; | ||||
|  | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
| @@ -31,7 +31,7 @@ void KnockbackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* b | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	bitStream->Write(blocked); | ||||
| 	bitStream.Write(blocked); | ||||
| } | ||||
|  | ||||
| void KnockbackBehavior::Load() { | ||||
|   | ||||
| @@ -17,9 +17,9 @@ public: | ||||
| 	explicit KnockbackBehavior(const uint32_t behaviorID) : Behavior(behaviorID) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #include "LootBuffBehavior.h" | ||||
|  | ||||
| void LootBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void LootBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto target = Game::entityManager->GetEntity(context->caster); | ||||
| 	if (!target) return; | ||||
|  | ||||
| @@ -14,7 +14,7 @@ void LootBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitSt | ||||
|  | ||||
| } | ||||
|  | ||||
| void LootBuffBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void LootBuffBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -20,9 +20,9 @@ public: | ||||
|  | ||||
| 	explicit LootBuffBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override; | ||||
|  | ||||
|   | ||||
| @@ -3,9 +3,9 @@ | ||||
| #include "Game.h" | ||||
| #include "Logger.h" | ||||
|  | ||||
| void MovementSwitchBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) { | ||||
| void MovementSwitchBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, const BehaviorBranchContext branch) { | ||||
| 	uint32_t movementType{}; | ||||
| 	if (!bitStream->Read(movementType)) { | ||||
| 	if (!bitStream.Read(movementType)) { | ||||
| 		if (this->m_groundAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && | ||||
| 			this->m_jumpAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && | ||||
| 			this->m_fallingAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY && | ||||
| @@ -15,7 +15,7 @@ void MovementSwitchBehavior::Handle(BehaviorContext* context, RakNet::BitStream* | ||||
| 			this->m_movingAction->m_templateId == BehaviorTemplates::BEHAVIOR_EMPTY) { | ||||
| 			return; | ||||
| 		} | ||||
| 		LOG("Unable to read movementType from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 		LOG("Unable to read movementType from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	}; | ||||
|  | ||||
|   | ||||
| @@ -36,7 +36,7 @@ public: | ||||
| 	explicit MovementSwitchBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include "BehaviorContext.h" | ||||
|  | ||||
|  | ||||
| void NpcCombatSkillBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) { | ||||
| void NpcCombatSkillBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) { | ||||
| 	context->skillTime = this->m_npcSkillTime; | ||||
|  | ||||
| 	for (auto* behavior : this->m_behaviors) { | ||||
|   | ||||
| @@ -15,7 +15,7 @@ public: | ||||
| 	explicit NpcCombatSkillBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bit_stream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -11,7 +11,7 @@ | ||||
|  | ||||
| #include "CDSkillBehaviorTable.h" | ||||
|  | ||||
| void OverTimeBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void OverTimeBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	const auto originator = context->originator; | ||||
|  | ||||
| 	auto* entity = Game::entityManager->GetEntity(originator); | ||||
| @@ -33,7 +33,7 @@ void OverTimeBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitSt | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void OverTimeBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void OverTimeBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
|  | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -16,9 +16,9 @@ public: | ||||
| 	explicit OverTimeBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include "BehaviorContext.h" | ||||
| #include "BehaviorBranchContext.h" | ||||
|  | ||||
| void PlayEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void PlayEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	// On managed behaviors this is handled by the client | ||||
| 	if (!context->unmanaged) | ||||
| 		return; | ||||
| @@ -13,7 +13,7 @@ void PlayEffectBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bit | ||||
| 	PlayFx(u"", target); | ||||
| } | ||||
|  | ||||
| void PlayEffectBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void PlayEffectBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	const auto& target = branch.target == LWOOBJID_EMPTY ? context->originator : branch.target; | ||||
|  | ||||
| 	//PlayFx(u"", target); | ||||
|   | ||||
| @@ -10,9 +10,9 @@ public: | ||||
| 	explicit PlayEffectBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -8,11 +8,11 @@ | ||||
| #include "ObjectIDManager.h" | ||||
| #include "eObjectBits.h" | ||||
|  | ||||
| void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	LWOOBJID target{}; | ||||
|  | ||||
| 	if (!bitStream->Read(target)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 	if (!bitStream.Read(target)) { | ||||
| 		LOG("Unable to read target from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 		return; | ||||
| 	}; | ||||
|  | ||||
| @@ -34,8 +34,8 @@ void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStrea | ||||
|  | ||||
| 	if (m_useMouseposit && !branch.isSync) { | ||||
| 		NiPoint3 targetPosition = NiPoint3Constant::ZERO; | ||||
| 		if (!bitStream->Read(targetPosition)) { | ||||
| 			LOG("Unable to read targetPosition from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 		if (!bitStream.Read(targetPosition)) { | ||||
| 			LOG("Unable to read targetPosition from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 			return; | ||||
| 		}; | ||||
| 	} | ||||
| @@ -45,8 +45,8 @@ void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStrea | ||||
| 	for (auto i = 0u; i < this->m_projectileCount; ++i) { | ||||
| 		LWOOBJID projectileId{}; | ||||
|  | ||||
| 		if (!bitStream->Read(projectileId)) { | ||||
| 			LOG("Unable to read projectileId from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits()); | ||||
| 		if (!bitStream.Read(projectileId)) { | ||||
| 			LOG("Unable to read projectileId from bitStream, aborting Handle! %i", bitStream.GetNumberOfUnreadBits()); | ||||
| 			return; | ||||
| 		}; | ||||
|  | ||||
| @@ -58,8 +58,8 @@ void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStrea | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ProjectileAttackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| 	bitStream->Write(branch.target); | ||||
| void ProjectileAttackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	bitStream.Write(branch.target); | ||||
|  | ||||
| 	auto* entity = Game::entityManager->GetEntity(context->originator); | ||||
|  | ||||
| @@ -110,7 +110,7 @@ void ProjectileAttackBehavior::Calculate(BehaviorContext* context, RakNet::BitSt | ||||
|  | ||||
| 		GeneralUtils::SetBit(id, eObjectBits::SPAWNED); | ||||
|  | ||||
| 		bitStream->Write(id); | ||||
| 		bitStream.Write(id); | ||||
|  | ||||
| 		auto eulerAngles = rotation.GetEulerAngles(); | ||||
|  | ||||
|   | ||||
| @@ -32,9 +32,9 @@ public: | ||||
| 	explicit ProjectileAttackBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -11,7 +11,7 @@ | ||||
| #include "ZoneInstanceManager.h" | ||||
| #include "dZoneManager.h" | ||||
|  | ||||
| void PropertyTeleportBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void PropertyTeleportBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* caster = Game::entityManager->GetEntity(context->caster); | ||||
| 	if (!caster) return; | ||||
|  | ||||
|   | ||||
| @@ -11,7 +11,7 @@ public: | ||||
| 	explicit PropertyTeleportBehavior(const uint32_t behavior_id) : Behavior(behavior_id) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #include "EntityManager.h" | ||||
| #include "MovementAIComponent.h" | ||||
|  | ||||
| void PullToPointBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void PullToPointBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* entity = Game::entityManager->GetEntity(context->originator); | ||||
|  | ||||
| 	auto* target = Game::entityManager->GetEntity(branch.target); | ||||
| @@ -25,7 +25,7 @@ void PullToPointBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi | ||||
| 	movement->PullToPoint(position); | ||||
| } | ||||
|  | ||||
| void PullToPointBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void PullToPointBehavior::Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	Handle(context, bitStream, branch); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -12,9 +12,9 @@ public: | ||||
| 	explicit PullToPointBehavior(const uint32_t behaviorId) : Behavior(behaviorId) { | ||||
| 	} | ||||
|  | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override; | ||||
| 	void Calculate(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) override; | ||||
|  | ||||
| 	void Load() override; | ||||
| }; | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #include "EntityManager.h" | ||||
| #include "BuffComponent.h" | ||||
|  | ||||
| void RemoveBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { | ||||
| void RemoveBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream& bitStream, BehaviorBranchContext branch) { | ||||
| 	auto* entity = Game::entityManager->GetEntity(context->caster); | ||||
| 	if (!entity) return; | ||||
|  | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 jadebenn
					jadebenn