private void Save_Button_Click(object sender, EventArgs e)
        {
            isOpened = false;

            //Parse the fields, verify coordinate format, and save to Current_Mission
            Interoperability.getinstance().Current_Mission = new Mission(Parse_Mission());

            this.Close();
        }
        public static List <Waypoint> DMSwithAltitudetoWaypoints(string DMS)
        {
            List <Waypoint> Waypoint_List = new List <Waypoint>();

            //If string is empty, then don't do anything
            if (DMS.Replace(" ", "") == "")
            {
                return(Waypoint_List);
            }

            Waypoint Temp_Waypoint;

            char[] delimiterChars = { ' ' };
            DMS = DMS.Replace("\r\n", " ").Replace("\r", "").Replace("\n", " ");
            string[] DMS_SPLIT = DMS.Split(delimiterChars);

            List <string> DMS_FILTERED = new List <string>();

            //Filter out all the "" items
            for (int i = 0; i < DMS_SPLIT.Count(); i++)
            {
                if (DMS_SPLIT[i] != "")
                {
                    DMS_FILTERED.Add(DMS_SPLIT[i]);
                }
            }

            int num_pairs = DMS_FILTERED.Count / 3;

            try {
                for (int i = 0; i < num_pairs; i++)
                {
                    Temp_Waypoint = Interoperability.DMStoDD(DMS_FILTERED[i * 3], DMS_FILTERED[i * 3 + 1]);
                    if (Temp_Waypoint.empty == false)
                    {
                        Temp_Waypoint.altitude_msl = (float)Convert.ToDouble(DMS_FILTERED[i * 3 + 2]);
                        Waypoint_List.Add(Temp_Waypoint);
                    }
                }
            }
            catch {
                //Do nothing
            }

            return(Waypoint_List);
        }
        public static List <Waypoint> DMStoWaypoints(string DMS)
        {
            List <Waypoint> Waypoint_List = new List <Waypoint>();

            //If string is empty, then don't do anything
            if (DMS.Replace(" ", "") == "")
            {
                return(Waypoint_List);
            }

            Waypoint Temp_Waypoint;

            char[] delimiterChars = { ' ' };
            DMS = DMS.Replace("\r\n", " ").Replace("\r", "").Replace("\n", " ");
            string[] DMS_SPLIT = DMS.Split(delimiterChars);

            List <string> DMS_FILTERED = new List <string>();

            //Filter out all the "" items
            for (int i = 0; i < DMS_SPLIT.Count(); i++)
            {
                if (DMS_SPLIT[i] != "")
                {
                    DMS_FILTERED.Add(DMS_SPLIT[i]);
                }
            }

            int num_pairs = DMS_FILTERED.Count / 2;

            for (int i = 0; i < num_pairs; i++)
            {
                Temp_Waypoint = Interoperability.DMStoDD(DMS_FILTERED[i * 2], DMS_FILTERED[i * 2 + 1]);
                if (Temp_Waypoint.empty == false)
                {
                    Waypoint_List.Add(Temp_Waypoint);
                }
            }
            return(Waypoint_List);
        }
示例#4
0
 // Done!
 private void MainWindow_MouseDown(object sender, MouseButtonEventArgs e)
 {
     Interoperability.SendMessage(new WindowInteropHelper(this).Handle, 0xA1, 0x2, 0);
 }
        private void Interoperability_Mission_Import_Shown(object sender, EventArgs e)
        {
            isOpened = true;

            Map_Overlay = new GMapOverlay("Map_Overlay");


            FlyZone_Textbox.Text     = "";
            Search_Area_Textbox.Text = "";
            Waypoint_Textbox.Text    = "";

            Mission_Name_Textbox.Text = Interoperability.getinstance().Current_Mission.name;
            if (Interoperability.getinstance().Settings["geo_cords"] == "DD.DDDDDD")
            {
                for (int i = 0; i < Interoperability.getinstance().Current_Mission.fly_zones.Count; i++)
                {
                    FlyZone_Select_Combobox.Items.Insert(i, Interoperability.getinstance().Current_Mission.fly_zones[i].name);
                    Max_Alt_MSL_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].altitude_msl_max);
                    Min_Alt_MSL_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].altitude_msl_min);
                    Border_Colour_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].border_color);
                    Fill_Colour_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].fill_color);

                    FlyZone_List.Add("");
                    for (int j = 0; j < Interoperability.getinstance().Current_Mission.fly_zones[0].boundary_pts.Count; j++)
                    {
                        FlyZone_List[i] += Interoperability.getinstance().Current_Mission.fly_zones[i].boundary_pts[j].latitude.ToString("00.000000");
                        FlyZone_List[i] += " ";
                        FlyZone_List[i] += Interoperability.getinstance().Current_Mission.fly_zones[i].boundary_pts[j].longitude.ToString("00.000000") + "\r\n";
                    }
                }
                for (int i = 0; i < Interoperability.getinstance().Current_Mission.search_grid_points.Count; i++)
                {
                    Search_Area_Textbox.AppendText(Interoperability.getinstance().Current_Mission.search_grid_points[i].latitude.ToString("00.000000"));
                    Search_Area_Textbox.AppendText(" ");
                    Search_Area_Textbox.AppendText(Interoperability.getinstance().Current_Mission.search_grid_points[i].longitude.ToString("00.000000") + "\r\n");
                }
                for (int i = 0; i < Interoperability.getinstance().Current_Mission.mission_waypoints.Count; i++)
                {
                    Waypoint_Textbox.AppendText(Interoperability.getinstance().Current_Mission.mission_waypoints[i].latitude.ToString("00.000000"));
                    Waypoint_Textbox.AppendText(" ");
                    Waypoint_Textbox.AppendText(Interoperability.getinstance().Current_Mission.mission_waypoints[i].longitude.ToString("00.000000"));
                    Waypoint_Textbox.AppendText(" ");
                    Waypoint_Textbox.AppendText(Interoperability.getinstance().Current_Mission.mission_waypoints[i].altitude_msl.ToString("000") + "\r\n");
                }
                if (Interoperability.getinstance().Current_Mission.air_drop_pos.latitude != 0 || Interoperability.getinstance().Current_Mission.air_drop_pos.longitude != 0)
                {
                    Airdrop_Textbox.Text = Interoperability.getinstance().Current_Mission.air_drop_pos.latitude.ToString("00.000000") + " "
                                           + Interoperability.getinstance().Current_Mission.air_drop_pos.longitude.ToString("00.000000");
                }
                if (Interoperability.getinstance().Current_Mission.emergent_last_known_pos.latitude != 0 || Interoperability.getinstance().Current_Mission.emergent_last_known_pos.longitude != 0)
                {
                    Emergent_Target_Textbox.Text = Interoperability.getinstance().Current_Mission.emergent_last_known_pos.latitude.ToString("00.000000") + " "
                                                   + Interoperability.getinstance().Current_Mission.emergent_last_known_pos.longitude.ToString("00.000000");
                }
                if (Interoperability.getinstance().Current_Mission.off_axis_target_pos.latitude != 0 || Interoperability.getinstance().Current_Mission.off_axis_target_pos.longitude != 0)
                {
                    Off_Axis_Target_Textbox.Text = Interoperability.getinstance().Current_Mission.off_axis_target_pos.latitude.ToString("00.000000") + " "
                                                   + Interoperability.getinstance().Current_Mission.off_axis_target_pos.longitude.ToString("00.000000");
                }
            }
            else
            {
                for (int i = 0; i < Interoperability.getinstance().Current_Mission.fly_zones.Count; i++)
                {
                    FlyZone_Select_Combobox.Items.Insert(i, Interoperability.getinstance().Current_Mission.fly_zones[i].name);
                    Max_Alt_MSL_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].altitude_msl_max);
                    Min_Alt_MSL_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].altitude_msl_min);
                    Border_Colour_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].border_color);
                    Fill_Colour_List.Add(Interoperability.getinstance().Current_Mission.fly_zones[i].fill_color);
                    FlyZone_List.Add("");
                    for (int j = 0; j < Interoperability.getinstance().Current_Mission.fly_zones[0].boundary_pts.Count; j++)
                    {
                        FlyZone_List[i] += Interoperability.DDtoDMS(Interoperability.getinstance().Current_Mission.fly_zones[i].boundary_pts[j].latitude,
                                                                    Interoperability.getinstance().Current_Mission.fly_zones[i].boundary_pts[j].longitude) + "\r\n";
                    }
                }
                for (int i = 0; i < Interoperability.getinstance().Current_Mission.search_grid_points.Count; i++)
                {
                    Search_Area_Textbox.AppendText(Interoperability.DDtoDMS(Interoperability.getinstance().Current_Mission.search_grid_points[i].latitude,
                                                                            Interoperability.getinstance().Current_Mission.search_grid_points[i].longitude) + "\r\n");
                }
                for (int i = 0; i < Interoperability.getinstance().Current_Mission.mission_waypoints.Count; i++)
                {
                    Waypoint_Textbox.AppendText(Interoperability.DDtoDMS(Interoperability.getinstance().Current_Mission.mission_waypoints[i].latitude,
                                                                         Interoperability.getinstance().Current_Mission.mission_waypoints[i].longitude));
                    Waypoint_Textbox.AppendText(" ");
                    Waypoint_Textbox.AppendText(Interoperability.getinstance().Current_Mission.mission_waypoints[i].altitude_msl.ToString("000") + "\r\n");
                }
                if (Interoperability.getinstance().Current_Mission.air_drop_pos.latitude != 0 || Interoperability.getinstance().Current_Mission.air_drop_pos.longitude != 0)
                {
                    Airdrop_Textbox.Text = Interoperability.DDtoDMS(Interoperability.getinstance().Current_Mission.air_drop_pos.latitude,
                                                                    Interoperability.getinstance().Current_Mission.air_drop_pos.longitude);
                }
                if (Interoperability.getinstance().Current_Mission.emergent_last_known_pos.latitude != 0 || Interoperability.getinstance().Current_Mission.emergent_last_known_pos.longitude != 0)
                {
                    Emergent_Target_Textbox.Text = Interoperability.DDtoDMS(Interoperability.getinstance().Current_Mission.emergent_last_known_pos.latitude,
                                                                            Interoperability.getinstance().Current_Mission.emergent_last_known_pos.longitude);
                }
                if (Interoperability.getinstance().Current_Mission.off_axis_target_pos.latitude != 0 || Interoperability.getinstance().Current_Mission.off_axis_target_pos.longitude != 0)
                {
                    Off_Axis_Target_Textbox.Text = Interoperability.DDtoDMS(Interoperability.getinstance().Current_Mission.off_axis_target_pos.latitude,
                                                                            Interoperability.getinstance().Current_Mission.off_axis_target_pos.longitude);
                }
            }

            FlyZone_Index_Changed_doNothing       = true;
            FlyZone_Select_Combobox.SelectedIndex = 0;
            FlyZone_Index_Changed_doNothing       = false;
            Max_Alt_MSL_Index     = 0;
            Min_Alt_MSL_Index     = 0;
            Max_Alt_MSL_Box.Value = Convert.ToDecimal(Max_Alt_MSL_List[0]);
            Min_Alt_MSL_Box.Value = Convert.ToDecimal(Min_Alt_MSL_List[0]);
            FlyZone_Textbox.Text  = FlyZone_List[0];
        }
        private Mission Parse_Mission()
        {
            Mission Parsed_Misison = new Mission();
            string  Search_Area_Text, Waypoint_Text, Emergent_Target_Text, Airdrop_Text, Off_Axis_target_Text;

            FlyZone_List[FlyZone_Select_Combobox.SelectedIndex] = FlyZone_Textbox.Text;
            Search_Area_Text     = Search_Area_Textbox.Text;
            Waypoint_Text        = Waypoint_Textbox.Text;
            Emergent_Target_Text = Emergent_Target_Textbox.Text;
            Airdrop_Text         = Airdrop_Textbox.Text;
            Off_Axis_target_Text = Off_Axis_Target_Textbox.Text;


            if (Interoperability.getinstance().Settings["geo_cords"] == "DD.DDDDDD")
            {
                Parsed_Misison.fly_zones.Clear();
                for (int i = 0; i < FlyZone_List.Count; i++)
                {
                    Parsed_Misison.fly_zones.Add(new FlyZone(Max_Alt_MSL_List[i], Min_Alt_MSL_List[i], DDtoWaypoints(FlyZone_List[i]),
                                                             Border_Colour_List[i], Fill_Colour_List[i]));
                }

                //Add Search Areas
                Parsed_Misison.search_grid_points = DDtoWaypoints(Search_Area_Text);

                //Add Waypoints
                Parsed_Misison.mission_waypoints = DDwithAltitudetoWaypoints(Waypoint_Text);


                if (DDtoWaypoints(Emergent_Target_Text).Count != 0)
                {
                    Parsed_Misison.emergent_last_known_pos.latitude  = DDtoWaypoints(Emergent_Target_Text)[0].latitude;
                    Parsed_Misison.emergent_last_known_pos.longitude = DDtoWaypoints(Emergent_Target_Text)[0].longitude;
                }
                if (DDtoWaypoints(Airdrop_Text).Count != 0)
                {
                    Parsed_Misison.air_drop_pos.latitude  = DDtoWaypoints(Airdrop_Text)[0].latitude;
                    Parsed_Misison.air_drop_pos.longitude = DDtoWaypoints(Airdrop_Text)[0].longitude;
                }
                if (DDtoWaypoints(Off_Axis_target_Text).Count != 0)
                {
                    Parsed_Misison.off_axis_target_pos.latitude  = DDtoWaypoints(Off_Axis_target_Text)[0].latitude;
                    Parsed_Misison.off_axis_target_pos.longitude = DDtoWaypoints(Off_Axis_target_Text)[0].longitude;
                }
            }
            else
            {
                //Add Fly Zones
                Parsed_Misison.fly_zones.Clear();
                for (int i = 0; i < FlyZone_List.Count; i++)
                {
                    Parsed_Misison.fly_zones.Add(new FlyZone(Max_Alt_MSL_List[i], Min_Alt_MSL_List[i], DMStoWaypoints(FlyZone_List[i])));
                }

                //Add Search Areas
                Parsed_Misison.search_grid_points = DMStoWaypoints(Search_Area_Text);

                //Add Waypoints
                Parsed_Misison.mission_waypoints = DMSwithAltitudetoWaypoints(Waypoint_Text);

                if (DMStoWaypoints(Emergent_Target_Text).Count != 0)
                {
                    Parsed_Misison.emergent_last_known_pos.latitude  = DMStoWaypoints(Emergent_Target_Text)[0].latitude;
                    Parsed_Misison.emergent_last_known_pos.longitude = DMStoWaypoints(Emergent_Target_Text)[0].longitude;
                }
                if (DMStoWaypoints(Airdrop_Text).Count != 0)
                {
                    Parsed_Misison.air_drop_pos.latitude  = DMStoWaypoints(Airdrop_Text)[0].latitude;
                    Parsed_Misison.air_drop_pos.longitude = DMStoWaypoints(Airdrop_Text)[0].longitude;
                }
                if (DMStoWaypoints(Off_Axis_target_Text).Count != 0)
                {
                    Parsed_Misison.off_axis_target_pos.latitude  = DMStoWaypoints(Off_Axis_target_Text)[0].latitude;
                    Parsed_Misison.off_axis_target_pos.longitude = DMStoWaypoints(Off_Axis_target_Text)[0].longitude;
                }
            }

            return(Parsed_Misison);
        }