add map info code

This commit is contained in:
Lion Kortlepel
2024-01-25 09:22:20 +01:00
parent c17cb84eb4
commit 0d70012009
2 changed files with 23 additions and 0 deletions

View File

@@ -5,6 +5,7 @@
#include "Launcher.h"
#include "ProtocolVersion.h"
#include "ServerInfo.h"
#include "Transport.h"
#include "Util.h"
#include <nlohmann/json.hpp>
#include <spdlog/spdlog.h>
@@ -73,6 +74,7 @@ void ServerNetwork::handle_packet(const bmp::Packet& packet) {
handle_mod_download(packet);
break;
case bmp::State::SessionSetup:
handle_session_setup(packet);
break;
case bmp::State::Playing:
break;
@@ -99,6 +101,13 @@ void ServerNetwork::handle_mod_download(const bmp::Packet& packet) {
tcp_write(ok);
break;
}
case bmp::Purpose::MapInfo: {
auto data = packet.get_readable_data();
std::string map(data.begin(), data.end());
// TODO: Send to game
spdlog::debug("Map: '{}'", map);
break;
}
case bmp::Purpose::StateChangeSessionSetup: {
spdlog::info("Starting session setup");
m_state = bmp::State::SessionSetup;
@@ -253,3 +262,16 @@ void ServerNetwork::udp_write(bmp::Packet& packet) {
std::copy(packet.raw_data.begin(), packet.raw_data.end(), data.begin() + static_cast<long>(offset));
m_udp_socket.send_to(buffer(data), m_udp_ep, {});
}
void ServerNetwork::handle_session_setup(const bmp::Packet& packet) {
switch (packet.purpose) {
case bmp::Purpose::PlayersVehiclesInfo: {
spdlog::debug("Players and vehicles info: {} bytes ({} bytes on arrival)", packet.get_readable_data().size(), packet.raw_data.size());
// TODO: Send to game
break;
}
default:
spdlog::error("Got 0x{:x} in state {}. This is not allowed. Disconnecting", uint16_t(packet.purpose), int(m_state));
// todo: disconnect gracefully
break;
}
}

View File

@@ -33,6 +33,7 @@ private:
void handle_identification(const bmp::Packet& packet);
void handle_authentication(const bmp::Packet& packet);
void handle_mod_download(const bmp::Packet& packet);
void handle_session_setup(const bmp::Packet& packet);
io_context m_io {};
ip::tcp::socket m_tcp_socket { m_io };