Esempio n. 1
0
        /// <summary>
        /// Creates a GameManager instance which holds each match. Called from the lobby queue
        /// </summary>
        /// <param name="gameInfo">Match configuration</param>
        /// <param name="teamInfo">players information (players + bots)</param>
        public static void CreateGameManager(LobbyGameInfo gameInfo, LobbyTeamInfo teamInfo, List <long> PlayerSessionTokens)
        {
            if (string.IsNullOrEmpty(gameInfo.GameConfig.RoomName))
            {
                throw new EmptyRoomNameGameServerException();
            }
            try
            {
                EvosServer server = new EvosServer();
                server.Setup(gameInfo, teamInfo);
                ActiveServers.Add(gameInfo.GameConfig.RoomName, server);
                foreach (long sessionToken in PlayerSessionTokens)
                {
                    ServersByPlayerSessionToken.Add(sessionToken, server);
                }

                server.OnStop += HandleOnServerStop;

                Log.Print(LogType.Debug, "Game Server Launched with name " + gameInfo.GameConfig.RoomName);
            }
            catch (System.Exception e)
            {
                throw new EvosException("Error Creating Game Manager", e);
            }
        }
Esempio n. 2
0
 /// <summary> Removes from memory the references to the server </summary>
 public static void HandleOnServerStop(EvosServer server)
 {
     ActiveServers.Remove(server.GetRoomName());
     foreach (long sessionToken in ServersByPlayerSessionToken.Keys)
     {
         if (ServersByPlayerSessionToken[sessionToken] == server)
         {
             ServersByPlayerSessionToken.Remove(sessionToken);
         }
     }
 }