private void button3_Click(object sender, EventArgs e)
        {
            this.abortLocatorThread();

            this.abortAudioThread();

            this.abortBomberThread();

            enableInterfaceButtons();

            DBConnect monitorConnection = new DBConnect();

            monitorConnection.deactivateUserInDatabase( this );
        }
        public static void Start( monitorUi userDisplay )
        {
            FalconDataFormats source = new FalconDataFormats();

            Boolean soundActive = userDisplay.getSoundActive();
            string callSign     = userDisplay.getCallsign();

            Reader memReader = new Reader(source);

            Process[] processes = Process.GetProcessesByName("Falcon BMS");

            int seconds = 0;
            int minutes = 0;
            int hours   = 0;

            userDisplay.AppendTextBox("Searching for Falcon...\r\n");

            while (processes.Length < 1)
            {
                processes = Process.GetProcessesByName("Falcon BMS");

                System.Threading.Thread.Sleep(3000);
            }

            if (processes.Length > 0)
            {
                userDisplay.AppendTextBox("Falcon Found!\r\n");

                System.Diagnostics.Process eqproc = processes[0];

                int addrname = 0x4A2E848;

                DBConnect mySQLConnection = new DBConnect();

                mySQLConnection.deactivateUserInDatabase( userDisplay );

                mySQLConnection.saveUserToDatabase(0, 0, 0, callSign, userDisplay);

                while (true)
                {

                    MemoryLoc Pmhp3 = new MemoryLoc(eqproc, addrname);
                    // string nameData = Pmhp3.getString(100, false);
                    string nameData = callSign;

                    var data1 = memReader.GetCurrentData();

                    double mapratio = 30000 / ((85 * 1640) * 0.3048);

                    double xoffset = 597 * 1640;
                    double yoffset = 1402.5 * 1640;

                    double xm = (((data1.y - xoffset) * 0.3048) * mapratio);
                    double ym = (((data1.x - yoffset) * 0.3048) * mapratio);

                    string[] laserData = mySQLConnection.getBombData(userDisplay);

                    string profile = laserData[4];

                    double laserX = Convert.ToDouble(laserData[1]);
                    double laserY = Convert.ToDouble(laserData[2]);

                    double dX = xm - laserX;
                    double dY = ym - laserY;

                    double diff = Math.Sqrt(dX * dX + dY * dY);

                    bool testDistance  = diff < 3000;
                    bool testDistance2 = diff < 1600;

                    string[] laserCodes = userDisplay.getLaserCodes();

                    bool code1match = false;
                    bool code2match = false;

                    if (laserData[0] != null)
                    {
                        code1match = (laserData[0].ToString() == laserCodes[0]);
                        code2match = (laserData[0].ToString() == laserCodes[1]);
                    }

                    if (soundActive == true && testDistance && (code1match || code2match))
                    {
                        userDisplay.setActiveSound("intervalBeep");
                        userDisplay.setProfile( "" );

                        userDisplay.setLaserX(0);
                        userDisplay.setLaserY(0);
                    }

                    if (soundActive == true && testDistance2 && (code1match || code2match))
                    {
                        userDisplay.setLaserX(laserX);
                        userDisplay.setLaserY(laserY);

                        userDisplay.setProfile(profile);
                        userDisplay.setActiveSound("solidTone");
                    }

                    if (!testDistance2 && !testDistance)
                    {
                        userDisplay.setActiveSound( null );
                        userDisplay.setProfile( "" );

                        userDisplay.setLaserX( 0 );
                        userDisplay.setLaserY( 0 );
                    }

                    double altitude = data1.z * -1;

                    userDisplay.AppendTextBox("addUnit&position=[" + xm + "," + ym + "," + altitude + "]&name=" + nameData + "&active=true\r\n");

                    mySQLConnection.updateUserInDatabase(xm, ym, altitude, nameData, userDisplay);

                    /*
                    string url2 = @"http://infernusdealtis.com/terminal/update.php?page=addUnit&position=[" + xm + "," + ym + "," + data1.z + "]&name=" + nameData + "&active=true";

                    HttpWebRequest req3 = (HttpWebRequest)WebRequest.Create(url2);
                    HttpWebResponse response3 = (HttpWebResponse)req3.GetResponse();

                    response3.Close();
                    */

                    System.Threading.Thread.Sleep(2000);

                    seconds = seconds + 2;

                    string secondsText = seconds.ToString();

                    if (seconds < 10)
                    {
                        secondsText = "0" + seconds;
                    }

                    if (seconds == 60)
                    {
                        seconds = 0;
                        secondsText = "00";
                        minutes = minutes + 1;
                    }
                    if (minutes == 60)
                    {
                        hours = hours + 1;
                    }

                    string minutesText = minutes.ToString();

                    if (minutes < 10)
                    {
                        minutesText = "0" + minutes;
                    }

                    userDisplay.updateTimer(hours + " : " + minutesText + " : " + secondsText);
                }
            }

            while (true)
            {
                System.Threading.Thread.Sleep(3000);
            }
        }
        public static void Start( monitorUi userDisplay )
        {
            FalconDataFormats source = new FalconDataFormats();

            Boolean soundActive = userDisplay.getSoundActive();
            string callSign     = userDisplay.getCallsign();

            Reader memReader = new Reader(source);

            Process[] processes = Process.GetProcessesByName("Falcon BMS");

            while (processes.Length < 1)
            {
                processes = Process.GetProcessesByName("Falcon BMS");

                System.Threading.Thread.Sleep(3000);
            }

            if (processes.Length > 0)
            {
                userDisplay.AppendTextBox("Starting Bomber!\r\n");
                System.Diagnostics.Process eqproc = processes[0];

                int addrbase = 0x4E985B1;
                int addrname = 0x4A2E848;

                string bombData = "";
                string bombText = "";

                DBConnect mySQLConnection = new DBConnect();

                while (true)
                {

                    if (bombData == "")
                    {
                        MemoryLoc Pmhp = new MemoryLoc(eqproc, addrbase);
                        bombData = Pmhp.getString(6, false);
                        bombText = Pmhp.getString(6, false);
                        if (bombData.Contains("GB12"))
                        {
                            userDisplay.AppendTextBox(@"Start: " + bombData + "\r\n");
                            bombData = bombData.Replace(" GB12", "");
                            userDisplay.AppendTextBox(@"Bomb Count: " + bombData + "\r\n");
                        }
                    }

                    MemoryLoc Pmhp3 = new MemoryLoc(eqproc, addrname);
                    // string nameData = Pmhp3.getString(100, false);
                    string nameData = callSign;

                    /*
                    int index = nameData.IndexOf(" at ");

                    if (index > 0)
                    {
                        nameData = nameData.Substring(0, index);
                    }
                    else
                    {
                        nameData = "notAssigned";
                    }
                    */

                    MemoryLoc Pmhp2 = new MemoryLoc(eqproc, addrbase);

                    string bombData2 = Pmhp2.getString(6, false);
                    string bombText2 = Pmhp2.getString(6, false);

                    if (bombData2.Contains("GB12"))
                    {
                        bombData2 = bombData2.Replace(" GB12", "");
                    }
                    else
                    {
                        bombData2 = "";
                    }
                    var data1 = memReader.GetCurrentData();

                    double mapratio = 30000 / ((85 * 1640) * 0.3048);

                    double xoffset = 597 * 1640;
                    double yoffset = 1402.5 * 1640;

                    double xm = (((data1.y - xoffset) * 0.3048) * mapratio);
                    double ym = (((data1.x - yoffset) * 0.3048) * mapratio);

                    double altitude = (data1.z * 0.3048) * -1;

                    if (bombData != bombData2 && bombData != "" && bombData2 != "" && bombData != "SMS")
                    {

                        string profile = userDisplay.getProfile();

                        double laserX = userDisplay.getLaserX();
                        double laserY = userDisplay.getLaserY();

                        mySQLConnection.saveBombToDatabase(laserX, laserY, 0, profile, altitude, userDisplay);

                        userDisplay.AppendTextBox("addBomb&x=" + laserX + "&y=" + laserY + "&type=1&profile=" + profile + "&altitude=" + altitude + "\r\n");

                        /*
                        string url = @"http://infernusdealtis.com/terminal/ajax.php?page=addBomb&x=" + xm + "&y=" + ym + "&type=1";

                        HttpWebRequest req2 = (HttpWebRequest)WebRequest.Create(url);
                        HttpWebResponse response = (HttpWebResponse)req2.GetResponse();

                        response.Close();
                        */

                        bombData = bombData2;
                    }

                    System.Threading.Thread.Sleep(2000);
                }
            }

            while (true)
            {
                System.Threading.Thread.Sleep(3000);
            }
        }