using (var packet = MessageWriter.Get(SendOption.Reliable))
{
- WriteRemovePlayerMessage(packet, false, playerId, reason);
+ WriteRemovePlayerMessage(packet, false, playerId, (DisconnectReason) reason);
SendToAllExcept(packet, player);
}
}
player.Game = null;
}
- WriteRemovePlayerMessage(message, true, playerId, 0);
+ WriteRemovePlayerMessage(message, true, playerId, isBan
+ ? DisconnectReason.Banned
+ : DisconnectReason.Kicked);
SendToAllExcept(message, player);
}
}
}
}
- private void WriteRemovePlayerMessage(MessageWriter message, bool clear, int playerId, byte reason)
+ private void WriteRemovePlayerMessage(MessageWriter message, bool clear, int playerId, DisconnectReason reason)
{
+ // Only a subset of DisconnectReason shows an unique message.
+ // ExitGame, Banned and Kicked.
+
if (clear)
{
message.Clear(SendOption.Reliable);
message.Write(Code);
message.Write(playerId);
message.Write(HostId);
- message.Write(reason);
+ message.Write((byte) reason);
message.EndMessage();
}