Skip to content

Commit 486449c

Browse files
authored
Merge pull request #169 from EVEJay/master
Added options how to display char names on overlay.
2 parents d9dbf7a + 3d66fb5 commit 486449c

File tree

3 files changed

+96
-28
lines changed

3 files changed

+96
-28
lines changed

SMT/MapConfig.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.ComponentModel;
3+
using System.Windows.Controls;
34
using System.Windows.Media;
45
using System.Xml.Serialization;
56

@@ -108,6 +109,7 @@ public class MapConfig : INotifyPropertyChanged
108109
private bool m_overlayShowSystemNames = false;
109110
private bool m_overlayShowAllCharacterNames = false;
110111
private bool m_overlayIndividualCharacterWindows = false;
112+
private string m_overlayAdditionalCharacterNamesDisplay = "All";
111113

112114
public MapConfig()
113115
{
@@ -1133,6 +1135,22 @@ public bool OverlayIndividualCharacterWindows
11331135
OnPropertyChanged("OverlayIndividualCharacterWindows");
11341136
}
11351137
}
1138+
1139+
[Category("Overlay")]
1140+
[DisplayName("Overlay Additional Character Names Display")]
1141+
public string OverlayAdditionalCharacterNamesDisplay
1142+
{
1143+
get
1144+
{
1145+
return m_overlayAdditionalCharacterNamesDisplay;
1146+
}
1147+
set
1148+
{
1149+
m_overlayAdditionalCharacterNamesDisplay = value;
1150+
1151+
OnPropertyChanged("OverlayAdditionalCharacterNamesDisplay");
1152+
}
1153+
}
11361154

11371155
[Category("Overlay")]
11381156
[DisplayName("Overlay Show System Names")]
@@ -1342,6 +1360,7 @@ public void SetDefaults()
13421360
OverlayShowJumpBridges = true;
13431361
OverlayShowSystemNames = false;
13441362
OverlayShowAllCharacterNames = false;
1363+
OverlayAdditionalCharacterNamesDisplay = "All";
13451364

13461365
IntelFreshTime = 30;
13471366
IntelStaleTime = 120;

SMT/Overlay.xaml.cs

Lines changed: 68 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ public partial class Overlay : Window
300300
private bool showSystemNames = false;
301301
private bool showAllCharacterNames = false;
302302
private bool individualCharacterWindows = false;
303+
private string additionalCharacterNamesDisplay = "All";
303304

304305
private DispatcherTimer locationUpdateTimer = new DispatcherTimer();
305306
private DispatcherTimer dataUpdateTimer = new DispatcherTimer();
@@ -419,6 +420,7 @@ public Overlay(MainWindow mw)
419420
showSystemNames = mainWindow.MapConf.OverlayShowSystemNames;
420421
showAllCharacterNames = mainWindow.MapConf.OverlayShowAllCharacterNames;
421422
individualCharacterWindows = mainWindow.MapConf.OverlayIndividualCharacterWindows;
423+
additionalCharacterNamesDisplay = mainWindow.MapConf.OverlayAdditionalCharacterNamesDisplay;
422424

423425
// Initialize value animation to be used by dashed lines
424426
dashAnimation = new DoubleAnimation();
@@ -1589,48 +1591,79 @@ private void DrawSystemToOverlay(OverlaySystemData sysData, double left, double
15891591
double leftCoord = left - (systemData[sysData.system.Name].systemCanvasElement.Width * 0.5);
15901592
double topCoord = top - (systemData[sysData.system.Name].systemCanvasElement.Height * 0.5);
15911593

1592-
if (showSystemNames || showAllCharacterNames )
1594+
// Show system and char names.
1595+
if (systemData[sysData.system.Name].systemNameElement == null)
15931596
{
1594-
if (systemData[sysData.system.Name].systemNameElement == null)
1595-
{
1596-
systemData[sysData.system.Name].systemNameElement = new TextBlock();
1597-
}
1598-
systemData[sysData.system.Name].systemNameElement.Inlines.Clear();
1599-
systemData[sysData.system.Name].systemNameElement.Width = 80;
1597+
systemData[sysData.system.Name].systemNameElement = new TextBlock();
1598+
}
1599+
systemData[sysData.system.Name].systemNameElement.Inlines.Clear();
1600+
systemData[sysData.system.Name].systemNameElement.Width = 80;
1601+
1602+
bool firstEntry = false;
16001603

1601-
bool firstEntry = false;
1602-
if (showSystemNames)
1604+
if (showSystemNames)
1605+
{
1606+
systemData[sysData.system.Name].systemNameElement.Inlines.Add( new Run(sysData.system.Name));
1607+
firstEntry = true;
1608+
}
1609+
1610+
List<string> charsInSystem = new();
1611+
1612+
foreach (KeyValuePair<LocalCharacter, OverlaySystemData> localCharacterEntry in currentPlayersSystemData)
1613+
{
1614+
if (localCharacterEntry.Value.system != null && sysData.system.Name == localCharacterEntry.Value.system.Name)
16031615
{
1604-
systemData[sysData.system.Name].systemNameElement.Inlines.Add( new Run(sysData.system.Name));
1605-
firstEntry = true;
1616+
charsInSystem.Add(localCharacterEntry.Key.Name);
16061617
}
1618+
}
16071619

1608-
foreach (KeyValuePair<LocalCharacter, OverlaySystemData> localCharacterEntry in currentPlayersSystemData)
1609-
{
1610-
if (localCharacterEntry.Value.system != null && sysData.system.Name == localCharacterEntry.Value.system.Name)
1620+
switch (additionalCharacterNamesDisplay)
1621+
{
1622+
case "Overlay Character":
1623+
if (charsInSystem.Contains(OverlayCharacter.Name))
1624+
{
1625+
if (firstEntry)
1626+
{
1627+
systemData[sysData.system.Name].systemNameElement.Inlines.Add(new LineBreak());
1628+
}
1629+
1630+
systemData[sysData.system.Name].systemNameElement.Inlines
1631+
.Add(new Run($"{OverlayCharacter.Name}"));
1632+
}
1633+
break;
1634+
case "All":
1635+
foreach (string charName in charsInSystem)
16111636
{
16121637
if (firstEntry)
16131638
{
16141639
systemData[sysData.system.Name].systemNameElement.Inlines.Add(new LineBreak());
16151640
}
1616-
systemData[sysData.system.Name].systemNameElement.Inlines.Add(new Run($"{localCharacterEntry.Key.Name}")) ;
1641+
systemData[sysData.system.Name].systemNameElement.Inlines.Add(new Run($"{charName}")) ;
16171642
firstEntry = true;
16181643
}
1619-
}
1620-
1621-
systemData[sysData.system.Name].systemNameElement.Foreground = Brushes.White;
1622-
systemData[sysData.system.Name].systemNameElement.FontSize = 10;
1623-
systemData[sysData.system.Name].systemNameElement.TextAlignment = TextAlignment.Center;
1624-
systemData[sysData.system.Name].systemNameElement.IsHitTestVisible = false;
1644+
break;
1645+
case "None":
1646+
break;
1647+
case "Number":
1648+
if (charsInSystem.Count > 0)
1649+
{
1650+
systemData[sysData.system.Name].systemNameElement.Inlines.Add(new Run($" ({charsInSystem.Count})"));
1651+
}
1652+
break;
1653+
}
1654+
1655+
systemData[sysData.system.Name].systemNameElement.Foreground = Brushes.White;
1656+
systemData[sysData.system.Name].systemNameElement.FontSize = 10;
1657+
systemData[sysData.system.Name].systemNameElement.TextAlignment = TextAlignment.Center;
1658+
systemData[sysData.system.Name].systemNameElement.IsHitTestVisible = false;
16251659

1626-
Canvas.SetLeft(systemData[sysData.system.Name].systemNameElement, leftCoord - (systemData[sysData.system.Name].systemNameElement.Width * 0.5f) + (systemData[sysData.system.Name].systemCanvasElement.Width * 0.5f));
1627-
Canvas.SetTop(systemData[sysData.system.Name].systemNameElement, topCoord + systemData[sysData.system.Name].systemCanvasElement.Height + 2);
1628-
Canvas.SetZIndex(systemData[sysData.system.Name].systemNameElement, 125);
1660+
Canvas.SetLeft(systemData[sysData.system.Name].systemNameElement, leftCoord - (systemData[sysData.system.Name].systemNameElement.Width * 0.5f) + (systemData[sysData.system.Name].systemCanvasElement.Width * 0.5f));
1661+
Canvas.SetTop(systemData[sysData.system.Name].systemNameElement, topCoord + systemData[sysData.system.Name].systemCanvasElement.Height + 2);
1662+
Canvas.SetZIndex(systemData[sysData.system.Name].systemNameElement, 125);
16291663

1630-
if (!overlay_Canvas.Children.Contains(systemData[sysData.system.Name].systemNameElement))
1631-
{
1632-
overlay_Canvas.Children.Add(systemData[sysData.system.Name].systemNameElement);
1633-
}
1664+
if (!overlay_Canvas.Children.Contains(systemData[sysData.system.Name].systemNameElement))
1665+
{
1666+
overlay_Canvas.Children.Add(systemData[sysData.system.Name].systemNameElement);
16341667
}
16351668

16361669
systemData[sysData.system.Name].canvasCoordinate = new Vector2((float)leftCoord, (float)topCoord);
@@ -1909,6 +1942,13 @@ private void OverlayConf_PropertyChanged(object sender, PropertyChangedEventArgs
19091942
individualCharacterWindows = mainWindow.MapConf.OverlayIndividualCharacterWindows;
19101943
Close();
19111944
}
1945+
1946+
if (e.PropertyName == "OverlayAdditionalCharacterNamesDisplay")
1947+
{
1948+
additionalCharacterNamesDisplay = mainWindow.MapConf.OverlayAdditionalCharacterNamesDisplay;
1949+
ClearView();
1950+
RefreshCurrentView();
1951+
}
19121952
}
19131953

19141954
/// <summary>

SMT/Preferences.xaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,15 @@
304304
<Label Content="Finally, Intel is historic for x seconds" />
305305
</StackPanel>
306306
<CheckBox Margin="0,3" IsChecked="{Binding Path=OverlayIndividualCharacterWindows}" Content="Open individual windows for each character." />
307+
<StackPanel Orientation="Horizontal" Margin="0,2">
308+
<Label Content="Char names on overlay: " />
309+
<ComboBox SelectedValuePath="Content" SelectedValue="{Binding Path=OverlayAdditionalCharacterNamesDisplay}" Width="150">
310+
<ComboBoxItem Content="All"></ComboBoxItem>
311+
<ComboBoxItem Content="Overlay Character"></ComboBoxItem>
312+
<ComboBoxItem Content="None"></ComboBoxItem>
313+
<ComboBoxItem Content="Number"></ComboBoxItem>
314+
</ComboBox>
315+
</StackPanel>
307316
</StackPanel>
308317
</GroupBox>
309318
</StackPanel>

0 commit comments

Comments
 (0)