Skip to content

Commit

Permalink
Add rulers mode to display all antennas ranges, not only relays
Browse files Browse the repository at this point in the history
This can be activated cycling through the ruler icon in the toolbar, like for connection lines
  • Loading branch information
rockfactory committed Feb 25, 2024
1 parent 035a00c commit 111adb0
Show file tree
Hide file tree
Showing 12 changed files with 258 additions and 35 deletions.
Binary file modified plugin_template/assets/bundles/commnext_ui.bundle
Binary file not shown.
5 changes: 4 additions & 1 deletion plugin_template/localizations/commnext_localizations.csv
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,7 @@ PartModules/NextModulator/KindOmniBand,Text,,Omni-band,Omni-banda,Omni-Band,Omni
PartModules/NextModulator/Name,Text,,Signal Modulator,Modulatore di Segnale,Signalmodulator,Modulateur de signal,Modulador de señal,信号调制器,신호 변조기,Modulator sygnału,Модулятор сигнала,信号调制器,Modulador de sinal,信号调制器
CommNext/UI/ActionRequiresMapView,Text,,Action is enabled only in Map View,L'azione è abilitata solo nella vista mappa,Aktion ist nur in der Kartenansicht aktivée,Action activée uniquement dans la vue carte,La acción solo está habilitada en la vista de mapa,此操作仅在地图视图中启用,작업은 맵 뷰에서만 활성화됩니다,Akcja jest aktywna tylko w widoku mapy,Действие доступно только в режиме карты,此操作仅在地图视图中启用,A ação só está habilitada na visualização de mapa,此操作仅在地图视图中启用
CommNext/UI/TooltipActivateBandRulers,Text,,Toggle this band rulers in Map View,Abilita/disabilita i righelli di questa banda nella vista mappa,Aktivieren/Deaktivieren dieser Bandlineale in der Kartenansicht,Activer/désactiver les règles de cette bande dans la vue carte,Alternar reglas de esta banda en la vista de mapa,在地图视图中切换此频段标尺,맵 뷰에서 이 대역 눈금자를 토글합니다,Przełącz tę przepustkę w widoku mapy,Переключить эту шкалу в режиме карты,在地图视图中切换此频段标尺,Alternar réguas desta banda na visualização de mapa,在地图视图中切换此频段标尺
CommNext/UI/TooltipNoPowerCurrentVessel,Text,,Active vessel has no power,Il veicolo attivo non ha alimentazione,Der aktive Schiff hat keine Stromversorgung,Le vaisseau actif n'a pas d'alimentation,La nave activa no tiene energía,活动船只没有电源,활성 선박에 전원이 없습니다,Aktywny statek nie ma zasilania,Активное судно не имеет питания,活动船只没有电源,A nave ativa não tem energia,活动船只没有电源
CommNext/UI/TooltipNoPowerCurrentVessel,Text,,Active vessel has no power,Il veicolo attivo non ha alimentazione,Der aktive Schiff hat keine Stromversorgung,Le vaisseau actif n'a pas d'alimentation,La nave activa no tiene energía,活动船只没有电源,활성 선박에 전원이 없습니다,Aktywny statek nie ma zasilania,Активное судно не имеет питания,活动船只没有电源,A nave ativa não tem energia,活动船只没有电源
CommNext/UI/RulersDisplayModeNone,Text,Rulers display mode: None,Disabled,Disabilitato,Deaktiviert,Désactivé,Desactivado,禁用,비활성화,Dezaktywowane,Отключено,禁用,Desativado,禁用
CommNext/UI/RulersDisplayModeRelays,Text,Rulers display mode: Relays,Only relays,Solo ripetitori,Nur Relais,Seulement les relais,Solo relés,只有中继,릴레이만,Tylko przekaźniki,Только реле,只有中继,Apenas relés,只有中继
CommNext/UI/RulersDisplayModeAll,Text,Rulers display mode: All,All,Tutti,Alle,Tous,Todos,全部,모두,Wszystkie,Все,全部,Todos,全部
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
127 changes: 127 additions & 0 deletions src/CommNext.Unity/CommNext.Unity/Assets/Images/RulerAllIcon.png.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<ui:VisualElement name="toolbar" class="toolbar" style="flex-grow: 0; width: 100px; height: 40px; flex-direction: row; justify-content: center; align-self: flex-start; align-items: center; border-left-width: 0.5px; border-right-width: 0.5px; border-top-width: 0.5px; border-bottom-width: 1.5px;">
<ui:Label tabindex="-1" text="COMMNEXT" display-tooltip-when-elided="true" class="toolbar-label" style="position: absolute; translate: -50% 0; -unity-font-style: bold;" />
<ui:Button display-tooltip-when-elided="true" enable-rich-text="true" name="lines-button" class="toolbar__icon toolbar__icon--comm-lines" />
<ui:Button display-tooltip-when-elided="true" enable-rich-text="true" name="rulers-button" class="toolbar__icon" style="background-image: url(&apos;project://database/Assets/Images/RulerIcon.png?fileID=21300000&amp;guid=3b9ca3009b51d014a9e7fa9131114060&amp;type=3#RulerIcon&apos;);" />
<ui:Button display-tooltip-when-elided="true" enable-rich-text="true" name="rulers-button" class="toolbar__icon toolbar__icon--rulers-none" />
<ui:Button display-tooltip-when-elided="true" enable-rich-text="true" name="vessel-report-button" class="toolbar-button toolbar-comm-icon toolbar__icon" style="background-image: url(&apos;project://database/Assets/Images/ReportIcon.png?fileID=21300000&amp;guid=ccbe3209822b1a64482fbbef6e8d590a&amp;type=3#ReportIcon&apos;);" />
</ui:VisualElement>
</ui:UXML>
53 changes: 42 additions & 11 deletions src/CommNext.Unity/CommNext.Unity/Assets/UI/CommNextStyles.uss
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
--band-k: rgb(112, 100, 255);
--band-ka: rgb(214, 38, 235);
--band-v: rgb(43, 217, 148);
--toolbar-off: rgb(213, 222, 255);
--toolbar-off-hover: rgb(128, 134, 153);
--toolbar-on: rgb(0, 255, 102);
--toolbar-on-hover: rgb(17, 152, 73);
}

#close-button {
Expand Down Expand Up @@ -100,51 +104,78 @@
width: 24px;
border-width: 0;
background-color: var(--black);
-unity-background-image-tint-color: rgb(213, 222, 255);
-unity-background-image-tint-color: var(--toolbar-off);
transition: all 0.2s;
}

.toolbar__icon.toolbar__icon--comm-none {
-unity-background-image-tint-color: rgb(213, 222, 255);
-unity-background-image-tint-color: var(--toolbar-off);
background-image: url('project://database/Assets/Images/CommIcon.png?fileID=21300000&guid=44fde49e8d63c944d8546059ff442eda&type=3#CommIcon');
}

.toolbar__icon.toolbar__icon--comm-lines {
-unity-background-image-tint-color: rgb(0, 255, 102);
-unity-background-image-tint-color: var(--toolbar-on);
background-image: url('project://database/Assets/Images/CommIcon.png?fileID=21300000&guid=44fde49e8d63c944d8546059ff442eda&type=3#CommIcon');
}

.toolbar__icon.toolbar__icon--comm-active {
-unity-background-image-tint-color: rgb(0, 255, 102);
-unity-background-image-tint-color: var(--toolbar-on);
background-image: url('project://database/Assets/Images/CommActiveIcon.png?fileID=21300000&guid=65ee5addc1a687148add89fab0312eee&type=3#CommActiveIcon');
}

.toolbar__icon.toolbar__icon--comm-none:hover {
-unity-background-image-tint-color: rgb(128, 134, 153);
-unity-background-image-tint-color: var(--toolbar-off-hover);
}

.toolbar__icon.toolbar__icon--comm-lines:hover {
-unity-background-image-tint-color: rgb(17, 152, 73);
-unity-background-image-tint-color: var(--toolbar-on-hover);
}

.toolbar__icon.toolbar__icon--comm-active:hover {
-unity-background-image-tint-color: rgb(17, 152, 73);
-unity-background-image-tint-color: var(--toolbar-on-hover);
}

.toolbar__icon {
-unity-background-image-tint-color: rgb(213, 222, 255);
-unity-background-image-tint-color: var(--toolbar-off);
}

.toolbar__icon:hover {
-unity-background-image-tint-color: rgb(128, 134, 153);
-unity-background-image-tint-color: var(--toolbar-off-hover);
}

.toolbar__icon.toggled {
-unity-background-image-tint-color: rgb(0, 255, 102);
-unity-background-image-tint-color: var(--toolbar-on);
}

.toolbar__icon.toggled:hover {
-unity-background-image-tint-color: rgb(17, 152, 73);
-unity-background-image-tint-color: var(--toolbar-on-hover);
}

.toolbar__icon--rulers-none {
-unity-background-image-tint-color: var(--toolbar-off);
background-image: url('project://database/Assets/Images/RulerIcon.png?fileID=21300000&guid=3b9ca3009b51d014a9e7fa9131114060&type=3#RulerIcon');
}

.toolbar__icon--rulers-relays {
-unity-background-image-tint-color: var(--toolbar-on);
background-image: url('project://database/Assets/Images/RulerIcon.png?fileID=21300000&guid=3b9ca3009b51d014a9e7fa9131114060&type=3#RulerIcon');
}

.toolbar__icon--rulers-all {
-unity-background-image-tint-color: var(--toolbar-on);
background-image: url('project://database/Assets/Images/RulerAllIcon.png?fileID=21300000&guid=f51980a60b7a2da4a81bf5c1ac0f1d5b&type=3#RulerAllIcon');
}

.toolbar__icon--rulers-none:hover {
-unity-background-image-tint-color: var(--toolbar-off-hover);
}

.toolbar__icon--rulers-relays:hover {
-unity-background-image-tint-color: var(--toolbar-on-hover);
}

.toolbar__icon--rulers-all:hover {
-unity-background-image-tint-color: var(--toolbar-on-hover);
}

.app-comm-icon {
Expand Down
2 changes: 1 addition & 1 deletion src/CommNext/Data/SaveData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ public class SaveData
{
public Vector3? MapToolbarPosition;
public ConnectionsDisplayMode? ConnectionsDisplayMode;
public bool? ShowRulers;
public RulersDisplayMode? RulersDisplayMode;
}
6 changes: 3 additions & 3 deletions src/CommNext/Managers/SaveManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ private static void SaveGameData(SaveData dataToSave)
dataToSave.MapToolbarPosition = MainUIManager.Instance.MapToolbarWindow!.Position;

dataToSave.ConnectionsDisplayMode = ConnectionsRenderer.Instance.ConnectionsDisplayMode;
dataToSave.ShowRulers = ConnectionsRenderer.Instance.IsRulersEnabled;
dataToSave.RulersDisplayMode = ConnectionsRenderer.Instance.RulersDisplayMode;
}

private void LoadGameData(SaveData dataToLoad)
Expand All @@ -45,8 +45,8 @@ public void LoadDataIntoUI()
if (_loadedSaveData.MapToolbarPosition.HasValue && _loadedSaveData.MapToolbarPosition != Vector3.zero)
MainUIManager.Instance.MapToolbarWindow.Position = _loadedSaveData.MapToolbarPosition.Value;

if (_loadedSaveData.ShowRulers != null)
ConnectionsRenderer.Instance.IsRulersEnabled = _loadedSaveData.ShowRulers.Value;
if (_loadedSaveData.RulersDisplayMode != null)
ConnectionsRenderer.Instance.RulersDisplayMode = _loadedSaveData.RulersDisplayMode.Value;
if (_loadedSaveData.ConnectionsDisplayMode != null)
ConnectionsRenderer.Instance.ConnectionsDisplayMode = _loadedSaveData.ConnectionsDisplayMode.Value;

Expand Down
23 changes: 12 additions & 11 deletions src/CommNext/Rendering/ConnectionsRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ public class ConnectionsRenderer : MonoBehaviour
private IEnumerator? _updateTask;

private ConnectionsDisplayMode _connectionsDisplayMode = ConnectionsDisplayMode.Lines;
private bool _isRulersEnabled = true;
private RulersDisplayMode _rulersDisplayMode = RulersDisplayMode.Relays;

public bool IsConnectionsEnabled => _connectionsDisplayMode != ConnectionsDisplayMode.None;
public bool IsRulersEnabled => _rulersDisplayMode != RulersDisplayMode.None;

private int? _selectedBandIndex;
private Color? _selectedBandColor;
Expand All @@ -60,12 +61,12 @@ public int? SelectedBandIndex
if (_selectedBandIndex.HasValue)
{
_selectedBandColor = NetworkBands.Instance.AllBands[_selectedBandIndex.Value].Color;
IsRulersEnabled = true;
RulersDisplayMode = RulersDisplayMode.Relays;
}
else
{
_selectedBandColor = null;
IsRulersEnabled = false;
RulersDisplayMode = RulersDisplayMode.None;
}
}
}
Expand All @@ -89,13 +90,13 @@ public ConnectionsDisplayMode ConnectionsDisplayMode
/// Rulers are the spheres that show the range of the nodes
/// (vessels, ground stations, etc).
/// </summary>
public bool IsRulersEnabled
public RulersDisplayMode RulersDisplayMode
{
get => _isRulersEnabled;
get => _rulersDisplayMode;
set
{
Logger.LogInfo("Setting IsRulersEnabled to " + value);
_isRulersEnabled = value;
Logger.LogInfo("Setting RulersDisplayMode " + value);
_rulersDisplayMode = value;
ClearRulers();
ToggleUpdateTaskIfNeeded();
}
Expand Down Expand Up @@ -123,7 +124,7 @@ private void ToggleUpdateTaskIfNeeded()
// We want to trigger them right away so that UI is updated
// right after the UI click.
// if (IsConnectionsEnabled || _isRulersEnabled) UpdateRenderings();
var shouldBeRunning = IsConnectionsEnabled || _isRulersEnabled || ReportVessel != null;
var shouldBeRunning = IsConnectionsEnabled || IsRulersEnabled || ReportVessel != null;

switch (shouldBeRunning)
{
Expand Down Expand Up @@ -197,7 +198,7 @@ private void UpdateRenderings()
{
if (IsConnectionsEnabled) UpdateConnections(nodes!, prevIndexes, networkJobConnections.Value);
if (ReportVessel != null) UpdateReportConnections();
if (_isRulersEnabled) UpdateRulers(nodes!, prevIndexes);
if (IsRulersEnabled) UpdateRulers(nodes!, prevIndexes);
}
catch (Exception e)
{
Expand Down Expand Up @@ -348,9 +349,9 @@ private void UpdateRulers(List<ConnectionGraphNode> nodes, int[] prevIndexes)
var item = GetMapItem(node);
if (item == null) continue;

// We want to show only relays as rulers.
// We want to show only relays as rulers if the mode is set to relays.
var networkNode = NetworkManager.Instance.Nodes.GetValueOrDefault(node.Owner);
if (networkNode is not { IsRelay: true }) continue;
if (networkNode is not { IsRelay: true } && _rulersDisplayMode == RulersDisplayMode.Relays) continue;

if (_selectedBandIndex.HasValue && networkNode.BandRanges[_selectedBandIndex.Value] <= 0) continue;

Expand Down
33 changes: 33 additions & 0 deletions src/CommNext/Rendering/RulersDisplayMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
namespace CommNext.Rendering;

public enum RulersDisplayMode
{
None,
Relays,
All // Relay + Antennas
}

public static class RulersDisplayModeExtensions
{
public static bool IsEnabled(this RulersDisplayMode mode)
{
return mode != RulersDisplayMode.None;
}

/// <summary>
/// Toggles between the three display modes.
/// </summary>
/// <param name="mode"></param>
/// <returns></returns>
/// <exception cref="ArgumentOutOfRangeException"></exception>
public static RulersDisplayMode Next(this RulersDisplayMode mode)
{
return mode switch
{
RulersDisplayMode.None => RulersDisplayMode.Relays,
RulersDisplayMode.Relays => RulersDisplayMode.All,
RulersDisplayMode.All => RulersDisplayMode.None,
_ => throw new ArgumentOutOfRangeException(nameof(mode), mode, null)
};
}
}
3 changes: 3 additions & 0 deletions src/CommNext/UI/LocalizedStrings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ public static class LocalizedStrings
public static LocalizedString ModulatorKindOmniBand = "PartModules/NextModulator/KindOmniBand";
public static LocalizedString TooltipActivateBandRulers = "CommNext/UI/TooltipActivateBandRulers";
public static LocalizedString TooltipNoPowerCurrentVessel = "CommNext/UI/TooltipNoPowerCurrentVessel";
public static LocalizedString RulersDisplayModeNone = "CommNext/UI/RulersDisplayModeNone";
public static LocalizedString RulersDisplayModeRelays = "CommNext/UI/RulersDisplayModeRelays";
public static LocalizedString RulersDisplayModeAll = "CommNext/UI/RulersDisplayModeAll";

// Only keys
public const string DistanceLabelKey = "CommNext/UI/DistanceLabel";
Expand Down
Loading

0 comments on commit 111adb0

Please sign in to comment.