Skip to content

Commit

Permalink
Split Packet to PacketSB and PacketCB
Browse files Browse the repository at this point in the history
  • Loading branch information
uis246 committed Nov 6, 2020
1 parent 22aa566 commit 5127212
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 293 deletions.
2 changes: 1 addition & 1 deletion src/Game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ void InitEvents() {
listener.RegisterHandler("ReceivedPacket", [](const Event& eventData) {
if (!gs)
return;
std::shared_ptr<Packet> packet = eventData.get<std::shared_ptr<Packet>>();
std::shared_ptr<PacketCB> packet = eventData.get<std::shared_ptr<PacketCB>>();
gs->UpdatePacket(packet);
});

Expand Down
26 changes: 13 additions & 13 deletions src/GameState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ void GameState::Update(double deltaTime) {
PUSH_EVENT("RemoveLoadingScreen", 0);

auto packetPerformRespawn = std::make_shared<PacketClientStatus>(0);
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetPerformRespawn));
PUSH_EVENT("SendPacket", std::static_pointer_cast<PacketSB>(packetPerformRespawn));
}
}

Expand All @@ -36,7 +36,7 @@ void GameState::Update(double deltaTime) {
player->pos.x, player->pos.y, player->pos.z,
player->yaw, player->pitch, player->onGround);

auto packet = std::static_pointer_cast<Packet>(packetToSend);
auto packet = std::static_pointer_cast<PacketSB>(packetToSend);
PUSH_EVENT("SendPacket", packet);
timeOfPreviousSendedPacket = clock.now();
}
Expand All @@ -48,7 +48,7 @@ void GameState::Update(double deltaTime) {
player->pos.x, player->pos.y,
player->pos.z, player->onGround);

auto packet = std::static_pointer_cast<Packet>(updatePacket);
auto packet = std::static_pointer_cast<PacketSB>(updatePacket);
PUSH_EVENT("SendPacket", packet);
}

Expand Down Expand Up @@ -83,7 +83,7 @@ void GameState::Update(double deltaTime) {
timeStatus.interpolatedTimeOfDay += 20.0 * deltaTime;
}

void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) {
void GameState::UpdatePacket(std::shared_ptr<PacketCB> ptr) {
switch ((PacketNamePlayCB)ptr->GetPacketId()) {
case SpawnObject: {
auto packet = std::static_pointer_cast<PacketSpawnObject>(ptr);
Expand Down Expand Up @@ -287,13 +287,13 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) {
receivedJoinGame = true;

auto packetSettings = std::make_shared<PacketClientSettings>("en_us", 0x14, 0, true, 0x7F, 1);
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetSettings));
PUSH_EVENT("SendPacket", std::static_pointer_cast<PacketSB>(packetSettings));

std::string brandStr("\x08""AltCraft");
std::vector<unsigned char> brandData;
std::copy(brandStr.begin(), brandStr.end(), std::back_inserter(brandData));
auto packetPluginBrand = std::make_shared<PacketPluginMessageSB>("MC|Brand", brandData);
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetPluginBrand));
PUSH_EVENT("SendPacket", std::static_pointer_cast<PacketSB>(packetPluginBrand));

break;
}
Expand Down Expand Up @@ -384,7 +384,7 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) {
receivedFirstPlayerPosAndLook = true;

auto packetResponse = std::make_shared<PacketTeleportConfirm>(packet->TeleportId);
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetResponse));
PUSH_EVENT("SendPacket", std::static_pointer_cast<PacketSB>(packetResponse));

break;
}
Expand Down Expand Up @@ -459,7 +459,7 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) {
if (playerStatus.health <= 0) {
LOG(INFO) << "Player is dead. Respawning...";
auto packetPerformRespawn = std::make_shared<PacketClientStatus>(0);
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetPerformRespawn));
PUSH_EVENT("SendPacket", std::static_pointer_cast<PacketSB>(packetPerformRespawn));
}
break;
}
Expand Down Expand Up @@ -518,7 +518,7 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) {
while (!playerInventory.pendingTransactions.empty()) {
auto packet = std::make_shared<PacketClickWindow>(playerInventory.pendingTransactions.front());
playerInventory.pendingTransactions.pop();
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packet));
PUSH_EVENT("SendPacket", std::static_pointer_cast<PacketSB>(packet));
}
}

Expand Down Expand Up @@ -620,15 +620,15 @@ void GameState::StartDigging() {
return;

auto packetStart = std::make_shared<PacketPlayerDigging>(0, selectionStatus.selectedBlock, 1);
auto packet = std::static_pointer_cast<Packet>(packetStart);
auto packet = std::static_pointer_cast<PacketSB>(packetStart);
PUSH_EVENT("SendPacket", packet);

FinishDigging();
}

void GameState::FinishDigging() {
auto packetFinish = std::make_shared<PacketPlayerDigging>(2, selectionStatus.selectedBlock, 1);
auto packet = std::static_pointer_cast<Packet>(packetFinish);
auto packet = std::static_pointer_cast<PacketSB>(packetFinish);
PUSH_EVENT("SendPacket", packet);
}

Expand All @@ -639,7 +639,7 @@ void GameState::FinishDigging() {
// remove_delayed_action(finish_digging)
void GameState::CancelDigging() {
auto packetCancel = std::make_shared<PacketPlayerDigging>(1, selectionStatus.selectedBlock, 1);
auto packet = std::static_pointer_cast<Packet>(packetCancel);
auto packet = std::static_pointer_cast<PacketSB>(packetCancel);
PUSH_EVENT("SendPacket", packet);
}

Expand Down Expand Up @@ -680,6 +680,6 @@ void GameState::PlaceBlock() {
auto packetPlace = std::make_shared<PacketPlayerBlockPlacement>(
selectionStatus.selectedBlock, (unsigned char)face, 0, 0, 0, 0);

auto packet = std::static_pointer_cast<Packet>(packetPlace);
auto packet = std::static_pointer_cast<PacketSB>(packetPlace);
PUSH_EVENT("SendPacket", packet);
}
2 changes: 1 addition & 1 deletion src/GameState.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class GameState {

void Update(double deltaTime);

void UpdatePacket(std::shared_ptr<Packet> ptr);
void UpdatePacket(std::shared_ptr<PacketCB> ptr);

void StartDigging();

Expand Down
10 changes: 5 additions & 5 deletions src/Network.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ uint32_t Network::ReadPacketLen(){
return result;
}

std::shared_ptr<Packet> Network::ReceivePacket(ConnectionState state, bool useCompression) {
std::shared_ptr<PacketCB> Network::ReceivePacket(ConnectionState state, bool useCompression) {
size_t packetLength = ReadPacketLen();
StreamROBuffer streamBuffer(packetLength);
socket->ReadData(streamBuffer.buffer, packetLength);
Expand Down Expand Up @@ -87,7 +87,7 @@ void Network::Connect(unsigned char *buffPtr, size_t buffLen) {
socket->Connect(buffPtr, buffLen);
}

void Network::SendPacket(Packet &packet, int compressionThreshold, bool more) {
void Network::SendPacket(PacketSB &packet, int compressionThreshold, bool more) {
uint32_t len = packet.GetLen() + VarIntLen(packet.GetPacketId());
if (compressionThreshold >= 0) {
// FIXME: implement packet compression
Expand All @@ -107,8 +107,8 @@ void Network::SendPacket(Packet &packet, int compressionThreshold, bool more) {
}
}

std::shared_ptr<Packet> Network::ReceivePacketByPacketId(int packetId, ConnectionState state, StreamInput &stream) {
std::shared_ptr < Packet > packet(nullptr);
std::shared_ptr<PacketCB> Network::ReceivePacketByPacketId(int packetId, ConnectionState state, StreamInput &stream) {
std::shared_ptr < PacketCB > packet(nullptr);
switch (state) {
case Handshaking:
switch (packetId) {
Expand Down Expand Up @@ -141,7 +141,7 @@ std::shared_ptr<Packet> Network::ReceivePacketByPacketId(int packetId, Connectio
return packet;
}

std::shared_ptr<Packet> Network::ParsePacketPlay(PacketNamePlayCB id) {
std::shared_ptr<PacketCB> Network::ParsePacketPlay(PacketNamePlayCB id) {
switch (id) {
case SpawnObject:
return std::make_shared<PacketSpawnObject>();
Expand Down
8 changes: 4 additions & 4 deletions src/Network.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ class Network {
std::unique_ptr<Socket> socket;

uint32_t ReadPacketLen();
std::shared_ptr<Packet> ReceivePacketByPacketId(int packetId, ConnectionState state, StreamInput &stream);
std::shared_ptr<PacketCB> ReceivePacketByPacketId(int packetId, ConnectionState state, StreamInput &stream);
public:
Network(std::string address, unsigned short port);
void Connect(unsigned char *buffPtr, size_t buffLen);

std::shared_ptr<Packet> ReceivePacket(ConnectionState state = Play, bool useCompression = false);
void SendPacket(Packet &packet, int compressionThreshold = -1, bool more = false);
std::shared_ptr<Packet> ParsePacketPlay(PacketNamePlayCB id);
std::shared_ptr<PacketCB> ReceivePacket(ConnectionState state = Play, bool useCompression = false);
void SendPacket(PacketSB &packet, int compressionThreshold = -1, bool more = false);
std::shared_ptr<PacketCB> ParsePacketPlay(PacketNamePlayCB id);
};
4 changes: 2 additions & 2 deletions src/NetworkClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,15 @@ void NetworkClient::ExecNs() {
AC_THREAD_SET_NAME("Network");

listener.RegisterHandler("SendPacket", [&](const Event& eventData) {
std::shared_ptr<Packet> packet = eventData.get<std::shared_ptr<Packet>>();
std::shared_ptr<PacketSB> packet = eventData.get<std::shared_ptr<PacketSB>>();
network->SendPacket(*packet,compressionThreshold);
});

try {
while (isRunning) {
listener.HandleAllEvents();

std::shared_ptr<Packet> packet = network->ReceivePacket(state, compressionThreshold >= 0);
std::shared_ptr<PacketCB> packet = network->ReceivePacket(state, compressionThreshold >= 0);
if (packet != nullptr) {
if (packet->GetPacketId() != PacketNamePlayCB::KeepAliveCB) {
PUSH_EVENT("ReceivedPacket", packet);
Expand Down
Loading

0 comments on commit 5127212

Please sign in to comment.