internal void RemovePlayer(Player player) { if (player.Id == 0) { Debug.LogWarning("Player disconnected with id 0. They probably didn't finish connecting"); } else { Player oplayer; _players.TryGetValue(player.Id, out oplayer); if (oplayer != player) { Debug.Log($"Finished removing player {player} over contention with id {player.Id}"); } else { _players.Remove(player.Id); PlayerCount--; } try { PlayerRemoved.Raise(player); } catch (Exception e) { Debug.LogException(e); } } }