/// <summary> /// Check if the game can be started /// Current condition checks if the count of connected players matches the expected amount /// </summary> private void StartGame() { matchGameEventWrapper.GameStarted_Invoke(matchThread.GetServer()); matchThread.pingDeterminer.CalculateMatchPing(); List <Shared_PlayerInfo> playerInfoes = matchThread.GetConnectedClientsInfo(); foreach (var client in matchThread.GetConnectedClients()) { Message_Response_GameAllConnected gameData = new Message_Response_GameAllConnected( client.Value.info, playerInfoes, matchThread.clock.GetTimeForClient(client.Value)); sender.Send(gameData, client.Value); foreach (var extension in serverExtensions) { var msgList = extension.GetMessagesForClientSetup(client.Value, matchThread.clock); foreach (var msg in msgList) { if (msg != null) { matchThread.GetServer().messageSender.SendToAll(msg, matchThread.GetServer().clientManager.GetClients()); } } } } matchThread.updater.Remove(this); }
/// <summary> /// Forwards a message to all clients but the given one /// Temporary implementation for handling unknown messages /// </summary> /// <param name="data">Message to be forwarded</param> /// <param name="client">Client that original send it</param> private void ForwardMessageToOtherClients(object data, Server_ServerClient client) { foreach (var otherClient in matchThread.GetServer().clientManager.GetClients()) { if (client != otherClient) { matchThread.GetServer().messageSender.Send(data, otherClient); } } }