Esempio n. 1
0
        /// <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);
         }
     }
 }