/// <summary> /// Get opponent client from matching queue. /// </summary> /// <param name="client"> Client who request matching. </param> public static void MatchingRequest(Client client) { var oppoClient = MatchingManager.MatchProcess(client); if (oppoClient == null) return; oppoClient.BeginSend("OnSucceedMatching", client.MatchingData); client.BeginSend("OnSucceedMatching", oppoClient.MatchingData); }
/// <summary> /// Accept connection request of client. /// </summary> /// <param name="ar"></param> private void OnAcceptCallback(IAsyncResult ar) { var socket = (Socket)ar.AsyncState; var clientSocket = socket.EndAccept(ar); var newClient = new Client(clientSocket); GameManager.AddClient(newClient); newClient.BeginReceive(); _serverSocket.BeginAccept(OnAcceptCallback, _serverSocket); }
/// <summary> /// Get client info from DB whis has same device ID. /// </summary> /// <param name="client"> Accepted client. </param> public static void LoginRequest(Client client) { //DatabaseManager.GetClientInfo(client); // Write code to get Login Information from DB (now temporary) var nick = "Ragdoll"; var wins = 10; var loses = 5; // ... client.LoginData = new ProfilePacket { NickName = nick, Wins = wins, Loses = loses }; client.BeginSend("OnSucceedLogin", client.LoginData); }
internal static Client MatchProcess(Client client) { if (Clients.Any()) { var r = new Random(); var idx = r.Next(0, Clients.Count); var opponent = Clients[idx]; Clients.Remove(opponent); opponent.MatchingData.TeamColor = 1; client.MatchingData.TeamColor = 2; return opponent; } else { Clients.Add(client); return null; } }
/// <summary> /// Remove client that requested matching. /// </summary> /// <param name="client"> Client who request to cancel matching. </param> public static void MatchingCancelRequest(Client client) { MatchingManager.MatchCancelProcess(client); }
/// <summary> /// Process ingame request and send result to clients. /// </summary> /// <param name="client"></param> public static void IngameRequest(Client client) { // Write code for game logic. }
/// <summary> /// Add connected client to list /// </summary> /// <param name="c"> Connected client. </param> public static void AddClient(Client c) { Clients.Add(c); Console.WriteLine("\nGAME MANAGER : client was added.\n"); PrintConnectedClients(); }
/// <summary> /// Remove disconnected client from list. /// </summary> /// <param name="c"> Disconnected client. </param> public static void ReleaseClient(Client c) { Clients.Remove(c); Console.WriteLine("\nGAME MANAGER : client was removed.\n"); PrintConnectedClients(); }
internal static void SetClientInfo(Client client) { }
internal static void MatchCancelProcess(Client client) { Clients.Remove(client); }