Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add bands support #15

Merged
merged 8 commits into from
Feb 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified plugin_template/assets/bundles/commnext_ui.bundle
Binary file not shown.
18 changes: 16 additions & 2 deletions plugin_template/localizations/commnext_localizations.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Key,Type,Desc,English,Italian,German,French,Spanish,Japanese,Korean,Polish,Russian,Chinese (Simplified),Portuguese (Brazil),Chinese (Traditional)
PartModules/NextRelay/Band,Text,,Band,Banda,,,,,,,,频段,,
PartModules/NextRelay/Band,Text,,Band,Banda,Band,Bande,Banda,频段,대역,Przepustka,Диапазон,频段,Banda,频段
PartModules/NextRelay/SecondaryBand,Text,,Secondary Band,Banda Secondaria,Sekundärband,Bande secondaire,Banda secundaria,次要频段,보조 대역,Druga przepustka,Вторичный диапазон,次要频段,Banda secundária,次要频段
PartModules/NextRelay/Name,Text,,Signal Relay,Ripetitore di Segnale,,,,,,,,信号中继,,
PartModules/NextRelay/RelayDescription,Text,,This antenna behaves as a relay,,,,,,,,,这款天线能够中继信号,,
CommNext/UI/DistanceLabel,Text,,Distance {0},Distanza {0},Entfernung {0},Distance {0},Distancia {0},距离 {0},거리 {0},Odległość {0},Расстояние {0},距离 {0},Distância {0},距离 {0}
Expand All @@ -17,6 +18,7 @@ CommNext/UI/ConnectionInbound,Text,,Inbound,In entrata,Eingehend,Entrant,Entrant
CommNext/UI/ConnectionOutbound,Text,,Outbound,In uscita,Ausgehend,Sortant,Saliente,出站,발신,Wychodzące,Исходящий,出站,Saída,出站
CommNext/UI/In,Text,In (direction),In,In,In,In,In,入站,입방향,Przychodzące,Входящий,入站,Entrada,入站
CommNext/UI/Out,Text,Out (direction),Out,Out,Out,Out,Out,出站,발신,Wychodzące,Исходящий,出站,Saída,出站
CommNext/UI/FilterActive,Text,Filter only active (in use) connections,Active,Attive,Aktiv,Actif,Activo,活动,활성,Aktywne,Активные,活动,Ativo,活动
CommNext/UI/FilterConnected,Text,Filter only connected vessels,Connected,Connesse,Verbunden,Connecté,Conectado,已连接,연결된,Podłączone,Подключенные,已连接,Conectado,已连接
CommNext/UI/FilterInRange,Text,Filter only in range vessels,In Range,Nel Raggio,Im Bereich,À Portée,En Rango,在范围内,범위 내,Zasięg,В радиусе,在范围内,Alcance,在范围内
CommNext/UI/FilterAll,Text,Filter all vessels,All,Tutti,Alle,Tous,Todos,全部,모두,Wszystkie,Все,全部,Todos,全部
Expand All @@ -33,4 +35,16 @@ CommNext/UI/VesselReportTooltip,Text,,Show vessel report,Mostra report del veico
CommNext/UI/FilterLabel,Text,Tooltip for filter dropdown,Filter,Filtra,Filter,Filtre,Filtrar,过滤,필터,Filter,Filtr,过滤,Filtro,过滤
CommNext/UI/SortLabel,Text,Tooltip for sort dropdown,Sort,Ordina,Sortieren,Trier,Ordenar,排序,정렬,Sortuj,Сортировать,排序,Ordenar,排序
CommNext/UI/NoPower,Text,Relay has no power,No power,Nessuna alimentazione,Keine Stromversorgung,Aucune alimentation,Sin alimentación,无电源,전원 없음,Brak zasilania,Нет питания,无电源,Sem energia,无电源
CommNext/UI/RangeLabel,Text,Max Range for current vessel,Range {0},Raggio {0},Reichweite {0},Portée {0},Alcance {0},范围 {0},범위 {0},Zasięg {0},Дальность {0},范围 {0},Alcance {0},范围 {0}
CommNext/UI/RangeLabel,Text,Max Range for current vessel,Range {0},Raggio {0},Reichweite {0},Portée {0},Alcance {0},范围 {0},범위 {0},Zasięg {0},Дальность {0},范围 {0},Alcance {0},范围 {0}
CommNext/UI/EnableRelay,Text,Enable relay,Enable relay,Abilita ripetitore,Relais aktivieren,Activer le relais,Activar relé,启用中继,릴레이 활성화,Włącz przekaźnik,Включить реле,启用中继,Ativar relé,启用中继
CommNext/UI/OmniBand,Text,Omni-band,Omni-band,Omni-Band,Omni-bande,Omni-banda,全频段,옴니밴드,Omni-band,Омни-диапазон,全频段,Omni-banda,全频段
CommNext/UI/NoneBand,Text,None,None,Nessuna,Keine,Aucune,Ninguna,无,없음,Brak,Нет,无,Nenhum,无
CommNext/UI/BandMissingRange,Text,This band is outside range and no other is available,Band {0} out of range,Banda {0} fuori portata,Band {0} außerhalb der Reichweite,Bande {0} hors de portée,Banda {0} fuera de rango,{0}频段超出范围,{0} 대역이 범위를 벗어남,Band {0} poza zasięgiem,Диапазон {0} вне зоны действия,{0}频段超出范围,Banda {0} fora de alcance,{0}频段超出范围
CommNext/UI/NoAvailableBand,Text,No band matching between source and target vessels,No available band,Banda non disponibile,Keine passende Bandbreite,La bande n'est pas disponible,No hay banda disponible,无可用频段,사용 가능한 대역 없음,Brak pasującej przepustki,Нет подходящего диапазона,无可用频段,Nenhuma banda disponível,无可用频段
PartModules/NextModulator/Kind,Text,,Modulation kind,Tipo di modulazione,Modulationsart,Type de modulation,Tipo de modulación,调制类型,변조 종류,Rodzaj modulacji,Вид модуляции,调制类型,Tipo de modulação,调制类型
PartModules/NextModulator/KindMonoBand,Text,,Mono-band,Mono-banda,Mono-Band,Mono-bande,Mono-banda,单频段,단일 대역,Jednozakresowy,Моно-диапазон,单频段,Mono-banda,单频段
PartModules/NextModulator/KindDualBand,Text,,Dual-band,Dual-banda,Dual-Band,Dual-bande,Dual-banda,双频段,듀얼 대역,Dwuzakresowy,Двойной диапазон,双频段,Dual-banda,双频段
PartModules/NextModulator/KindOmniBand,Text,,Omni-band,Omni-banda,Omni-Band,Omni-bande,Omni-banda,全频段,옴니밴드,Omni-band,Омни-диапазон,全频段,Omni-banda,全频段
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,在地图视图中切换此频段标尺
19 changes: 19 additions & 0 deletions plugin_template/patches/configs/antennas.patch
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,50 @@
// We patch stock antennas ranges.

// First we want to reset all pods
@stage "setup-relays"
:parts .Module_DataTransmitter .Module_CommandPod {
@include override-range($commnext-RANGE-POD)
}

// Specific antennas
@stage "setup-relays"
:parts #antenna_0v_16 {
@include override-range($commnext-RANGE-C16)
@include add-next-modulator("MonoBand")
}

@stage "setup-relays"
:parts #antenna_0v_16s {
@include override-range($commnext-RANGE-C16S)
@include add-next-modulator("MonoBand")
}

@stage "setup-relays"
:parts #antenna_1v_dish_hg5 {
@include override-range($commnext-RANGE-HG5)
@include add-next-modulator("DualBand")
}

@stage "setup-relays"
:parts #antenna_1v_dish_hg55s {
@include override-range($commnext-RANGE-HG55S)
@include add-next-modulator("DualBand")
}

@stage "setup-relays"
:parts #antenna_1v_parabolic_dts-m1 {
@include override-range($commnext-RANGE-DTS-M1)
@include add-next-modulator("DualBand")
}

@stage "setup-relays"
:parts #antenna_1v_dish_88-88 {
@include override-range($commnext-RANGE-C88)
@include add-next-modulator("OmniBand")
}

// Add modulator to every module missing them
@stage "setup-relays"
:parts .Module_DataTransmitter ~.Module_NextModulator {
@include add-next-modulator("MonoBand")
}
33 changes: 9 additions & 24 deletions plugin_template/patches/configs/relay_module.patch
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,23 @@

// Setup relays

@stage "CommNext:SetupRelays"
@stage "setup-relays"
:parts #antenna_0v_dish_ra-2 {
@include override-range($commnext-RANGE-RA2)

+Module_NextRelay {
+Data_NextRelay {

}
}
@include add-next-relay-visuals()
@include add-next-relay()
@include add-next-modulator("OmniBand")
}

@stage "CommNext:SetupRelays"
@stage "setup-relays"
:parts #antenna_0v_dish_ra-15 {
@include override-range($commnext-RANGE-RA15)

+Module_NextRelay {
+Data_NextRelay {

}
}
@include add-next-relay-visuals()
@include add-next-relay()
@include add-next-modulator("OmniBand")
}

@stage "CommNext:SetupRelays"
@stage "setup-relays"
:parts #antenna_1v_dish_ra-100 {
@include override-range($commnext-RANGE-RA100)

+Module_NextRelay {
+Data_NextRelay {

}
}
@include add-next-relay-visuals()
@include add-next-relay()
@include add-next-modulator("OmniBand")
}
24 changes: 23 additions & 1 deletion plugin_template/patches/libraries/_relay_mixins.patch
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
}
}

@mixin add-next-relay-visuals() {
@mixin add-next-relay() {
+Module_NextRelay {
+Data_NextRelay {
}
}

PAMModuleVisualsOverride +: [
{
PartComponentModuleName: "PartComponentModule_NextRelay",
Expand All @@ -16,3 +21,20 @@
}
];
}

@mixin add-next-modulator($kind) {
+Module_NextModulator {
+Data_NextModulator {
ModulatorKind: $kind;
}
}

PAMModuleVisualsOverride +: [
{
PartComponentModuleName: "PartComponentModule_NextModulator",
ModuleDisplayName: "PartModules/NextModulator/Name",
ShowHeader: true,
ShowFooter: true
}
];
}
2 changes: 1 addition & 1 deletion plugin_template/patches/stages.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// We want to run our relay setup before the orbital survey, otherwise the small
// relay OAB part info will be moved to second page of the Part Details window
@define-stage "CommNext:SetupRelays":
@define-stage "setup-relays":
{
@before "falki.orbital_survey";
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
using UnityEngine;
using UnityEngine.UIElements;

namespace CommNext.Unity.Runtime.Controls
{
public class BandIcon : VisualElement
{
public new class UxmlTraits : VisualElement.UxmlTraits
{
private readonly UxmlColorAttributeDescription _color = new()
{
name = "color"
};

private readonly UxmlStringAttributeDescription _code = new()
{
name = "code"
};

public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc)
{
base.Init(ve, bag, cc);
((BandIcon)ve).color = _color.GetValueFromBag(bag, cc);
((BandIcon)ve).code = _code.GetValueFromBag(bag, cc);
}
}

// Define a factory class to expose this control to UXML.
public new class UxmlFactory : UxmlFactory<BandIcon, UxmlTraits> { }

private const string USSClassName = "band__icon";
private const string USSCodeClassName = "band__code";

public Color color
{
get => _codeLabel.style.color.value;
set => _codeLabel.style.color = value;
}

public string code
{
get => _codeLabel.text;
set => _codeLabel.text = value;
}

public void SetBand(string bandCode, Color bandColor)
{
code = bandCode;
color = bandColor;
}

private readonly Label _codeLabel;

public BandIcon()
{
AddToClassList(USSClassName);
_codeLabel = new Label();
_codeLabel.AddToClassList(USSCodeClassName);
Add(_codeLabel);
}
}
}

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

115 changes: 115 additions & 0 deletions src/CommNext.Unity/CommNext.Unity/Assets/UI/CommNextStyles.uss
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
--text-color: rgb(192, 199, 213);
--inbound: rgb(142, 167, 255);
--outbound: rgb(181, 88, 220);

--band-k: rgb(112, 100, 255);
--band-ka: rgb(214, 38, 235);
--band-v: rgb(43, 217, 148);
}

#close-button {
Expand Down Expand Up @@ -178,6 +182,19 @@
padding-right: 6px;
padding-top: 6px;
padding-bottom: 6px;
transition: background-color 0.18s;
}

.row__container:hover {
background-color: rgb(67, 72, 155);
}

.row__container .row__button--on-hover {
display: none;
}

.row__container:hover .row__button--on-hover {
display: flex;
}

.icon__small {
Expand Down Expand Up @@ -451,3 +468,101 @@
font-size: 10px;
color: rgb(255, 255, 255);
}

.band-row {
flex-grow: 0;
background-color: rgb(34, 38, 46);
flex-direction: row;
align-items: center;
justify-content: flex-start;
align-self: stretch;
padding-left: 2px;
padding-right: 2px;
padding-top: 2px;
padding-bottom: 2px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}

.unity-toggle.pixel-toggle #unity-checkmark {
background-image: url('project://database/Assets/Images/TooltipBg.png?fileID=2800000&guid=5dc9e7533cd57af4291c5817bb6d671f&type=3#TooltipBg');
-unity-background-image-tint-color: rgba(0, 0, 0, 0);
-unity-slice-left: 4;
-unity-slice-top: 4;
-unity-slice-right: 4;
-unity-slice-bottom: 4;
-unity-slice-scale: 0.5px;
width: 10px;
height: 10px;
border-width: 0;
background-color: rgba(0, 0, 0, 0);
align-items: center;
align-self: center;
justify-content: center;
}

.unity-toggle.pixel-toggle:checked #unity-checkmark {
-unity-background-image-tint-color: var(--led-green);
}

.unity-toggle.pixel-toggle .unity-toggle__input {
width: 16px;
height: 16px;
background-image: url('project://database/Assets/Images/TooltipBorder.png?fileID=21300000&guid=6d23dffd7f2687d468f590413704d40b&type=3#TooltipBorder');
-unity-background-image-tint-color: var(--lightgray-2);
-unity-slice-left: 12;
-unity-slice-top: 12;
-unity-slice-right: 12;
-unity-slice-bottom: 12;
-unity-slice-scale: 0.5px;
border-width: 0;
align-items: stretch;
justify-content: center;
}

.unity-toggle.pixel-toggle:hover .unity-toggle__input {
-unity-background-image-tint-color: white;
}

.band__icon--old {
flex-grow: 0;
background-color: rgba(0, 0, 0, 0);
flex-shrink: 0;
width: 8px;
height: 8px;
background-image: url('project://database/Assets/Images/TooltipBg.png?fileID=21300000&guid=5dc9e7533cd57af4291c5817bb6d671f&type=3#TooltipBg');
margin-right: 6px;
}

.band__code {
font-size: 10px;
padding: 0;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
-unity-text-align: middle-center;
}

.band__icon {
flex-grow: 1;
background-color: rgb(36, 41, 51);
border-radius: 3px;
width: 16px;
height: 16px;

/*background-image: url('project://database/Assets/Images/TooltipBg.png?fileID=21300000&guid=5dc9e7533cd57af4291c5817bb6d671f&type=3#TooltipBg');*/
/*-unity-background-image-tint-color: rgb(36, 41, 51);*/
padding-left: 2px;
padding-right: 2px;
padding-top: 2px;
padding-bottom: 2px;
margin-top: 4px;
}

.band__icon--darker {
background-color: rgb(20, 24, 31);
}
Loading
Loading