コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void HandleCharacterSelectionChange()
        {
            EVEData.Character c  = CharacterDropDown.SelectedItem as EVEData.Character;
            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            if (c != null && FollowCharacter)
            {
                EVEData.System s = EVEManager.GetEveSystem(c.Location);
                if (s != null)
                {
                    if (s.Region != rd.Name)
                    {
                        // change region
                        SelectRegion(s.Region);
                    }

                    SelectSystem(c.Location);

                    CharacterDropDown.SelectedItem = c;

                    // force the follow as this will be reset by the region change
                    FollowCharacter = true;
                }
            }
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void RawIntelBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (RawIntelBox.SelectedItem == null)
            {
                return;
            }

            EVEData.IntelData intel = RawIntelBox.SelectedItem as EVEData.IntelData;

            foreach (string s in intel.IntelString.Split(' '))
            {
                if (EVEManager.Systems.Keys.Contains(s, StringComparer.OrdinalIgnoreCase))
                {
                    EVEData.System sys = EVEManager.GetEveSystem(s);
                    if (sys == null)
                    {
                        return;
                    }

                    EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;
                    if (rd.Name != sys.Region)
                    {
                        SelectRegion(sys.Region);
                    }


                    SelectSystem(s);
                    return;
                }
            }
        }
コード例 #3
0
ファイル: RegionsViewControl.xaml.cs プロジェクト: Nimos/SMT
        private void RegionCharacter_ShapeMouseOverHandler(object sender, MouseEventArgs e)
        {
            Shape obj = sender as Shape;

            EVEData.MapRegion selectedRegion = obj.DataContext as EVEData.MapRegion;

            if (obj.IsMouseOver)
            {
                RegionCharacterInfo.PlacementTarget  = obj;
                RegionCharacterInfo.VerticalOffset   = 5;
                RegionCharacterInfo.HorizontalOffset = 15;

                RegionCharacterInfoSP.Children.Clear();

                foreach (EVEData.LocalCharacter lc in EVEData.EveManager.Instance.LocalCharacters)
                {
                    EVEData.System s = EVEData.EveManager.Instance.GetEveSystem(lc.Location);
                    if (s != null && s.Region == selectedRegion.Name)
                    {
                        Label l = new Label();
                        l.Content = lc.Name + " (" + lc.Location + ")";
                        RegionCharacterInfoSP.Children.Add(l);
                    }
                }

                RegionCharacterInfo.IsOpen = true;
            }
            else
            {
                RegionCharacterInfo.IsOpen = false;
            }
        }
コード例 #4
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void SysContexMenuItemZKB_Click(object sender, RoutedEventArgs e)
        {
            EVEData.MapSystem eveSys = ((System.Windows.FrameworkElement)((System.Windows.FrameworkElement)sender).Parent).DataContext as EVEData.MapSystem;
            EVEData.MapRegion rd     = EVEManager.GetRegion(eveSys.Region);

            string uRL = string.Format("https://zkillboard.com/system/{0}", eveSys.ActualSystem.ID);

            System.Diagnostics.Process.Start(uRL);
        }
コード例 #5
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void SysContexMenuItemDotlan_Click(object sender, RoutedEventArgs e)
        {
            EVEData.MapSystem eveSys = ((System.Windows.FrameworkElement)((System.Windows.FrameworkElement)sender).Parent).DataContext as EVEData.MapSystem;
            EVEData.MapRegion rd     = EVEManager.GetRegion(eveSys.Region);

            string uRL = string.Format("http://evemaps.dotlan.net/map/{0}/{1}", rd.DotLanRef, eveSys.Name);

            System.Diagnostics.Process.Start(uRL);
        }
コード例 #6
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void AddHighlightToSystem(string name)
        {
            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;
            if (!rd.MapSystems.Keys.Contains(name))
            {
                return;
            }

            EVEData.MapSystem selectedSys = rd.MapSystems[name];
            if (selectedSys != null)
            {
                double circleSize   = 30;
                double circleOffset = circleSize / 2;

                // add circle for system
                Shape highlightSystemCircle = new Ellipse()
                {
                    Height = circleSize, Width = circleSize
                };
                highlightSystemCircle.Stroke = new SolidColorBrush(MapConf.ActiveColourScheme.SelectedSystemColour);

                highlightSystemCircle.StrokeThickness = 3;

                RotateTransform rt = new RotateTransform();
                rt.CenterX = circleSize / 2;
                rt.CenterY = circleSize / 2;
                highlightSystemCircle.RenderTransform = rt;

                DoubleCollection dashes = new DoubleCollection();
                dashes.Add(1.0);
                dashes.Add(1.0);

                highlightSystemCircle.StrokeDashArray = dashes;

                Canvas.SetLeft(highlightSystemCircle, selectedSys.LayoutX - circleOffset);
                Canvas.SetTop(highlightSystemCircle, selectedSys.LayoutY - circleOffset);
                Canvas.SetZIndex(highlightSystemCircle, 19);

                MainCanvas.Children.Add(highlightSystemCircle);
                DynamicMapElements.Add(highlightSystemCircle);

                DoubleAnimation da = new DoubleAnimation();
                da.From     = 0;
                da.To       = 360;
                da.Duration = new Duration(TimeSpan.FromSeconds(12));

                RotateTransform eTransform = (RotateTransform)highlightSystemCircle.RenderTransform;
                eTransform.BeginAnimation(RotateTransform.AngleProperty, da);
            }
        }
コード例 #7
0
ファイル: RegionsViewControl.xaml.cs プロジェクト: Nimos/SMT
        private void RegionShape_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Shape obj = sender as Shape;

            EVEData.MapRegion mr = obj.DataContext as EVEData.MapRegion;
            if (mr == null)
            {
                return;
            }

            if (e.ClickCount == 2)
            {
                RoutedEventArgs newEventArgs = new RoutedEventArgs(RequestRegionSelectEvent, mr.Name);
                RaiseEvent(newEventArgs);
            }
        }
コード例 #8
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void AddSystemIntelOverlay()
        {
            if (!MapConf.ShowIntel)
            {
                return;
            }

            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            foreach (EVEData.IntelData id in EVEManager.IntelDataList)
            {
                foreach (string sysStr in id.Systems)
                {
                    if (rd.IsSystemOnMap(sysStr))
                    {
                        EVEData.MapSystem sys = rd.MapSystems[sysStr];

                        double radiusScale = (DateTime.Now - id.IntelTime).TotalSeconds / (double)MapConf.MaxIntelSeconds;

                        if (radiusScale < 0.0 || radiusScale >= 1.0)
                        {
                            continue;
                        }

                        // add circle to the map
                        double radius       = 100 * (1.0 - radiusScale);
                        double circleOffset = radius / 2;

                        Shape intelShape = new Ellipse()
                        {
                            Height = radius, Width = radius
                        };

                        intelShape.Fill = new SolidColorBrush(MapConf.ActiveColourScheme.IntelOverlayColour);
                        Canvas.SetLeft(intelShape, sys.LayoutX - circleOffset);
                        Canvas.SetTop(intelShape, sys.LayoutY - circleOffset);
                        Canvas.SetZIndex(intelShape, 15);
                        MainCanvas.Children.Add(intelShape);

                        DynamicMapElements.Add(intelShape);
                    }
                }
            }
        }
コード例 #9
0
        private void RegionShape_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Shape obj = sender as Shape;

            EVEData.MapRegion mr = obj.DataContext as EVEData.MapRegion;
            if (mr == null)
            {
                return;
            }

            if (e.ClickCount == 2)
            {
                RegionRC.SelectRegion(mr.Name);
                if (RegionLayoutDoc != null)
                {
                    RegionLayoutDoc.IsSelected = true;
                }
            }
        }
コード例 #10
0
        private void RegionThera_ShapeMouseOverHandler(object sender, MouseEventArgs e)
        {
            Shape obj = sender as Shape;

            EVEData.MapRegion selectedRegion = obj.DataContext as EVEData.MapRegion;

            if (obj.IsMouseOver)
            {
                RegionTheraInfo.PlacementTarget  = obj;
                RegionTheraInfo.VerticalOffset   = 5;
                RegionTheraInfo.HorizontalOffset = 15;

                RegionTheraInfoSP.Children.Clear();

                Label header = new Label();
                header.Content    = "Thera Connections";
                header.FontWeight = FontWeights.Bold;
                header.Margin     = new Thickness(1);
                header.Padding    = new Thickness(1);
                RegionTheraInfoSP.Children.Add(header);


                foreach (EVEData.TheraConnection tc in EVEManager.TheraConnections)
                {
                    if (string.Compare(tc.Region, selectedRegion.Name, true) == 0)
                    {
                        Label l = new Label();
                        l.Content = $"    {tc.System}";
                        l.Margin  = new Thickness(1);
                        l.Padding = new Thickness(1);

                        RegionTheraInfoSP.Children.Add(l);
                    }
                }

                RegionTheraInfo.IsOpen = true;
            }
            else
            {
                RegionTheraInfo.IsOpen = false;
            }
        }
コード例 #11
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void SelectSystem(string name)
        {
            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            foreach (EVEData.MapSystem es in rd.MapSystems.Values.ToList())
            {
                if (es.Name == name)
                {
                    SystemDropDownAC.SelectedItem = es;
                    SelectedSystem = es.Name;
                    AddHighlightToSystem(name);

                    break;
                }
            }

            // now setup the anom data
            EVEData.AnomData system = ANOMManager.GetSystemAnomData(name);
            MainAnomGrid.DataContext = system;
            AnomSigList.ItemsSource  = system.Anoms.Values;
        }
コード例 #12
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void ShapeMouseOverHandler(object sender, MouseEventArgs e)
        {
            Shape obj = sender as Shape;

            EVEData.MapRegion currentRegion = RegionDropDown.SelectedItem as EVEData.MapRegion;

            EVEData.MapSystem selectedSys = obj.DataContext as EVEData.MapSystem;

            if (obj.IsMouseOver && MapConf.ShowSystemPopup)
            {
                SystemInfoPopup.PlacementTarget  = obj;
                SystemInfoPopup.VerticalOffset   = 5;
                SystemInfoPopup.HorizontalOffset = 15;
                SystemInfoPopup.DataContext      = selectedSys.ActualSystem;

                SystemInfoPopup.IsOpen = true;
            }
            else
            {
                SystemInfoPopup.IsOpen = false;
            }
        }
コード例 #13
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void OnRegionSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // clear the character selection
            // CharacterDropDown.SelectedItem = null;
            FollowCharacter = false;

            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            EVEManager.UpdateIDsForMapRegion(rd.Name);

            ReDrawMap();
            MapConf.DefaultRegion = rd.Name;

            MainContent.DataContext  = RegionDropDown.SelectedItem;
            MainAnomGrid.DataContext = null;
            AnomSigList.ItemsSource  = null;

            SystemDropDownAC.SelectedItem = null;

            List <EVEData.MapSystem> newList = rd.MapSystems.Values.ToList().OrderBy(o => o.Name).ToList();

            SystemDropDownAC.ItemsSource = newList;
        }
コード例 #14
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void AddCharactersToMap()
        {
            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            foreach (EVEData.Character c in EVEManager.LocalCharacters)
            {
                if (rd.IsSystemOnMap(c.Location))
                {
                    EVEData.MapSystem ms = rd.MapSystems[c.Location];

                    // add the character to
                    double circleSize   = 26;
                    double circleOffset = circleSize / 2;

                    // add circle for system
                    Shape highlightSystemCircle = new Ellipse()
                    {
                        Height = circleSize, Width = circleSize
                    };

                    highlightSystemCircle.Stroke          = new SolidColorBrush(MapConf.ActiveColourScheme.CharacterHighlightColour);
                    highlightSystemCircle.StrokeThickness = 2;

                    RotateTransform rt = new RotateTransform();
                    rt.CenterX = circleSize / 2;
                    rt.CenterY = circleSize / 2;
                    highlightSystemCircle.RenderTransform = rt;

                    DoubleCollection dashes = new DoubleCollection();
                    dashes.Add(1.0);
                    dashes.Add(1.0);

                    highlightSystemCircle.StrokeDashArray = dashes;

                    Canvas.SetLeft(highlightSystemCircle, ms.LayoutX - circleOffset);
                    Canvas.SetTop(highlightSystemCircle, ms.LayoutY - circleOffset);
                    Canvas.SetZIndex(highlightSystemCircle, 19);

                    MainCanvas.Children.Add(highlightSystemCircle);
                    DynamicMapElements.Add(highlightSystemCircle);

                    // Storyboard s = new Storyboard();
                    DoubleAnimation da = new DoubleAnimation();
                    da.From     = 360;
                    da.To       = 0;
                    da.Duration = new Duration(TimeSpan.FromSeconds(12));

                    RotateTransform eTransform = (RotateTransform)highlightSystemCircle.RenderTransform;
                    eTransform.BeginAnimation(RotateTransform.AngleProperty, da);

                    double textYOffset = -24;
                    double textXOffset = 6;

                    // also add the name of the character above the system
                    Label charText = new Label();
                    charText.Content    = c.Name;
                    charText.Foreground = new SolidColorBrush(MapConf.ActiveColourScheme.CharacterTextColour);

                    if (MapConf.ActiveColourScheme.CharacterTextSize > 0)
                    {
                        charText.FontSize = MapConf.ActiveColourScheme.CharacterTextSize;
                    }

                    Canvas.SetLeft(charText, ms.LayoutX + textXOffset);
                    Canvas.SetTop(charText, ms.LayoutY + textYOffset);
                    Canvas.SetZIndex(charText, 20);
                    MainCanvas.Children.Add(charText);
                    DynamicMapElements.Add(charText);
                }
            }
        }
コード例 #15
0
        private void AddRegionsToUniverse()
        {
            Brush SysOutlineBrush       = new SolidColorBrush(MapConf.ActiveColourScheme.SystemOutlineColour);
            Brush SysInRegionBrush      = new SolidColorBrush(MapConf.ActiveColourScheme.InRegionSystemColour);
            Brush BackgroundColourBrush = new SolidColorBrush(MapConf.ActiveColourScheme.MapBackgroundColour);

            Brush AmarrBg    = new SolidColorBrush(Color.FromArgb(255, 126, 110, 95));
            Brush MinmatarBg = new SolidColorBrush(Color.FromArgb(255, 143, 120, 120));
            Brush GallenteBg = new SolidColorBrush(Color.FromArgb(255, 127, 139, 137));
            Brush CaldariBg  = new SolidColorBrush(Color.FromArgb(255, 149, 159, 171));


            MainUniverseCanvas.Background = BackgroundColourBrush;
            MainUniverseGrid.Background   = BackgroundColourBrush;

            foreach (EVEData.MapRegion mr in EVEManager.Regions)
            {
                // add circle for system
                Rectangle RegionShape = new Rectangle()
                {
                    Height = 30, Width = 80
                };
                RegionShape.Stroke          = SysOutlineBrush;
                RegionShape.StrokeThickness = 1.5;
                RegionShape.StrokeLineJoin  = PenLineJoin.Round;
                RegionShape.RadiusX         = 5;
                RegionShape.RadiusY         = 5;
                RegionShape.Fill            = SysInRegionBrush;
                RegionShape.MouseDown      += RegionShape_MouseDown;
                RegionShape.DataContext     = mr;

                if (mr.Faction == "Amarr")
                {
                    RegionShape.Fill = AmarrBg;
                }
                if (mr.Faction == "Gallente")
                {
                    RegionShape.Fill = GallenteBg;
                }
                if (mr.Faction == "Minmatar")
                {
                    RegionShape.Fill = MinmatarBg;
                }
                if (mr.Faction == "Caldari")
                {
                    RegionShape.Fill = CaldariBg;
                }


                if (RegionRC.ActiveCharacter != null && RegionRC.ActiveCharacter.ESILinked && MapConf.ShowRegionStandings)
                {
                    float averageStanding = 0.0f;
                    float numSystems      = 0;

                    foreach (EVEData.MapSystem s in mr.MapSystems.Values)
                    {
                        if (s.OutOfRegion)
                        {
                            continue;
                        }

                        numSystems++;


                        if (RegionRC.ActiveCharacter.AllianceID != 0 && RegionRC.ActiveCharacter.AllianceID == s.ActualSystem.SOVAlliance)
                        {
                            averageStanding += 10.0f;
                        }

                        if (s.ActualSystem.SOVCorp != 0 && RegionRC.ActiveCharacter.Standings.Keys.Contains(s.ActualSystem.SOVCorp))
                        {
                            averageStanding += RegionRC.ActiveCharacter.Standings[s.ActualSystem.SOVCorp];
                        }

                        if (s.ActualSystem.SOVAlliance != 0 && RegionRC.ActiveCharacter.Standings.Keys.Contains(s.ActualSystem.SOVAlliance))
                        {
                            averageStanding += RegionRC.ActiveCharacter.Standings[s.ActualSystem.SOVAlliance];
                        }
                    }

                    averageStanding = averageStanding / numSystems;

                    if (averageStanding > 0.5)
                    {
                        Color BlueIsh = Colors.Gray;
                        BlueIsh.B       += (byte)((255 - BlueIsh.B) * (averageStanding / 10.0f));
                        RegionShape.Fill = new SolidColorBrush(BlueIsh);
                    }
                    else if (averageStanding < -0.5)
                    {
                        averageStanding *= -1;
                        Color RedIsh = Colors.Gray;
                        RedIsh.R        += (byte)((255 - RedIsh.R) * (averageStanding / 10.0f));
                        RegionShape.Fill = new SolidColorBrush(RedIsh);
                    }
                    else
                    {
                        RegionShape.Fill = new SolidColorBrush(Colors.Gray);
                    }
                }


                Canvas.SetLeft(RegionShape, mr.RegionX - 40);
                Canvas.SetTop(RegionShape, mr.RegionY - 15);
                Canvas.SetZIndex(RegionShape, 22);
                MainUniverseCanvas.Children.Add(RegionShape);

                Label RegionText = new Label();
                RegionText.Width               = 80;
                RegionText.Height              = 27;
                RegionText.Content             = mr.Name;
                RegionText.Foreground          = SysOutlineBrush;
                RegionText.FontSize            = 10;
                RegionText.HorizontalAlignment = HorizontalAlignment.Center;
                RegionText.VerticalAlignment   = VerticalAlignment.Center;
                RegionText.IsHitTestVisible    = false;

                RegionText.HorizontalContentAlignment = HorizontalAlignment.Center;
                RegionText.VerticalContentAlignment   = VerticalAlignment.Center;


                Canvas.SetLeft(RegionText, mr.RegionX - 40);
                Canvas.SetTop(RegionText, mr.RegionY - 15);
                Canvas.SetZIndex(RegionText, 23);
                MainUniverseCanvas.Children.Add(RegionText);


                if (mr.Faction != "")
                {
                    Label FactionText = new Label();
                    FactionText.Width               = 80;
                    FactionText.Height              = 30;
                    FactionText.Content             = mr.Faction;
                    FactionText.Foreground          = SysOutlineBrush;
                    FactionText.FontSize            = 5;
                    FactionText.HorizontalAlignment = HorizontalAlignment.Center;
                    FactionText.VerticalAlignment   = VerticalAlignment.Center;
                    FactionText.IsHitTestVisible    = false;

                    FactionText.HorizontalContentAlignment = HorizontalAlignment.Center;
                    FactionText.VerticalContentAlignment   = VerticalAlignment.Bottom;

                    Canvas.SetLeft(FactionText, mr.RegionX - 40);
                    Canvas.SetTop(FactionText, mr.RegionY - 15);
                    Canvas.SetZIndex(FactionText, 23);
                    MainUniverseCanvas.Children.Add(FactionText);
                }


                // now add all the region links
                foreach (string s in mr.RegionLinks)
                {
                    EVEData.MapRegion or = EVEManager.GetRegion(s);
                    Line regionLink      = new Line();

                    regionLink.X1 = mr.RegionX;
                    regionLink.Y1 = mr.RegionY;

                    regionLink.X2 = or.RegionX;
                    regionLink.Y2 = or.RegionY;

                    regionLink.Stroke          = SysOutlineBrush;
                    regionLink.StrokeThickness = 1.2;
                    regionLink.Visibility      = Visibility.Visible;

                    Canvas.SetZIndex(regionLink, 21);
                    MainUniverseCanvas.Children.Add(regionLink);
                }
            }
        }
コード例 #16
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void AddDataToMap()
        {
            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            foreach (EVEData.MapSystem sys in rd.MapSystems.Values.ToList())
            {
                int nPCKillsLastHour  = sys.ActualSystem.NPCKillsLastHour;
                int podKillsLastHour  = sys.ActualSystem.PodKillsLastHour;
                int shipKillsLastHour = sys.ActualSystem.ShipKillsLastHour;
                int jumpsLastHour     = sys.ActualSystem.JumpsLastHour;

                int             infoValue  = -1;
                SolidColorBrush infoColour = new SolidColorBrush(MapConf.ActiveColourScheme.ESIOverlayColour);
                double          infoSize   = 0.0;
                if (MapConf.ShowNPCKills)
                {
                    infoValue = nPCKillsLastHour;
                    infoSize  = 0.15f * infoValue * MapConf.ESIOverlayScale;
                }

                if (MapConf.ShowPodKills)
                {
                    infoValue = podKillsLastHour;
                    infoSize  = 20.0f * infoValue * MapConf.ESIOverlayScale;
                }

                if (MapConf.ShowShipKills)
                {
                    infoValue = shipKillsLastHour;
                    infoSize  = 20.0f * infoValue * MapConf.ESIOverlayScale;
                }

                if (MapConf.ShowShipJumps)
                {
                    infoValue = sys.ActualSystem.JumpsLastHour;
                    infoSize  = infoValue * MapConf.ESIOverlayScale;
                }


                if (infoValue != -1)
                {
                    Shape infoCircle = new Ellipse()
                    {
                        Height = infoSize, Width = infoSize
                    };
                    infoCircle.Fill = infoColour;

                    Canvas.SetZIndex(infoCircle, 10);
                    Canvas.SetLeft(infoCircle, sys.LayoutX - (infoSize / 2));
                    Canvas.SetTop(infoCircle, sys.LayoutY - (infoSize / 2));
                    MainCanvas.Children.Add(infoCircle);
                    DynamicMapElements.Add(infoCircle);
                }


                if (MapConf.ColourBySov && sys.ActualSystem.SOVAlliance != null)
                {
                    Polygon poly = new Polygon();

                    foreach (Point p in sys.CellPoints)
                    {
                        poly.Points.Add(p);
                    }

                    Color c = stringToColour(sys.ActualSystem.SOVAlliance);
                    c.A                  = 75;
                    poly.Fill            = new SolidColorBrush(c);
                    poly.Stroke          = poly.Fill;
                    poly.StrokeThickness = 0.5;
                    MainCanvas.Children.Add(poly);

                    // save the dynamic map elements
                    DynamicMapElements.Add(poly);
                }
            }
        }
コード例 #17
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void AddSystemsToMap()
        {
            EVEData.MapRegion rd = RegionDropDown.SelectedItem as EVEData.MapRegion;

            foreach (EVEData.Link jump in rd.Jumps)
            {
                Line sysLink = new Line();

                EVEData.MapSystem from = rd.MapSystems[jump.From];
                EVEData.MapSystem to   = rd.MapSystems[jump.To];
                sysLink.X1 = from.LayoutX;
                sysLink.Y1 = from.LayoutY;

                sysLink.X2 = to.LayoutX;
                sysLink.Y2 = to.LayoutY;

                if (jump.ConstelationLink)
                {
                    sysLink.Stroke = new SolidColorBrush(MapConf.ActiveColourScheme.ConstellationGateColour);
                }
                else
                {
                    sysLink.Stroke = new SolidColorBrush(MapConf.ActiveColourScheme.NormalGateColour);
                }

                sysLink.StrokeThickness = 1;
                sysLink.Visibility      = Visibility.Visible;

                Canvas.SetZIndex(sysLink, 19);
                MainCanvas.Children.Add(sysLink);
            }

            if (MapConf.ShowJumpBridges || MapConf.ShowHostileJumpBridges)
            {
                foreach (EVEData.JumpBridge jb in EVEManager.JumpBridges)
                {
                    if (rd.IsSystemOnMap(jb.From) && rd.IsSystemOnMap(jb.To))
                    {
                        if ((jb.Friendly && !MapConf.ShowJumpBridges) || (!jb.Friendly && !MapConf.ShowHostileJumpBridges))
                        {
                            continue;
                        }

                        // jbLink.Data
                        EVEData.MapSystem from = rd.MapSystems[jb.From];
                        EVEData.MapSystem to   = rd.MapSystems[jb.To];

                        Point startPoint = new Point(from.LayoutX, from.LayoutY);
                        Point endPoint   = new Point(to.LayoutX, to.LayoutY);

                        Vector dir = Point.Subtract(startPoint, endPoint);

                        double jbDistance = Point.Subtract(startPoint, endPoint).Length;

                        Size arcSize = new Size(jbDistance + 50, jbDistance + 50);

                        ArcSegment arcseg = new ArcSegment(endPoint, arcSize, 100, false, SweepDirection.Clockwise, true);

                        PathSegmentCollection pscollection = new PathSegmentCollection();
                        pscollection.Add(arcseg);

                        PathFigure pf = new PathFigure();
                        pf.Segments   = pscollection;
                        pf.StartPoint = startPoint;

                        PathFigureCollection pfcollection = new PathFigureCollection();
                        pfcollection.Add(pf);

                        PathGeometry pathGeometry = new PathGeometry();
                        pathGeometry.Figures = pfcollection;

                        System.Windows.Shapes.Path path = new System.Windows.Shapes.Path();
                        path.Data = pathGeometry;

                        if (jb.Friendly)
                        {
                            path.Stroke = new SolidColorBrush(MapConf.ActiveColourScheme.FriendlyJumpBridgeColour);
                        }
                        else
                        {
                            path.Stroke = new SolidColorBrush(MapConf.ActiveColourScheme.HostileJumpBridgeColour);
                        }

                        path.StrokeThickness = 2;

                        DoubleCollection dashes = new DoubleCollection();
                        dashes.Add(1.0);
                        dashes.Add(1.0);

                        path.StrokeDashArray = dashes;

                        Canvas.SetZIndex(path, 19);

                        MainCanvas.Children.Add(path);
                    }
                }
            }

            foreach (EVEData.MapSystem sys in rd.MapSystems.Values.ToList())
            {
                double circleSize   = 15;
                double circleOffset = circleSize / 2;
                double textXOffset  = 5;
                double textYOffset  = -8;
                double textYOffset2 = 6;


                // add circle for system
                Shape systemShape;

                if (sys.ActualSystem.HasNPCStation)
                {
                    systemShape = new Rectangle()
                    {
                        Height = circleSize, Width = circleSize
                    };
                }
                else
                {
                    systemShape = new Ellipse()
                    {
                        Height = circleSize, Width = circleSize
                    };
                }

                systemShape.Stroke = new SolidColorBrush(MapConf.ActiveColourScheme.SystemOutlineColour);

                if (sys.OutOfRegion)
                {
                    systemShape.Fill = new SolidColorBrush(MapConf.ActiveColourScheme.OutRegionSystemColour);
                }
                else
                {
                    systemShape.Fill = new SolidColorBrush(MapConf.ActiveColourScheme.InRegionSystemColour);
                }

                // override with sec status colours
                if (MapConf.ShowSystemSecurity)
                {
                    systemShape.Fill = new SolidColorBrush(MapColours.GetSecStatusColour(sys.ActualSystem.Security));
                }


                systemShape.DataContext = sys;
                systemShape.MouseDown  += ShapeMouseDownHandler;
                systemShape.MouseEnter += ShapeMouseOverHandler;
                systemShape.MouseLeave += ShapeMouseOverHandler;

                Canvas.SetLeft(systemShape, sys.LayoutX - circleOffset);
                Canvas.SetTop(systemShape, sys.LayoutY - circleOffset);
                Canvas.SetZIndex(systemShape, 20);
                MainCanvas.Children.Add(systemShape);

                // add text
                Label sysText = new Label();
                sysText.Content = sys.Name;
                if (MapConf.ActiveColourScheme.SystemTextSize > 0)
                {
                    sysText.FontSize = MapConf.ActiveColourScheme.SystemTextSize;
                }

                if (sys.OutOfRegion)
                {
                    sysText.Foreground = new SolidColorBrush(MapConf.ActiveColourScheme.OutRegionSystemTextColour);
                }
                else
                {
                    sysText.Foreground = new SolidColorBrush(MapConf.ActiveColourScheme.InRegionSystemTextColour);
                }

                Canvas.SetLeft(sysText, sys.LayoutX + textXOffset);
                Canvas.SetTop(sysText, sys.LayoutY + textYOffset);
                Canvas.SetZIndex(sysText, 20);

                MainCanvas.Children.Add(sysText);



                double regionMarkerOffset = textYOffset2;

                if ((MapConf.ShowSystemSovName | MapConf.ShowSystemSovTicker) && sys.ActualSystem.SOVAlliance != null && EVEManager.AllianceIDToName.Keys.Contains(sys.ActualSystem.SOVAlliance))
                {
                    Label sysRegionText = new Label();

                    string content        = "";
                    string allianceName   = EVEManager.GetAllianceName(sys.ActualSystem.SOVAlliance);
                    string allianceTicker = EVEManager.GetAllianceTicker(sys.ActualSystem.SOVAlliance);

                    if (MapConf.ShowSystemSovName)
                    {
                        content = allianceName;
                    }

                    if (MapConf.ShowSystemSovTicker)
                    {
                        content = allianceTicker;
                    }

                    if (MapConf.ShowSystemSovTicker && MapConf.ShowSystemSovName && allianceName != string.Empty && allianceTicker != String.Empty)
                    {
                        content = allianceName + " (" + allianceTicker + ")";
                    }



                    sysRegionText.Content    = content;
                    sysRegionText.FontSize   = 7;
                    sysRegionText.Foreground = new SolidColorBrush(MapConf.ActiveColourScheme.OutRegionSystemTextColour);

                    Canvas.SetLeft(sysRegionText, sys.LayoutX + textXOffset);
                    Canvas.SetTop(sysRegionText, sys.LayoutY + textYOffset2);
                    Canvas.SetZIndex(sysRegionText, 20);

                    MainCanvas.Children.Add(sysRegionText);

                    regionMarkerOffset += 8;
                }



                if (MapConf.ShowJumpDistance && SelectedSystem != null && sys.Name != SelectedSystem)
                {
                    double Distance = EVEManager.GetRange(SelectedSystem, sys.Name);
                    Distance = Distance / 9460730472580800.0;

                    double Max = 0.1f;

                    switch (MapConf.JumpShipType)
                    {
                    case MapConfig.JumpShip.Super: { Max = 6.0; } break;

                    case MapConfig.JumpShip.Titan: { Max = 6.0; } break;

                    case MapConfig.JumpShip.Dread: { Max = 7.0; } break;

                    case MapConfig.JumpShip.Carrier: { Max = 7.0; } break;

                    case MapConfig.JumpShip.FAX: { Max = 7.0; } break;

                    case MapConfig.JumpShip.Blops: { Max = 8.0; } break;

                    case MapConfig.JumpShip.JF: { Max = 10.0; } break;
                    }

                    if (Distance < Max && Distance > 0.0)
                    {
                        systemShape.Fill = new SolidColorBrush(MapConf.ActiveColourScheme.JumpRangeInColour);

                        string JD = Distance.ToString("0.00") + " LY";

                        Label DistanceText = new Label();

                        DistanceText.Content    = JD;
                        DistanceText.FontSize   = 9;
                        DistanceText.Foreground = new SolidColorBrush(MapConf.ActiveColourScheme.OutRegionSystemTextColour);
                        regionMarkerOffset     += 8;

                        Canvas.SetLeft(DistanceText, sys.LayoutX + textXOffset);
                        Canvas.SetTop(DistanceText, sys.LayoutY + textYOffset2);


                        Canvas.SetZIndex(DistanceText, 20);
                        MainCanvas.Children.Add(DistanceText);
                    }
                    else
                    {
                        systemShape.Fill = new SolidColorBrush(MapConf.ActiveColourScheme.JumpRangeOutColour);
                    }
                }



                if (sys.OutOfRegion)
                {
                    Label sysRegionText = new Label();
                    sysRegionText.Content    = "(" + sys.Region + ")";
                    sysRegionText.FontSize   = 7;
                    sysRegionText.Foreground = new SolidColorBrush(MapConf.ActiveColourScheme.OutRegionSystemTextColour);

                    Canvas.SetLeft(sysRegionText, sys.LayoutX + textXOffset);
                    Canvas.SetTop(sysRegionText, sys.LayoutY + regionMarkerOffset);
                    Canvas.SetZIndex(sysRegionText, 20);

                    MainCanvas.Children.Add(sysRegionText);
                }
            }
        }
コード例 #18
0
ファイル: LocalCharacter.cs プロジェクト: luccion/SMT
        public void UpdateStructureInfoForRegion(string Region)
        {
            if (!ESILinked)
            {
                return;
            }

            MapRegion mr = EveManager.Instance.GetRegion(Region);

            // somethings gone wrong
            if (mr == null)
            {
                return;
            }

            // iterate over each structure and search for structres containing the text for each system
            foreach (MapSystem ms in mr.MapSystems.Values.ToList())
            {
                // skip systems we've already checked
                if (DockableStructures.Keys.Contains(ms.Name))
                {
                    continue;
                }

                List <StructureIDs.StructureIdData> SystemStructureList = new List <StructureIDs.StructureIdData>();

                UriBuilder urlBuilder = new UriBuilder(@"https://esi.evetech.net/latest/characters/" + ID + "/search/");

                var esiQuery = HttpUtility.ParseQueryString(urlBuilder.Query);
                esiQuery["datasource"] = "tranquility";
                esiQuery["token"]      = ESIAccessToken;
                esiQuery["categories"] = "structure";
                esiQuery["search"]     = ms.Name;
                esiQuery["strict"]     = "false";

                urlBuilder.Query = esiQuery.ToString();

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlBuilder.ToString());
                request.Method      = WebRequestMethods.Http.Get;
                request.ContentType = "application/json";
                request.Timeout     = 20000;
                request.Proxy       = null;

                try
                {
                    HttpWebResponse esiResult = (HttpWebResponse)request.GetResponse();

                    if (esiResult.StatusCode != HttpStatusCode.OK)
                    {
                        continue;
                    }

                    Stream responseStream = esiResult.GetResponseStream();
                    using (StreamReader sr = new StreamReader(responseStream))
                    {
                        // Need to return this response
                        string strContent = sr.ReadToEnd();

                        StructureSearches.StructureSearch ss = StructureSearches.StructureSearch.FromJson(strContent);

                        if (ss == null || ss.Structure == null)
                        {
                            continue;
                        }


                        foreach (long l in ss.Structure)
                        {
                            // now search on each structure
                            UriBuilder urlStructureIDBuilder = new UriBuilder(@"https://esi.evetech.net/v1/universe/structures/" + l.ToString() + "/");

                            var esiStructureIDQuery = HttpUtility.ParseQueryString(urlStructureIDBuilder.Query);
                            esiStructureIDQuery["datasource"] = "tranquility";
                            esiStructureIDQuery["token"]      = ESIAccessToken;

                            urlStructureIDBuilder.Query = esiStructureIDQuery.ToString();

                            HttpWebRequest sid_request = (HttpWebRequest)WebRequest.Create(urlStructureIDBuilder.ToString());
                            sid_request.Method      = WebRequestMethods.Http.Get;
                            sid_request.ContentType = "application/json";
                            sid_request.Timeout     = 20000;
                            sid_request.Proxy       = null;

                            try
                            {
                                HttpWebResponse esi_sid_Result = (HttpWebResponse)sid_request.GetResponse();

                                Stream sid_responseStream = esi_sid_Result.GetResponseStream();
                                using (StreamReader sr2 = new StreamReader(sid_responseStream))
                                {
                                    // Need to return this response
                                    string strSIDContent = sr2.ReadToEnd();
                                    StructureIDs.StructureIdData sidd = StructureIDs.StructureIdData.FromJson(strSIDContent);
                                    if (sidd.Name != "")
                                    {
                                        SystemStructureList.Add(sidd);
                                    }
                                }
                            }
                            catch
                            {
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }

                DockableStructures.Add(ms.Name, SystemStructureList);
                Thread.Sleep(10);
            }
        }
コード例 #19
0
ファイル: RegionsViewControl.xaml.cs プロジェクト: Nimos/SMT
        /// <summary>
        /// Add the regions to the universe view
        /// </summary>
        private void AddRegions()
        {
            Brush sysOutlineBrush       = new SolidColorBrush(MapConf.ActiveColourScheme.SystemOutlineColour);
            Brush sysInRegionBrush      = new SolidColorBrush(MapConf.ActiveColourScheme.InRegionSystemColour);
            Brush backgroundColourBrush = new SolidColorBrush(MapConf.ActiveColourScheme.MapBackgroundColour);

            Brush amarrBg    = new SolidColorBrush(Color.FromArgb(255, 126, 110, 95));
            Brush minmatarBg = new SolidColorBrush(Color.FromArgb(255, 143, 120, 120));
            Brush gallenteBg = new SolidColorBrush(Color.FromArgb(255, 127, 139, 137));
            Brush caldariBg  = new SolidColorBrush(Color.FromArgb(255, 149, 159, 171));

            MainUniverseCanvas.Background = backgroundColourBrush;
            MainUniverseGrid.Background   = backgroundColourBrush;

            foreach (EVEData.MapRegion mr in EVEData.EveManager.Instance.Regions)
            {
                // add circle for system
                Rectangle regionShape = new Rectangle()
                {
                    Height = 30, Width = 80
                };
                regionShape.Stroke          = sysOutlineBrush;
                regionShape.StrokeThickness = 1.5;
                regionShape.StrokeLineJoin  = PenLineJoin.Round;
                regionShape.RadiusX         = 5;
                regionShape.RadiusY         = 5;
                regionShape.Fill            = sysInRegionBrush;
                regionShape.MouseDown      += RegionShape_MouseDown;
                regionShape.DataContext     = mr;

                if (mr.Faction == "Amarr")
                {
                    regionShape.Fill = amarrBg;
                }
                if (mr.Faction == "Gallente")
                {
                    regionShape.Fill = gallenteBg;
                }
                if (mr.Faction == "Minmatar")
                {
                    regionShape.Fill = minmatarBg;
                }
                if (mr.Faction == "Caldari")
                {
                    regionShape.Fill = caldariBg;
                }

                if (mr.HasHighSecSystems)
                {
                    regionShape.StrokeThickness = 2.0;
                }


                if (ActiveCharacter != null && ActiveCharacter.ESILinked && MapConf.ShowRegionStandings)
                {
                    float averageStanding = 0.0f;
                    float numSystems      = 0;

                    foreach (EVEData.MapSystem s in mr.MapSystems.Values)
                    {
                        if (s.OutOfRegion)
                        {
                            continue;
                        }

                        numSystems++;

                        if (MapConf.SOVBasedITCU)
                        {
                            if (ActiveCharacter.AllianceID != 0 && ActiveCharacter.AllianceID == s.ActualSystem.SOVAllianceTCU)
                            {
                                averageStanding += 10.0f;
                            }

                            if (s.ActualSystem.SOVAllianceTCU != 0 && ActiveCharacter.Standings.Keys.Contains(s.ActualSystem.SOVAllianceTCU))
                            {
                                averageStanding += ActiveCharacter.Standings[s.ActualSystem.SOVAllianceTCU];
                            }
                        }
                        else
                        {
                            if (ActiveCharacter.AllianceID != 0 && ActiveCharacter.AllianceID == s.ActualSystem.SOVAllianceIHUB)
                            {
                                averageStanding += 10.0f;
                            }

                            if (s.ActualSystem.SOVAllianceTCU != 0 && ActiveCharacter.Standings.Keys.Contains(s.ActualSystem.SOVAllianceIHUB))
                            {
                                averageStanding += ActiveCharacter.Standings[s.ActualSystem.SOVAllianceIHUB];
                            }
                        }

                        if (s.ActualSystem.SOVCorp != 0 && ActiveCharacter.Standings.Keys.Contains(s.ActualSystem.SOVCorp))
                        {
                            averageStanding += ActiveCharacter.Standings[s.ActualSystem.SOVCorp];
                        }
                    }

                    averageStanding = averageStanding / numSystems;

                    if (averageStanding > 0.5)
                    {
                        Color blueIsh = Colors.Gray;
                        blueIsh.B       += (byte)((255 - blueIsh.B) * (averageStanding / 10.0f));
                        regionShape.Fill = new SolidColorBrush(blueIsh);
                    }
                    else if (averageStanding < -0.5)
                    {
                        averageStanding *= -1;
                        Color redIsh = Colors.Gray;
                        redIsh.R        += (byte)((255 - redIsh.R) * (averageStanding / 10.0f));
                        regionShape.Fill = new SolidColorBrush(redIsh);
                    }
                    else
                    {
                        regionShape.Fill = new SolidColorBrush(Colors.Gray);
                    }

                    if (mr.HasHighSecSystems)
                    {
                        regionShape.Fill = new SolidColorBrush(Colors.LightGray);
                    }
                }

                if (MapConf.ShowUniverseRats)
                {
                    double numRatkills = 0.0f;

                    foreach (EVEData.MapSystem s in mr.MapSystems.Values)
                    {
                        if (s.OutOfRegion)
                        {
                            continue;
                        }

                        numRatkills += s.ActualSystem.NPCKillsLastHour;
                    }
                    byte b = 255;

                    double ratScale = numRatkills / (15000 * MapConf.UniverseDataScale);
                    ratScale = Math.Min(Math.Max(0.0, ratScale), 1.0);
                    b        = (byte)(255.0 * (ratScale));

                    Color c = new Color();
                    c.A = b;
                    c.B = b;
                    c.G = b;
                    c.A = 255;

                    regionShape.Fill = new SolidColorBrush(c);
                }

                if (MapConf.ShowUniversePods)
                {
                    float numPodKills = 0.0f;

                    foreach (EVEData.MapSystem s in mr.MapSystems.Values)
                    {
                        if (s.OutOfRegion)
                        {
                            continue;
                        }

                        numPodKills += s.ActualSystem.PodKillsLastHour;
                    }
                    byte b = 255;

                    double podScale = numPodKills / (50 * MapConf.UniverseDataScale);
                    podScale = Math.Min(Math.Max(0.0, podScale), 1.0);
                    b        = (byte)(255.0 * (podScale));

                    Color c = new Color();
                    c.A = b;
                    c.R = b;
                    c.G = b;
                    c.A = 255;

                    regionShape.Fill = new SolidColorBrush(c);
                }

                if (MapConf.ShowUniverseKills)
                {
                    float numShipKills = 0.0f;

                    foreach (EVEData.MapSystem s in mr.MapSystems.Values)
                    {
                        if (s.OutOfRegion)
                        {
                            continue;
                        }

                        numShipKills += s.ActualSystem.ShipKillsLastHour;
                    }
                    byte   b         = 255;
                    double shipScale = numShipKills / (100 * MapConf.UniverseDataScale);
                    shipScale = Math.Min(Math.Max(0.0, shipScale), 1.0);
                    b         = (byte)(255.0 * (shipScale));

                    Color c = new Color();
                    c.A = b;
                    c.R = b;
                    c.B = b;
                    c.A = 255;
                    regionShape.Fill = new SolidColorBrush(c);
                }

                Canvas.SetLeft(regionShape, mr.UniverseViewX - 40);
                Canvas.SetTop(regionShape, mr.UniverseViewY - 15);
                Canvas.SetZIndex(regionShape, 22);
                MainUniverseCanvas.Children.Add(regionShape);

                Label regionText = new Label();
                regionText.Width               = 80;
                regionText.Height              = 27;
                regionText.Content             = mr.Name;
                regionText.Foreground          = sysOutlineBrush;
                regionText.FontSize            = 10;
                regionText.HorizontalAlignment = HorizontalAlignment.Center;
                regionText.VerticalAlignment   = VerticalAlignment.Center;
                regionText.IsHitTestVisible    = false;

                regionText.HorizontalContentAlignment = HorizontalAlignment.Center;
                regionText.VerticalContentAlignment   = VerticalAlignment.Center;

                Canvas.SetLeft(regionText, mr.UniverseViewX - 40);
                Canvas.SetTop(regionText, mr.UniverseViewY - 15);
                Canvas.SetZIndex(regionText, 23);
                MainUniverseCanvas.Children.Add(regionText);

                if (!string.IsNullOrEmpty(mr.Faction))
                {
                    Label factionText = new Label();
                    factionText.Width               = 80;
                    factionText.Height              = 30;
                    factionText.Content             = mr.Faction;
                    factionText.Foreground          = sysOutlineBrush;
                    factionText.FontSize            = 6;
                    factionText.HorizontalAlignment = HorizontalAlignment.Center;
                    factionText.VerticalAlignment   = VerticalAlignment.Center;
                    factionText.IsHitTestVisible    = false;

                    factionText.HorizontalContentAlignment = HorizontalAlignment.Center;
                    factionText.VerticalContentAlignment   = VerticalAlignment.Bottom;

                    Canvas.SetLeft(factionText, mr.UniverseViewX - 40);
                    Canvas.SetTop(factionText, mr.UniverseViewY - 15);
                    Canvas.SetZIndex(factionText, 23);
                    MainUniverseCanvas.Children.Add(factionText);
                }

                // now add all the region links : TODO :  this will end up adding 2 lines, region a -> b and b -> a
                foreach (string s in mr.RegionLinks)
                {
                    EVEData.MapRegion or = EVEData.EveManager.Instance.GetRegion(s);
                    Line regionLink      = new Line();

                    regionLink.X1 = mr.UniverseViewX;
                    regionLink.Y1 = mr.UniverseViewY;

                    regionLink.X2 = or.UniverseViewX;
                    regionLink.Y2 = or.UniverseViewY;

                    regionLink.Stroke          = sysOutlineBrush;
                    regionLink.StrokeThickness = 1;
                    regionLink.Visibility      = Visibility.Visible;

                    Canvas.SetZIndex(regionLink, 21);
                    MainUniverseCanvas.Children.Add(regionLink);
                }
            }
        }
コード例 #20
0
ファイル: MainWindow.xaml.cs プロジェクト: Cherrs/SMT
        private void ShapeMouseDownHandler(object sender, MouseButtonEventArgs e)
        {
            Shape obj = sender as Shape;

            EVEData.MapRegion currentRegion = RegionDropDown.SelectedItem as EVEData.MapRegion;

            EVEData.MapSystem selectedSys = obj.DataContext as EVEData.MapSystem;

            if (e.ChangedButton == MouseButton.Left)
            {
                if (e.ClickCount == 1)
                {
                    bool redraw = false;
                    if (MapConf.ShowJumpDistance)
                    {
                        redraw = true;
                    }
                    SelectSystem(selectedSys.Name);

                    ReDrawMap(redraw);
                }

                if (e.ClickCount == 2 && selectedSys.Region != currentRegion.Name)
                {
                    foreach (EVEData.MapRegion rd in EVEManager.Regions)
                    {
                        if (rd.Name == selectedSys.Region)
                        {
                            RegionDropDown.SelectedItem = rd;

                            ReDrawMap();
                            SelectSystem(selectedSys.Name);
                            break;
                        }
                    }
                }
            }

            if (e.ChangedButton == MouseButton.Right)
            {
                ContextMenu cm = this.FindResource("SysRightClickContextMenu") as ContextMenu;
                cm.PlacementTarget = obj;
                cm.DataContext     = selectedSys;

                MenuItem setDesto    = cm.Items[2] as MenuItem;
                MenuItem addWaypoint = cm.Items[3] as MenuItem;


                setDesto.IsEnabled    = false;
                addWaypoint.IsEnabled = false;

                EVEData.Character c = CharacterDropDown.SelectedItem as EVEData.Character;
                if (c != null && c.ESILinked)
                {
                    setDesto.IsEnabled    = true;
                    addWaypoint.IsEnabled = true;
                }



                cm.IsOpen = true;
            }
        }