Exemplo n.º 1
0
        public AGMUI()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            int hr = GetAdminSession(out ias);

            tbEvents.Text += "GetSession = " + hr.ToString() + "\r\n";
            if (hr != 0)
            {
                return;
            }
            iserver = ias.Server;
            btRefreshGames_Click(null, null);

            UCOMIConnectionPointContainer icpc = (UCOMIConnectionPointContainer)ias;
            Guid riid = new Guid("DE3ED156-76A0-4A8E-8CFE-9ED26C3B0A5E");

            icpc.FindConnectionPoint(ref riid, out icp);
            myCookie = 0;
            icp.Advise((IAdminSessionEvents)this, out myCookie);
            ias.ActivateAllEvents();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Fills the PlayerTable with players and their teams
        /// </summary>
        /// <param name="server">A reference to the Allsrv server</param>
        public void Initialize(IAdminServer server)
        {
            _players.Clear();
            foreach (IAdminUser User in server.Users)
            {
                string   Callsign = User.Name;
                IAGCGame TempGame = User.Ship.Game;
                int      GameID   = TempGame.GameID;

                // Find this player's team
                int TeamID = 0;
                for (int j = 0; j < TempGame.Teams.Count; j++)
                {
                    object   TeamIndex = j;
                    IAGCTeam Team      = TempGame.Teams.get_Item(ref TeamIndex);

                    if (User.Ship.Team == Team)
                    {
                        break;
                    }

                    TeamID += 1;
                }

                _players.Rows.Add(new object[] { Callsign, GameID, TeamID });
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates an empty player list
        /// </summary>
        /// <param name="server">A reference to the Allsrv gameserver</param>
        public Players(IAdminServer server)
        {
            _server = server;

            // Create the table
            DataTable Table = new DataTable("Players");

            Table.Columns.Add("Callsign", typeof(string));
            Table.Columns.Add("Game", typeof(int));
            Table.Columns.Add("Team", typeof(int));

            _players = Table;
        }
Exemplo n.º 4
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.");
        }
Exemplo n.º 5
0
        /// <summary>
        /// Disconnects from Allsrv and releases any resources in use.
        /// </summary>
        public static void Disconnect()
        {
            if (_connector != null)
            {
                _connector.Disconnect();
                _connector = null;
            }

            _server = null;
            if (_games != null)
            {
                _games.Clear();
                _games = null;
            }

            if (_players != null)
            {
                _players.Clear();
                _players = null;
            }
        }