diff --git a/src/protocol/packets/WorldBeginDataPacket.cpp b/src/protocol/packets/WorldBeginDataPacket.cpp index 29a96a2..1eac9ba 100644 --- a/src/protocol/packets/WorldBeginDataPacket.cpp +++ b/src/protocol/packets/WorldBeginDataPacket.cpp @@ -3,6 +3,64 @@ namespace td { namespace protocol { +static DataBuffer& operator<<(DataBuffer& buffer, game::TilePtr tile) { + buffer << tile->GetType(); + + switch (tile->GetType()) { + + case game::TileType::Tower: { + const game::TowerTile* towerTile = dynamic_cast(tile.get()); + buffer << towerTile->color_palette_ref << towerTile->team_owner; + break; + } + + case game::TileType::Walk: { + const game::WalkableTile* walkTile = dynamic_cast(tile.get()); + buffer << walkTile->direction; + break; + } + + case game::TileType::Decoration: { + const game::DecorationTile* decoTile = dynamic_cast(tile.get()); + buffer << decoTile->color_palette_ref; + break; + } + + default: + break; + } + + return buffer; +} + +static DataBuffer& operator>>(DataBuffer& buffer, game::TilePtr& tile) { + game::TileType tileType; + buffer >> tileType; + switch (tileType) { + case game::TileType::Tower: { + auto tilePtr = std::make_shared(); + buffer >> tilePtr->color_palette_ref >> tilePtr->team_owner; + tile = tilePtr; + break; + } + case game::TileType::Walk: { + auto tilePtr = std::make_shared(); + buffer >> tilePtr->direction; + tile = tilePtr; + break; + } + case game::TileType::Decoration: { + auto tilePtr = std::make_shared(); + buffer >> tilePtr->color_palette_ref; + tile = tilePtr; + break; + } + default: + break; + } + return buffer; +} + DataBuffer WorldBeginDataPacket::Serialize(bool packetID) const { DataBuffer data; const game::TowerTileColorPalette& towerTilePalette = m_Header.m_World->GetTowerTileColorPalette(); diff --git a/src/protocol/packets/WorldDataPacket.cpp b/src/protocol/packets/WorldDataPacket.cpp index dd44a98..5556477 100644 --- a/src/protocol/packets/WorldDataPacket.cpp +++ b/src/protocol/packets/WorldDataPacket.cpp @@ -12,64 +12,6 @@ static unsigned int countBits(unsigned int number) { return static_cast(std::log2(number) + 1); } -static DataBuffer& operator<<(DataBuffer& buffer, game::TilePtr tile) { - buffer << tile->GetType(); - - switch (tile->GetType()) { - - case game::TileType::Tower: { - const game::TowerTile* towerTile = dynamic_cast(tile.get()); - buffer << towerTile->color_palette_ref << towerTile->team_owner; - break; - } - - case game::TileType::Walk: { - const game::WalkableTile* walkTile = dynamic_cast(tile.get()); - buffer << walkTile->direction; - break; - } - - case game::TileType::Decoration: { - const game::DecorationTile* decoTile = dynamic_cast(tile.get()); - buffer << decoTile->color_palette_ref; - break; - } - - default: - break; - } - - return buffer; -} - -static DataBuffer& operator>>(DataBuffer& buffer, game::TilePtr& tile) { - game::TileType tileType; - buffer >> tileType; - switch (tileType) { - case game::TileType::Tower: { - auto tilePtr = std::make_shared(); - buffer >> tilePtr->color_palette_ref >> tilePtr->team_owner; - tile = tilePtr; - break; - } - case game::TileType::Walk: { - auto tilePtr = std::make_shared(); - buffer >> tilePtr->direction; - tile = tilePtr; - break; - } - case game::TileType::Decoration: { - auto tilePtr = std::make_shared(); - buffer >> tilePtr->color_palette_ref; - tile = tilePtr; - break; - } - default: - break; - } - return buffer; -} - typedef std::vector ChunkPackedData; DataBuffer WorldDataPacket::Serialize(bool packetID) const {