ConnectedPlayerData GetNewConnectedPlayerData(Socket socket, int searchedPlayerAmount) { ConnectedPlayerData connectedPlayerData = new ConnectedPlayerData(socket, ConnectedSocketState.WaitingForPlayers, searchedPlayerAmount); return(connectedPlayerData); }
void ProcessConnectionError(ConnectedPlayerData user) { m_IsActive = false; user.socket.Close(); ConnectionErrorDelegate connectionErrorDelegate; if (m_EventsManager.TryGetDelegate(DelegateType.ConnectionError, out connectionErrorDelegate)) { Task.Run(() => connectionErrorDelegate.Invoke()); } else { Console.Write($"{DelegateType.ConnectionError.ToString()} was not invoked"); } }
void AddNewConnectedUser(int searchedPlayerAmount, Socket socket) { //#TODO remove after debugging if (searchedPlayerAmount == 1) { ConnectedPlayerData connectedPlayerData = GetNewConnectedPlayerData(socket, searchedPlayerAmount); List <ConnectedPlayerData> temp = new List <ConnectedPlayerData>(); temp.Add(connectedPlayerData); FinalizeConnection(temp); Task.Run(() => m_OnPlayersConnectedCallback(temp)); return; } ///////////////////////////////////////////////////////////////////////// List <ConnectedPlayerData> pendingPlayersForSearchedAmount; if (m_PendingPlayers.TryGetValue(searchedPlayerAmount, out pendingPlayersForSearchedAmount)) { ConnectedPlayerData connectedPlayerData = GetNewConnectedPlayerData(socket, searchedPlayerAmount); pendingPlayersForSearchedAmount.Add(connectedPlayerData); Console.WriteLine($"{pendingPlayersForSearchedAmount.Count.ToString()} player(s) for {searchedPlayerAmount} players room"); if (searchedPlayerAmount == pendingPlayersForSearchedAmount.Count) { Console.WriteLine($"Readiness check for {searchedPlayerAmount} players room"); FinalizeConnection(pendingPlayersForSearchedAmount); Task.Run(() => m_OnPlayersConnectedCallback(pendingPlayersForSearchedAmount)); m_PendingPlayers.Remove(searchedPlayerAmount); } } else { List <ConnectedPlayerData> newPendingPlayerForSearchedAmount = new List <ConnectedPlayerData>(); ConnectedPlayerData connectedPlayerData = GetNewConnectedPlayerData(socket, searchedPlayerAmount); newPendingPlayerForSearchedAmount.Add(connectedPlayerData); Console.WriteLine($"{newPendingPlayerForSearchedAmount.Count.ToString()} player(s) for {searchedPlayerAmount} players room"); m_PendingPlayers.Add(searchedPlayerAmount, newPendingPlayerForSearchedAmount); } }