#include "protocol/PacketFactory.h" #include "protocol/Packets.h" #include #include namespace td { namespace protocol { namespace PacketFactory { using PacketCreator = std::function; static std::map packets = { {PacketType::PlayerLogin, []() -> PacketPtr {return std::make_unique();} }, {PacketType::WorldBeginData, []() -> PacketPtr {return std::make_unique();} }, {PacketType::WorldData, []() -> PacketPtr {return std::make_unique();} }, {PacketType::KeepAlive, []() -> PacketPtr {return std::make_unique();} }, {PacketType::UpdateMoney, []() -> PacketPtr {return std::make_unique();} }, {PacketType::UpdateEXP, []() -> PacketPtr {return std::make_unique();} }, {PacketType::UpdateLobbyTime, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::UpdateGameState, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::PlayerList, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::PlayerJoin, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::PlayerLeave, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::ConnectionInfo, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::SelectTeam, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::UpdatePlayerTeam, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::Disconnect, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::ServerTps, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::SpawnMob, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::PlaceTower, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::WorldAddTower, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::RemoveTower, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::SendMobs, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::UpgradeTower, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::UpdateCastleLife, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::UpdateMobStates, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::PlayerBuyItem, []() -> PacketPtr {return std::make_unique(); } }, {PacketType::PlayerBuyMobUpgrade, []() -> PacketPtr {return std::make_unique(); } }, }; PacketPtr CreatePacket(PacketType type, DataBuffer& buffer) { PacketPtr packet = packets[type](); packet->Deserialize(buffer); return packet; } } } // namespace protocol } // namespace td