public static void RemoveFromMatchMaking(int fromClient, Packet packet) { var isClientInParty = packet.ReadBool(); if (isClientInParty) //Player In Party { var partyID = Dictionaries.dictionaries.PlayerDataHolders[fromClient].PartyID; var partyMembers = Parties.GetParty(partyID); foreach (var member in partyMembers) { HandleMatchMaking.RemoveFromQueue(member); ServerSend.MatchMakingState(Dictionaries.dictionaries.PlayersByName[member.Username]); } } else //Player Is NOT IN PARTY { HandleMatchMaking.RemoveFromQueue(Dictionaries.dictionaries.PlayerDataHolders[fromClient]); ServerSend.MatchMakingState(fromClient); } }
/// <summary>Closes and cleans up the TCP connection.</summary> public void Disconnect() { var item = Dictionaries.dictionaries.PlayersByName.FirstOrDefault(kvp => kvp.Value == id); if (item.Key != null) { if (Dictionaries.dictionaries.PlayerDataHolders[id].GetMatchId() != 0) { //Dictionaries.Matches[Dictionaries.PlayerDataHolders[id].GetMatchId()].myGamePLay.RemoveGameObjectFromMatch(id); ThreadManager.ExecuteOnMainThread(() => { // ServerConsoleWriter.WriteLine($"Destroying GameObjects related to Player {id}..."); //Dictionaries.PlayerDataHolders[id].DestroyGameObject(); Dictionaries.dictionaries.PlayerDataHolders[id].SetMatchId(0); HandleMatchMaking.RemoveFromQueue(Dictionaries.dictionaries.PlayerDataHolders[id]); Dictionaries.dictionaries.PlayerDataHolders.Remove(id); Dictionaries.dictionaries.PlayersById.Remove(id); Dictionaries.dictionaries.PlayersByName.Remove(item.Key); }); } else { ThreadManager.ExecuteOnMainThread(() => { //ServerConsoleWriter.WriteLine($"Player {id} had not started a game so no gameobject should be destroyed"); HandleMatchMaking.RemoveFromQueue(Dictionaries.dictionaries.PlayerDataHolders[id]); Dictionaries.dictionaries.PlayerDataHolders.Remove(id); Dictionaries.dictionaries.PlayersById.Remove(id); Dictionaries.dictionaries.PlayersByName.Remove(item.Key); }); } //ServerConsoleWriter.WriteLine($"Player {id} has been successfully disconnected"); } //Dictionaries.Parties.Remove(id); Socket.Close(); stream = null; receivedData = null; receiveBuffer = null; Socket = null; }