public void RemovePlayer(Player player)
{
if (player.Equals(HostPlayer) && State == GameState.Lobby)
{
_server.Stop();
}
else if (player.Type == (int)PlayerType.Observer)
{
Observers.Remove(player);
if (State == GameState.Lobby)
{
GameServerPacket nwatch = new GameServerPacket(StocMessage.HsWatchChange);
nwatch.Write((short)Observers.Count);
SendToAll(nwatch);
}
player.Disconnect();
}
else if (State == GameState.Lobby)
{
Players[player.Type] = null;
IsReady[player.Type] = false;
GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange);
change.Write((byte)((player.Type << 4) + (int)PlayerChange.Leave));
SendToAll(change);
player.Disconnect();
}
else
{
Surrender(player, 4, true);
}
}