diff options
Diffstat (limited to 'source/game/StarUniverseClient.cpp')
-rw-r--r-- | source/game/StarUniverseClient.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/source/game/StarUniverseClient.cpp b/source/game/StarUniverseClient.cpp index af33508..b41d19e 100644 --- a/source/game/StarUniverseClient.cpp +++ b/source/game/StarUniverseClient.cpp @@ -71,7 +71,7 @@ PlayerPtr UniverseClient::mainPlayer() const { return m_mainPlayer; } -Maybe<String> UniverseClient::connect(UniverseConnection connection, bool allowAssetsMismatch, String const& account, String const& password) { +Maybe<String> UniverseClient::connect(UniverseConnection connection, bool allowAssetsMismatch, String const& account, String const& password, bool const& forceLegacy) { auto& root = Root::singleton(); auto assets = root.assets(); @@ -85,9 +85,11 @@ Maybe<String> UniverseClient::connect(UniverseConnection connection, bool allowA { auto protocolRequest = make_shared<ProtocolRequestPacket>(StarProtocolVersion); - protocolRequest->setCompressionMode(PacketCompressionMode::Enabled); - // Signal that we're OpenStarbound. Vanilla Starbound only compresses - // packets above 64 bytes - by forcing it, we can communicate this. + if (!forceLegacy) { + protocolRequest->setCompressionMode(PacketCompressionMode::Enabled); + // Signal that we're OpenStarbound. Vanilla Starbound only compresses + // packets above 64 bytes - by forcing it, we can communicate this. + } connection.pushSingle(protocolRequest); } connection.sendAll(timeout); @@ -101,7 +103,7 @@ Maybe<String> UniverseClient::connect(UniverseConnection connection, bool allowA NetCompatibilityRules compatibilityRules; compatibilityRules.setVersion(LegacyVersion); - bool legacyServer = protocolResponsePacket->compressionMode() != PacketCompressionMode::Enabled; + bool legacyServer = forceLegacy || (protocolResponsePacket->compressionMode() != PacketCompressionMode::Enabled); if (!legacyServer) { auto compressedSocket = as<CompressedPacketSocket>(&connection.packetSocket()); if (protocolResponsePacket->info) { @@ -484,10 +486,13 @@ bool UniverseClient::flying() const { return false; } -void UniverseClient::sendChat(String const& text, ChatSendMode sendMode, Maybe<bool> speak) { +void UniverseClient::sendChat(String const& text, ChatSendMode sendMode, Maybe<bool> speak, Maybe<JsonObject> data) { if (speak.value(!text.beginsWith("/"))) m_mainPlayer->addChatMessage(text); - m_connection->pushSingle(make_shared<ChatSendPacket>(text, sendMode)); + auto packet = make_shared<ChatSendPacket>(text, sendMode); + if (data) + packet->data = std::move(*data); + m_connection->pushSingle(packet); } List<ChatReceivedMessage> UniverseClient::pullChatMessages() { |