]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Welcome message: combine bool networking into a bitfield
authorbones_was_here <bones_was_here@xonotic.au>
Fri, 29 Mar 2024 08:46:29 +0000 (18:46 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Fri, 29 Mar 2024 09:19:22 +0000 (19:19 +1000)
qcsrc/client/main.qc
qcsrc/server/client.qc

index 90917341a29a67bbc69e9f0cc74a05328015cd0c..9d45c455412380f3bdc26ef1a6c751766feef8ed 100644 (file)
@@ -1414,7 +1414,9 @@ string GetVersionMessage(string hostversion, bool version_mismatch, bool version
 
 bool net_handle_ServerWelcome()
 {
-       campaign = ReadByte();
+       int flags = ReadByte();
+
+       campaign = flags & 1;
        if (campaign)
        {
                int campaign_level = ReadByte();
@@ -1435,8 +1437,8 @@ bool net_handle_ServerWelcome()
 
        strcpy(hostname, ReadString());
        string hostversion = ReadString();
-       bool version_mismatch = ReadByte();
-       bool version_check = ReadByte();
+       bool version_mismatch = flags & 2;
+       bool version_check = flags & 4;
        srv_minplayers = ReadByte();
        srv_maxplayers = ReadByte();
        string modifications = translate_modifications(ReadString());
index c1ee3aceb39780f2b3ede953fd45ff0aac798c60..4085736233417411c9b64464d29c1ecdbd9ee576 100644 (file)
@@ -1041,16 +1041,23 @@ void ClientPreConnect(entity this)
 // also note that they aren't all registered mutators, e.g. jetpack, low gravity
 void SendWelcomeMessage(entity this, int msg_type)
 {
-       WriteByte(msg_type, boolean(autocvar_g_campaign));
        if (boolean(autocvar_g_campaign))
        {
+               WriteByte(msg_type, 1);
                WriteByte(msg_type, Campaign_GetLevelNum());
                return;
        }
+
+       int flags = 0;
+       if (CS(this).version_mismatch)
+               flags |= 2;
+       if (CS(this).version < autocvar_gameversion)
+               flags |= 4;
+       WriteByte(msg_type, flags);
+
        WriteString(msg_type, autocvar_hostname);
        WriteString(msg_type, autocvar_g_xonoticversion);
-       WriteByte(msg_type, CS(this).version_mismatch);
-       WriteByte(msg_type, (CS(this).version < autocvar_gameversion));
+
        WriteByte(msg_type, autocvar_g_warmup > 1 ? autocvar_g_warmup : map_minplayers);
        WriteByte(msg_type, GetPlayerLimit());