/// <summary> /// Adds the PlayerEntity to the RecentlyOnlinePlayers dictionary by its CharacterID Note: CharacterId is the ID from the database, CharacterId not equals to ID. /// Removes the requested PlayerEntity from the PlayersById, PlayersByUid dictionaries, and the containing GridCell. /// </summary> /// <param name="requestedCharacter"></param> /// <returns></returns> public bool RemovePlayer(PlayerEntity requestedCharacter) { if (requestedCharacter.Connection != null && requestedCharacter.Connection.Status != Lidgren.Network.NetConnectionStatus.Disconnected) { requestedCharacter.Connection.Disconnect("Removed"); } RecentlyOnlinePlayers.TryAdd(requestedCharacter.CharacterId, requestedCharacter); if (PlayersByUid.TryRemove(requestedCharacter.Uid, out _)) { Console.WriteLine("Player removed from PlayersById"); } else { Console.WriteLine("Character can not be removed or not exists!"); } if (PlayersById.TryRemove(requestedCharacter.Id, out _)) { Console.WriteLine("Player removed from PlayersByUid"); } else { Console.WriteLine("Character can not be removed or not exists!"); } return(requestedCharacter.GridCell.Remove(requestedCharacter)); }
public void FullRemovePlayer(PlayerEntity player) { if (PlayersByUid.TryRemove(player.Uid, out _)) { Console.WriteLine("Player removed from PlayersById"); } else { Console.WriteLine("Character can not be removed or not exists!"); } if (PlayersById.TryRemove(player.Id, out _)) { Console.WriteLine("Player removed from PlayersByUid"); } else { Console.WriteLine("Character can not be removed or not exists!"); } player.GridCell.Remove(player); }