buff immunities

This commit is contained in:
Aaron Kimbre 2022-12-24 11:44:14 -06:00
parent b7ec08a8e2
commit 3f3c5d9215
2 changed files with 30 additions and 2 deletions

View File

@ -45,8 +45,30 @@ void BuffComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUp
}
}
outBitStream->Write0(); // buff immunities
}
if (m_BuffImmunities.empty()) {
outBitStream->Write0();
} else {
outBitStream->Write1();
outBitStream->Write<uint32_t>(m_BuffImmunities.size());
for (const auto& buffImmunity : m_BuffImmunities) {
outBitStream->Write<uint32_t>(buffImmunity.first);
outBitStream->Write(buffImmunity.second.time);
outBitStream->Write(buffImmunity.second.cancelOnDeath);
outBitStream->Write(buffImmunity.second.cancelOnZone);
outBitStream->Write(buffImmunity.second.cancelOnDamaged);
outBitStream->Write(buffImmunity.second.cancelOnRemoveBuff);
outBitStream->Write(buffImmunity.second.cancelOnUi);
outBitStream->Write(buffImmunity.second.cancelOnLogout);
outBitStream->Write(buffImmunity.second.cancelOnUnequip);
outBitStream->Write(buffImmunity.second.cancelOnDamageAbsDone);
outBitStream->Write0(); // outBitStream->Write(addedByTeammate)
outBitStream->Write(buffImmunity.second.applyOnTeammates);
// if (addedByTeammate) outBitStream->Write(team mate lwoobjid);
outBitStream->Write(buffImmunity.second.refcount);
}
}
} // there is no update serilization, only on initialization
}
void BuffComponent::Update(float deltaTime) {
@ -300,6 +322,7 @@ void BuffComponent::UpdateXml(tinyxml2::XMLDocument* doc) {
}
for (const auto& buff : m_Buffs) {
if (buff.second.cancelOnLogout || buff.second.cancelOnZone) continue;
auto* buffEntry = doc->NewElement("b");
buffEntry->SetAttribute("id", buff.first);

View File

@ -147,6 +147,11 @@ private:
*/
std::map<int32_t, Buff> m_Buffs;
/**
* The currently active buff immunities
*/
std::map<int32_t, Buff> m_BuffImmunities;
/**
* Parameters (=effects) for each buff
*/