bool net_handle_ServerWelcome()
{
- campaign = ReadByte();
+ int flags = ReadByte();
+
+ campaign = flags & 1;
if (campaign)
{
int campaign_level = ReadByte();
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());
// 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());