#include "protocol/PacketFactory.h" #include #include namespace td { namespace protocol { namespace PacketFactory{ using PacketCreator = std::function; static std::map packets = { {PacketType::PlayerLogin, []() -> Packet* {return new PlayerLoginPacket();} }, {PacketType::WorldBeginData, []() -> Packet* {return new WorldBeginDataPacket();} }, {PacketType::WorldData, []() -> Packet* {return new WorldDataPacket();} }, {PacketType::KeepAlive, []() -> Packet* {return new KeepAlivePacket();} }, {PacketType::UpdateMoney, []() -> Packet* {return new UpdateMoneyPacket();} }, {PacketType::UpdateEXP, []() -> Packet* {return new UpdateExpPacket();} }, {PacketType::UpdateLobbyTime, []() -> Packet* {return new UpdateLobbyTimePacket(); } }, {PacketType::UpdateGameState, []() -> Packet* {return new UpdateGameStatePacket(); } }, {PacketType::PlayerList, []() -> Packet* {return new PlayerListPacket(); } }, {PacketType::PlayerJoin, []() -> Packet* {return new PlayerJoinPacket(); } }, {PacketType::PlayerLeave, []() -> Packet* {return new PlayerLeavePacket(); } }, {PacketType::ConnectionInfo, []() -> Packet* {return new ConnexionInfoPacket(); } }, {PacketType::SelectTeam, []() -> Packet* {return new SelectTeamPacket(); } }, {PacketType::UpdatePlayerTeam, []() -> Packet* {return new UpdatePlayerTeamPacket(); } }, {PacketType::Disconnect, []() -> Packet* {return new DisconnectPacket(); } }, {PacketType::ServerTps, []() -> Packet* {return new ServerTpsPacket(); } }, {PacketType::SpawnMob, []() -> Packet* {return new SpawnMobPacket(); } }, {PacketType::PlaceTower, []() -> Packet* {return new PlaceTowerPacket(); } }, {PacketType::WorldAddTower, []() -> Packet* {return new WorldAddTowerPacket(); } }, }; Packet* createPacket(PacketType type, DataBuffer& buffer){ Packet* packet = packets[type](); packet->Deserialize(buffer); return packet; } } } // namespace protocol } // namespace td