refactor: use of unique_ptr instead of new

This commit is contained in:
2021-11-06 13:02:53 +01:00
parent 26290d8332
commit 6825a6327f
19 changed files with 136 additions and 134 deletions

View File

@@ -25,7 +25,7 @@ void PacketDispatcher::UnregisterHandler(PacketHandler* handler) {
}
}
void PacketDispatcher::Dispatch(Packet* packet) {
void PacketDispatcher::Dispatch(const PacketPtr& packet) {
if (!packet) return;
PacketType type = packet->getType();

View File

@@ -6,35 +6,35 @@ namespace td {
namespace protocol {
namespace PacketFactory {
using PacketCreator = std::function<Packet* ()>;
using PacketCreator = std::function<PacketPtr ()>;
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(); } },
{PacketType::WorldRemoveTower, []() -> Packet* {return new WorldRemoveTowerPacket(); } },
{PacketType::SendMobs, []() -> Packet* {return new SendMobsPacket(); } },
{PacketType::UpgradeTower, []() -> Packet* {return new UpgradeTowerPacket(); } },
{PacketType::PlayerLogin, []() -> PacketPtr {return std::make_unique<PlayerLoginPacket>();} },
{PacketType::WorldBeginData, []() -> PacketPtr {return std::make_unique<WorldBeginDataPacket>();} },
{PacketType::WorldData, []() -> PacketPtr {return std::make_unique<WorldDataPacket>();} },
{PacketType::KeepAlive, []() -> PacketPtr {return std::make_unique<KeepAlivePacket>();} },
{PacketType::UpdateMoney, []() -> PacketPtr {return std::make_unique<UpdateMoneyPacket>();} },
{PacketType::UpdateEXP, []() -> PacketPtr {return std::make_unique<UpdateExpPacket>();} },
{PacketType::UpdateLobbyTime, []() -> PacketPtr {return std::make_unique<UpdateLobbyTimePacket>(); } },
{PacketType::UpdateGameState, []() -> PacketPtr {return std::make_unique<UpdateGameStatePacket>(); } },
{PacketType::PlayerList, []() -> PacketPtr {return std::make_unique<PlayerListPacket>(); } },
{PacketType::PlayerJoin, []() -> PacketPtr {return std::make_unique<PlayerJoinPacket>(); } },
{PacketType::PlayerLeave, []() -> PacketPtr {return std::make_unique<PlayerLeavePacket>(); } },
{PacketType::ConnectionInfo, []() -> PacketPtr {return std::make_unique<ConnexionInfoPacket>(); } },
{PacketType::SelectTeam, []() -> PacketPtr {return std::make_unique<SelectTeamPacket>(); } },
{PacketType::UpdatePlayerTeam, []() -> PacketPtr {return std::make_unique<UpdatePlayerTeamPacket>(); } },
{PacketType::Disconnect, []() -> PacketPtr {return std::make_unique<DisconnectPacket>(); } },
{PacketType::ServerTps, []() -> PacketPtr {return std::make_unique<ServerTpsPacket>(); } },
{PacketType::SpawnMob, []() -> PacketPtr {return std::make_unique<SpawnMobPacket>(); } },
{PacketType::PlaceTower, []() -> PacketPtr {return std::make_unique<PlaceTowerPacket>(); } },
{PacketType::WorldAddTower, []() -> PacketPtr {return std::make_unique<WorldAddTowerPacket>(); } },
{PacketType::WorldRemoveTower, []() -> PacketPtr {return std::make_unique<WorldRemoveTowerPacket>(); } },
{PacketType::SendMobs, []() -> PacketPtr {return std::make_unique<SendMobsPacket>(); } },
{PacketType::UpgradeTower, []() -> PacketPtr {return std::make_unique<UpgradeTowerPacket>(); } },
};
Packet* createPacket(PacketType type, DataBuffer& buffer) {
Packet* packet = packets[type]();
PacketPtr createPacket(PacketType type, DataBuffer& buffer) {
PacketPtr packet = packets[type]();
packet->Deserialize(buffer);
return packet;
}

View File

@@ -1,7 +1,7 @@
#include "protocol/PacketHandler.h"
#include <cmath>
#define REGISTER_DISPATCH_CLASS(className) void className::Dispatch(PacketHandler* handler){handler->HandlePacket(this);}
#define REGISTER_DISPATCH_CLASS(className) void className::Dispatch(PacketHandler* handler) const {handler->HandlePacket(this);}
namespace td {
namespace protocol {