private void Launch(Notch notch) { // Double-check incase the bow is dropped with arrow socketed if (notch.IsReady) { SetLaunch(true); UpdateLastPosition(); ApplyForce(notch.PullMeasurer); } }
// This draws a little callout on the notch to show it's frequency and bandwidth // xlimit is the right side of the picDisplay private static void drawNotchStatus(Graphics g, Notch n, int x, int y, int x_limit, int height) { // if we're not supposed to be drawing this, return to caller if (!n.Details) return; // in case notch is showing on RX1 & RX2, just show it for the one that was clicked if ((y < height && n.RX == 2) || (y > height && n.RX == 1)) return; // first we need to test if it is OK to draw the box to the right of the notch ... I don't // know the panadapter limits in x, so I will use a constant. This needs to be replaced int x_distance_from_notch = 40; int y_distance_from_bot = 20; int box_width = 120; int box_height = 55; int x_start, y_start, x_pin, y_pin; // determine if it will fit in the panadapter to the right of the notch if (x + box_width + x_distance_from_notch > x_limit) { // draw to the left x_pin = x - x_distance_from_notch; y_pin = y - y_distance_from_bot; x_start = x_pin - box_width; y_start = y_pin - (box_height / 2); } else { // draw to the right x_start = x + x_distance_from_notch; x_pin = x_start; y_pin = y - y_distance_from_bot; y_start = y_pin - (box_height / 2); } // such pretty colors of green, hardcoded for your viewing pleasure Color c = Color.DarkOliveGreen; Pen p = new Pen(Color.DarkOliveGreen, 1); Brush b = new SolidBrush(Color.Chartreuse); // Draw a nice rectangle to write into g.FillRectangle(new SolidBrush(c), x_start, y_start, box_width, box_height); // draw a left and right line on the side of the rectancle g.DrawLine(p, x, y, x_pin, y_pin); // get the Hz part of the frequency because we want to set it off from the actual number so it looks neato int right_three = (int)(n.Freq * 1e6) - (int)(n.Freq * 1e3) * 1000; double left_three = (((int)(n.Freq * 1e3)) / 1e3); //string perm = n.Permanent ? "*" : ""; g.DrawString("RF Tracking Notch", // + perm, new Font("Trebuchet MS", 9, FontStyle.Underline), b, new Point(x_start + 5, y_start + 5)); g.DrawString(left_three.ToString("f3") + " " + right_three.ToString("d3") + " MHz", new Font("Trebuchet MS", 9, FontStyle.Regular), b, new Point(x_start + 5, y_start + 20)); g.DrawString(n.BW.ToString("d") + " Hz wide", new Font("Trebuchet MS", 9, FontStyle.Regular), b, new Point(x_start + 5, y_start + 35)); }
/// <summary> /// draws the vertical bar to highlight where a notch is on the panadapter /// </summary> /// <param name="g">Graphics object reference</param> /// <param name="n">Notch object reference</param> /// <param name="left">left side of notch in pixel location</param> /// <param name="right">right side of notch, pixel location</param> /// <param name="top">top of bar</param> /// <param name="H">height of bar</param> /// <param name="on">color for notch on</param> /// <param name="off">color for notch off</param> /// <param name="highlight">highlight color to draw highlights on bar</param> /// <param name="active">true if notches are turned on</param> static void drawNotchBar(Graphics g, Notch n, int left, int right, int top, int height, Color c, Color h) { int width = right - left; int hash_spacing_pixels = 1; switch (n.Depth) { case 1: hash_spacing_pixels = 12; break; case 2: hash_spacing_pixels = 8; break; case 3: hash_spacing_pixels = 4; break; } // get a purty pen to draw with Pen p = new Pen(h, 1); // shade in the notch g.FillRectangle(new SolidBrush(c), left, top, width, height); // draw a left and right line on the side of the rectancle if wide enough if (width > 2 && tnf_active) { g.DrawLine(p, left, top, left, top + height - 1); g.DrawLine(p, right, top, right, top + height - 1); // first draw down left side of notch indicator horizontal lines -- a series of 45-degree hashes for (int y = top + hash_spacing_pixels; y < top + height - 1 + width; y += hash_spacing_pixels) { int start_y = y; int start_x = left; int end_x = right; int end_y = start_y - width; int min_y = top; int _max_y = top + height - 1; // if we are about to over-draw past the top of the rectangle, we must restrain ourselves! if (end_y < min_y) { end_x -= (min_y - end_y); end_y = top; } // if we are about to over-draw past the bottom of the rectangle, we must restrain ourselves! if (start_y > _max_y) { start_x += (start_y - _max_y); start_y = _max_y; } g.DrawLine(p, start_x, start_y, end_x, end_y); } } }
protected override void Awake() { base.Awake(); notch = GetComponentInChildren <Notch>(); }