feat: sync game

This commit is contained in:
2021-12-19 18:40:14 +01:00
parent f70661694b
commit 5d366b6f6c
11 changed files with 142 additions and 4 deletions

View File

@@ -31,6 +31,8 @@ static std::map<PacketType, PacketCreator> packets = {
{PacketType::RemoveTower, []() -> PacketPtr {return std::make_unique<RemoveTowerPacket>(); } },
{PacketType::SendMobs, []() -> PacketPtr {return std::make_unique<SendMobsPacket>(); } },
{PacketType::UpgradeTower, []() -> PacketPtr {return std::make_unique<UpgradeTowerPacket>(); } },
{PacketType::UpdateCastleLife, []() -> PacketPtr {return std::make_unique<UpdateCastleLifePacket>(); } },
{PacketType::UpdateMobStates, []() -> PacketPtr {return std::make_unique<UpdateMobStatesPacket>(); } },
};
PacketPtr createPacket(PacketType type, DataBuffer& buffer) {

View File

@@ -535,6 +535,34 @@ void UpgradeTowerPacket::Deserialize(DataBuffer& data) {
data >> m_TowerID >> m_TowerLevel;
}
DataBuffer UpdateCastleLifePacket::Serialize() const {
DataBuffer data;
data << getID() << m_CastleLife << m_Team;
return data;
}
void UpdateCastleLifePacket::Deserialize(DataBuffer& data) {
data >> m_CastleLife >> m_Team;
}
DataBuffer UpdateMobStatesPacket::Serialize() const {
DataBuffer data;
data << getID() << static_cast<std::uint64_t>(m_MobStates.size());
for (auto mobState : m_MobStates) {
data << mobState;
}
return data;
}
void UpdateMobStatesPacket::Deserialize(DataBuffer& data) {
std::uint64_t mobCount;
data >> mobCount;
m_MobStates.resize(mobCount);
for (std::uint64_t mobIndex = 0; mobIndex < mobCount; mobIndex++) {
data >> m_MobStates[mobIndex];
}
}
REGISTER_DISPATCH_CLASS(PlayerLoginPacket);
REGISTER_DISPATCH_CLASS(WorldBeginDataPacket);
REGISTER_DISPATCH_CLASS(WorldDataPacket);
@@ -557,6 +585,8 @@ REGISTER_DISPATCH_CLASS(WorldAddTowerPacket);
REGISTER_DISPATCH_CLASS(RemoveTowerPacket);
REGISTER_DISPATCH_CLASS(SendMobsPacket);
REGISTER_DISPATCH_CLASS(UpgradeTowerPacket);
REGISTER_DISPATCH_CLASS(UpdateCastleLifePacket);
REGISTER_DISPATCH_CLASS(UpdateMobStatesPacket);
} // namespace protocol
} // namespace td