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