42 lines
2.1 KiB
C++
42 lines
2.1 KiB
C++
#include "protocol/PacketFactory.h"
|
|
#include <map>
|
|
#include <functional>
|
|
|
|
namespace td {
|
|
namespace protocol {
|
|
namespace PacketFactory{
|
|
|
|
using PacketCreator = std::function<Packet*()>;
|
|
|
|
static std::map<PacketType, PacketCreator> 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
|