Example #1
0
        void CheckInTimer_Tick(object sender, System.EventArgs e)
        {
            DebugDetector.AssertCheckRunning();

            MainForm.SetStatusBar("Checking in...");

            var message = string.Empty;
            var ticket  = string.Empty;
            var data    = SessionNegotiator.GenerateCheckInData();
            var result  = SessionNegotiator.CheckIn(data, ref message, ref ticket);

            if (result != CheckInStatus.Ok)
            {
                //Close Allegiance
                AllegianceLoader.ExitAllegiance();

                //Unlock form
                this.Enabled = true;

                MainForm.SetStatusBar(message);
            }
            else
            {
                MainForm.SetStatusBar(string.Format("Checked in at {0:h:mm tt}.", DateTime.Now));
            }

            GC.Collect(); //Now is a decent time to force garbage collection
        }
Example #2
0
        private void _playOfflineButton_Click(object sender, EventArgs e)
        {
            _playOfflineButton.Enabled = false;

            AllegianceLoader.StartAllegiance(String.Empty, LobbyType.Production, String.Empty, new Utility.TaskDelegate(delegate(Object context)
            {
                AllegianceLoader.AllegianceExit += new EventHandler(AllegianceLoader_AllegianceExit);
            }));
        }
        public static void AssertCheckRunning()
        {
#if !DEBUG
            if (Debugger.IsAttached || !IsCheckRunning)
            {
                //Exit Allegiance if it is running
                AllegianceLoader.ExitAllegiance();

                KillProcess();
                throw new Exception("Debug check not running.");
            }
#endif
        }
        private void Logout(bool closeAllegiance)
        {
            MainForm.SetStatusBar("Logged out");

            //Stop timer
            CheckInTimer.Stop();

            //Close Allegiance
            if (closeAllegiance)
            {
                AllegianceLoader.ExitAllegiance();
            }

            //Tell the server you are logging out
            SessionNegotiator.Logout(false);

            SetLoggedIn(false);
        }
Example #5
0
        private static void StartMainForm()
        {
            try
            {
                do
                {
                    Application.Run(new MainForm());

                    if (MainForm.Restart == true)
                    {
                        if (!ServiceHandler.CheckLogin())
                        {
                            using (var loginForm = new LoginForm())
                            {
                                if (loginForm.ShowDialog() != DialogResult.OK)
                                {
                                    return;
                                }

                                //launcherSignInStatus = loginForm.LauncherSignInStatus;
                            }
                        }
                    }
                } while (MainForm.Restart == true);
            }
            catch (Exception ex)
            {
                File.WriteAllText("ExceptionLog.txt", ex.ToString());
                throw;
            }
            finally
            {
                if (MainForm.LoggedIn)
                {
                    SessionNegotiator.Logout(true);
                }

                SystemWatcher.Close();
                AllegianceLoader.ExitAllegiance();
            }
        }
        internal void LoginToLobby(LobbyType lobbyType)
        {
            //Verify the form is filled out
            if (string.IsNullOrEmpty(_loginComboBox.Text))
            {
                return;
            }

            // TODO: Figure out where the alleg exe is and send it to the launcher.

            //Create a new session
            var signal = new TaskDelegate(delegate(object input)
            {
                var parameters = input as object[];
                var status     = (CheckInStatus)parameters[0];
                var message    = parameters[1] as string;
                var alias      = parameters[2] as string;
                var ticket     = parameters[3] as string;

                int rank = 0;

                if (parameters[4] != null)
                {
                    rank = (int)parameters[4];
                }

                Regex aliasFinder = new Regex(
                    "(?<callsign>.*?)(\\(\\d+\\))?$",
                    RegexOptions.ExplicitCapture
                    | RegexOptions.CultureInvariant
                    | RegexOptions.Compiled
                    );

                var match = aliasFinder.Match(alias);
                if (match.Success == true)
                {
                    alias = match.Groups["callsign"].Value;
                }

                if (status == CheckInStatus.AccountLinked)
                {
                    if (ReloadCallsigns != null)
                    {
                        ReloadCallsigns();
                    }
                }

                if (status == CheckInStatus.Ok || status == CheckInStatus.AccountLinked)
                {
                    //Initialize check-in interval
                    CheckInTimer          = new Timer();
                    CheckInTimer.Interval = CheckInInterval;
                    CheckInTimer.Tick    += new EventHandler(CheckInTimer_Tick);
                    CheckInTimer.Start();

                    //Launch Allegiance
                    MainForm.SetStatusBar("Launching Allegiance...");

                    //Store last-used alias
                    if (!string.Equals(DataStore.LastAlias, alias))
                    {
                        DataStore.LastAlias = alias;
                        DataStore.Instance.Save();
                    }

                    if (rank <= 5)
                    {
                        alias += "(" + rank + ")";
                    }


                    AllegianceLoader.StartAllegiance(ticket, lobbyType, alias, delegate(object param)
                    {
                        var result = (bool)param;

                        if (!result)
                        {
                            Logout();

                            MainForm.SetStatusBar("Failed to launch Allegiance.");
                        }
                        else
                        {
                            //AllegianceLoader.AllegianceProcess.OnExiting
                            //  += new EventHandler(AllegianceProcess_OnExiting);

                            AllegianceLoader.AllegianceExit
                                += new EventHandler(AllegianceProcess_OnExiting);
                        }
                    });

                    SetLoggedIn(true);

                    if (DataStore.Preferences.AutoLogin)
                    {
                        MainForm.HideForm();
                    }
                }
                else
                {
                    MainForm.SetStatusBar(message);

                    if (status == CheckInStatus.VirtualMachineBlocked)
                    {
                        VirtualMachineInfo virtualMachineInfo = new VirtualMachineInfo();
                        virtualMachineInfo.ShowDialog();
                    }

                    this.Enabled = true;

                    SystemWatcher.Close();
                }
            });

            SessionNegotiator.Login(_loginComboBox.Text, lobbyType.ToString(), delegate(object input)
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(signal, input);
                }
                else
                {
                    signal(input);
                }
            });
        }