mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-15 08:17:13 +00:00
feat(master): an edit mode flag on a private instance, down to its world server
CreatePrivateZone carries editMode as one more byte, written only when set, so a plain private zone is sent as before. Master keeps it on the instance, starts the world server with -editmode 1, and gives a private instance's replacement (a reload or a live update) the same flag. Nothing sets it yet. A capped string now skips the characters it cut, so what follows it is read from the right place. A request to join a private instance that is still starting is answered once its world server is ready, instead of at once with an address nothing listens on yet. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,12 @@ namespace {
|
||||
uint32_t length{};
|
||||
VALIDATE_READ(bitStream.Read(length));
|
||||
value.resize(std::min(length, maxLength));
|
||||
return value.empty() || bitStream.ReadBits(reinterpret_cast<unsigned char*>(value.data()), BYTES_TO_BITS(value.size()), true);
|
||||
if (!value.empty() && !bitStream.ReadBits(reinterpret_cast<unsigned char*>(value.data()), BYTES_TO_BITS(value.size()), true)) return false;
|
||||
const uint32_t rest = length - static_cast<uint32_t>(value.size());
|
||||
if (rest == 0) return true;
|
||||
if (BITS_TO_BYTES(bitStream.GetNumberOfUnreadBits()) < rest) return false;
|
||||
bitStream.IgnoreBits(BYTES_TO_BITS(rest));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,12 +152,15 @@ namespace MasterPackets {
|
||||
bitStream.Write(zoneID);
|
||||
bitStream.Write(cloneID);
|
||||
BitStreamUtils::WriteLengthPrefixed<uint32_t>(bitStream, password);
|
||||
if (editMode != 0) bitStream.Write(editMode);
|
||||
}
|
||||
|
||||
bool CreatePrivateZone::Deserialize(RakNet::BitStream& bitStream) {
|
||||
VALIDATE_READ(bitStream.Read(zoneID));
|
||||
VALIDATE_READ(bitStream.Read(cloneID));
|
||||
VALIDATE_READ(ReadCappedString(bitStream, password, MAX_PASSWORD_LENGTH));
|
||||
editMode = 0;
|
||||
if (bitStream.GetNumberOfUnreadBits() >= 8) VALIDATE_READ(bitStream.Read(editMode));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user