Example #1
0
        /// <summary>
        /// Triggers every time we've got a new target lock, updates the aiming of the rocket launcher to match
        /// </summary>
        private void TrackAndFireThread()
        {
            _frameLock.WaitOne();
            currentCenter[0] = _currentFrame.Size.Width / 2;
            currentCenter[1] = _currentFrame.Size.Height / 2;
            _frameLock.Release();

            while (_ParticleFilterRunning)
            {
                bool centered = _Centered.WaitOne(1000);
                if (centered)
                {
                    int[] center  = pf.findCenter();
                    int   xoffset = currentCenter[0] - center[0];
                    int   yoffset = currentCenter[1] - center[1];
                    currentCenter[0] = center[0];
                    currentCenter[1] = center[1];
                    if (xoffset > 1)
                    {
                        _Commander.Left(xoffset * _pixelsToMilliseconds);
                        Pause.WaitOne(xoffset * 4); //movements get lost if they're sent too closely together
                    }
                    if (xoffset < 1)
                    {
                        xoffset = Math.Abs(xoffset);
                        _Commander.Right(xoffset * _pixelsToMilliseconds);
                        Pause.WaitOne(xoffset * 4); //movements get lost if they're sent too closely together
                    }
                    if (yoffset > 1)
                    {
                        _Commander.Up(yoffset * _pixelsToMilliseconds);
                        Pause.WaitOne(xoffset * 4); //movements get lost if they're sent too closely together
                    }
                    if (yoffset < 1)
                    {
                        yoffset = Math.Abs(yoffset);
                        _Commander.Down(yoffset * _pixelsToMilliseconds);
                        Pause.WaitOne(xoffset * 4); //movements get lost if they're sent too closely together
                    }
                    Pause.WaitOne(500);             //Prevent Jerking motions
                }
            }
        }
Example #2
0
        private void Button_Click(object sender, EventArgs e)
        {
            Button button = (Button)sender;

            switch (Convert.ToInt32(button.Tag))
            {
            case 1:
                for (int i = 1; i < 4; i++)
                {
                    launcher.Down(25);
                    launcher.Left(25);
                }
                break;

            case 2:
                launcher.Down(25 * trackBar2.Value);
                break;

            case 3:
                for (int i = 1; i < 4; i++)
                {
                    launcher.Down(25);
                    launcher.Right(25);
                }
                break;

            case 4:
                launcher.Left(25 * trackBar2.Value);
                break;

            case 5:
                SmoothMove(100, Direction.Left);
                SmoothMove(100, Direction.Right);
                break;

            case 6:
                launcher.Right(25 * trackBar2.Value);
                break;

            case 7:
                for (int i = 1; i < 4; i++)
                {
                    launcher.Up(25);
                    launcher.Left(25);
                }
                break;

            case 8:
                launcher.Up(25 * trackBar2.Value);
                break;

            case 9:
                for (int i = 1; i < 4; i++)
                {
                    launcher.Up(25);
                    launcher.Right(25);
                }
                break;

            default:
                break;
            }
        }