Пример #1
0
        /// <summary>
        /// Disconnects from allsrv, logs games that were in progress and shuts down TAG.
        /// </summary>
        public static void Stop()
        {
            TagTrace.WriteLine(TraceLevel.Info, "Shutting down...");
            // De-initialize core (unhook events)
            AGCEventHandler.Uninitialize();
            TagTrace.WriteLine(TraceLevel.Verbose, "Events unhooked.");

            TagTrace.WriteLine(TraceLevel.Info, "Shutting the logger down...");
            // Shutdown the logger
            GameLogger.Uninitialize();
            TagTrace.WriteLine(TraceLevel.Verbose, "Logger shut down.");

            TagTrace.WriteLine(TraceLevel.Info, "Disconnecting from Allsrv...");
            // Disconnect from allsrv
            GameServer.Disconnect();
            TagTrace.WriteLine(TraceLevel.Verbose, "Disconnected.");

            TagTrace.WriteLine(TraceLevel.Info, "Exiting...");
            // Signal the "Main" thread to end processing
            if (_closeAppResetEvent != null)
            {
                _closeAppResetEvent.Set();
            }

            // Allow the main thread to end, or force-close after 5s
            if (_mainThread != null)
            {
                _mainThread.Join(5000);
            }

            // Shutdown Tracing and Debugging
            TagTrace.Uninitialize();
            TagTrace.Uninitialize();
        }
Пример #2
0
        /// <summary>
        /// Initializes the GameServer and reads the games from the server
        /// </summary>
        public static void Initialize()
        {
            _players = new Players(_server);

            // Start Allsrv if not already started
            if (!AllsrvConnector.IsRunning())
            {
                AllsrvConnector.StartAllsrv();
            }

            // Connect to Allsrv and retrieve the server object
            _connector = AllsrvConnector.Connect();
            _server    = _connector.Session.Server;
            TagTrace.WriteLine(TraceLevel.Info, "Connection to Allsrv established.");

            // Load Player list
            TagTrace.WriteLine(TraceLevel.Verbose, "Retrieving players...");
            _players.Initialize(_server);
            TagTrace.WriteLine(TraceLevel.Info, "Playerlist loaded. {0} players online.", _players.Count);

            // Read the games
            TagTrace.WriteLine(TraceLevel.Verbose, "Reading Games...");
            _games = new Games();
            for (int i = 0; i < _server.Games.Count; i++)
            {
                object   Index    = (object)i;
                IAGCGame TempGame = _server.Games.get_Item(ref Index);
                Game     NewGame  = new Game(TempGame);
                _games.Add(NewGame);

                // Initialize game if in progress
                if (NewGame.InProgress)
                {
                    // Get StartTime
                    DateTime StartTime = DateTime.FromOADate(TempGame.GameParameters.TimeStart);

                    // Initialize game
                    NewGame.Start(StartTime);

                    // Log event
                    NewGame.GameData.LogGameStarted(StartTime);
                }
            }
            TagTrace.WriteLine(TraceLevel.Info, "Games read. {0} games online.", _games.Count);

            // Connect event handlers
            TagTrace.WriteLine(TraceLevel.Verbose, "Hooking up events...");
            AGCEventHandler.Initialize(_connector);
            TagTrace.WriteLine(TraceLevel.Verbose, "Events connected.");
        }
Пример #3
0
        /// <summary>
        /// Handles the Terminate AGCEvent
        /// </summary>
        /// <param name="sender">The object firing the event</param>
        /// <param name="e">The arguments of the event</param>
        public static void TerminateAGCEventHandler(object sender, TerminateAGCEventArgs e)
        {
            try
            {
                TagTrace.WriteLine(TraceLevel.Verbose, "Terminate event received.");

                // De-initialize core (unhook events)
                AGCEventHandler.Uninitialize();

                // Kill all game info
                GameServer.Disconnect();

                // Start reconnect timer
                ReconnectTimer.Start();
            }
            catch (Exception ex)
            {
                TagTrace.WriteLine(TraceLevel.Error, "Error handling Terminate event: {0}", ex.Message);
            }
        }