diff --git a/scenes/эмс-тг/эмс-тг.gd b/scenes/эмс-тг/эмс-тг.gd index 152038bf..8243b830 100644 --- a/scenes/эмс-тг/эмс-тг.gd +++ b/scenes/эмс-тг/эмс-тг.gd @@ -1,11 +1,19 @@ @tool extends Panel -#region Определяемое использованием +#region Определяемое при использовании ## Индекс -> Имя устройства. Нужен для предсказуемого ## порядка отображения: верх->вниз или лево->право. ## Имя устройства должно быть взято из settings.gd @export var index_to_unit_names: Array[StringName] +## Минимальная частота, МГЦ +@export var freq_min: float +## Максимальная частота, МГЦ +@export var freq_max: float +## Цвет диапазона передатчика на шкале +@export var color_tx: Color +## Цвет диапазона приёмника на шкале +@export var color_rx: Color #endregion #region Загружаемые ресурсы @@ -34,7 +42,7 @@ var yems_data_cmd: Dictionary[StringName, Dictionary] ## Команды var cnames_table: Dictionary[StringName, Dictionary] ## Порядок следования кластеров на шкале. ## {имя_устройства: { индекс_на_шкале } } -var pnames_scale: Dictionary[StringName, Dictionary] +var pnames_scale: Dictionary[StringName, int] #endregion func _ready() -> void: @@ -46,9 +54,12 @@ func _ready() -> void: cnames_table[nm] = {} var btns_scales = get_tree().get_nodes_in_group('кнопки-шкалы') for node in btns_scales: - var nm = node.get_meta('unit_name') - name_to_scale[nm] = node + var nm: = node.get_meta('unit_name') as StringName node.connect('pressed', map_yems_data_to_table.bind(nm)) + var claster_scales = get_tree().get_nodes_in_group('шкалы-кластеров') + for node in claster_scales: + var nm: = node.get_meta('unit_name') as StringName + name_to_scale[nm] = node var header_row: = [] for cell_scn in table_headers: header_row.append(load(cell_scn)) @@ -76,6 +87,7 @@ func _ready() -> void: func on_data_received(data: Dictionary, nm: StringName): yems_data_info[nm].merge(data, true) map_yems_data_to_table(nm) + map_yems_data_to_scale(nm) ## [param nm] - имя устройства @@ -107,8 +119,16 @@ func map_yems_data_to_table(nm: StringName): func map_yems_data_to_scale(nm: StringName): var unit_data = yems_data_info.get(nm) if not unit_data: return # Данных ещё нет - var ctable: GDTable = $'таблица/сетка' - var indexes: = cnames_table[nm] # Идексы строк таблицы для кластеров заданного устройства + var claster_scale: = name_to_scale[nm] as GridContainer # Обойти все кластеры устройства for cls in unit_data.mcls: - pass + var c = remap(cls.cfb, freq_min, freq_max, 0.0, 1.0) + var w = remap(cls.wfb, freq_min, freq_max, 0.0, 1.0) * 0.5 + var l = c - w + var h = c + w + if cls.rxe: + var scale_rx: = claster_scale.get_node('panel_rx') + scale_rx.set_range(cls.cname, l, h, color_rx) + if cls.txe: + var scale_tx: = claster_scale.get_node('panel_tx') + scale_tx.set_range(cls.cname, l, h, color_tx) diff --git a/scenes/эмс-тг/эмс-тг.tscn b/scenes/эмс-тг/эмс-тг.tscn index 718e3e2d..8dab9c07 100644 --- a/scenes/эмс-тг/эмс-тг.tscn +++ b/scenes/эмс-тг/эмс-тг.tscn @@ -40,6 +40,10 @@ offset_top = 35.0 offset_bottom = 35.0 script = ExtResource("1_b7tfl") index_to_unit_names = Array[StringName]([&"эмс-ор63", &"эмс-454", &"эмс-го", &"эмс-рлс1", &"эмс-рлс2", &"эмс-ннвс", &"эмс-изделие7", &"эмс-изделие8"]) +freq_min = 300.0 +freq_max = 6000.0 +color_tx = Color(0.898367, 0.460547, 0.239949, 1) +color_rx = Color(0.498039, 0.498039, 1, 1) matrix_conf = Array[Texture]([ExtResource("2_s28jr"), ExtResource("3_its7t")]) table_headers = Array[String](["uid://ch14g46swx74h", "uid://ch14g46swx74h", "uid://ch14g46swx74h", "uid://ch14g46swx74h", "uid://ch14g46swx74h", "uid://ch14g46swx74h", "uid://cymcld4mjmlhj", "uid://cymcld4mjmlhj"]) table_cells = Array[String](["uid://dwphmxstaxn4v", "uid://dwphmxstaxn4v", "uid://dwphmxstaxn4v", "uid://dwphmxstaxn4v", "uid://dwphmxstaxn4v", "uid://dwphmxstaxn4v", "uid://cixwl6xi22buo", "uid://cixwl6xi22buo"]) @@ -96,10 +100,11 @@ button_group = SubResource("ButtonGroup_vwsbs") text = "ОР-63" metadata/unit_name = &"эмс-ор63" -[node name="sub0" type="GridContainer" parent="шкала"] +[node name="sub0" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +metadata/unit_name = &"эмс-ор63" [node name="panel_rx" parent="шкала/sub0" instance=ExtResource("5_6hay3")] self_modulate = Color(0.830335, 0.830335, 0.830335, 1) @@ -124,7 +129,7 @@ button_group = SubResource("ButtonGroup_vwsbs") text = "454" metadata/unit_name = &"эмс-454" -[node name="sub1" type="GridContainer" parent="шкала"] +[node name="sub1" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -151,11 +156,11 @@ button_group = SubResource("ButtonGroup_vwsbs") text = "ГО" metadata/unit_name = &"эмс-го" -[node name="sub2" type="GridContainer" parent="шкала"] +[node name="sub2" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -metadata/unit_name = &"" +metadata/unit_name = &"эмс-го" [node name="panel_rx" parent="шкала/sub2" instance=ExtResource("5_6hay3")] self_modulate = Color(0.830335, 0.830335, 0.830335, 1) @@ -180,10 +185,11 @@ button_group = SubResource("ButtonGroup_vwsbs") text = "РЛС1" metadata/unit_name = &"эмс-рлс1" -[node name="sub3" type="GridContainer" parent="шкала"] +[node name="sub3" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +metadata/unit_name = &"эмс-рлс1" [node name="panel_rx" parent="шкала/sub3" instance=ExtResource("5_6hay3")] layout_mode = 2 @@ -206,10 +212,11 @@ button_group = SubResource("ButtonGroup_vwsbs") text = "РЛС2" metadata/unit_name = &"эмс-рлс2" -[node name="sub4" type="GridContainer" parent="шкала"] +[node name="sub4" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +metadata/unit_name = &"эмс-рлс2" [node name="panel_rx" parent="шкала/sub4" instance=ExtResource("5_6hay3")] self_modulate = Color(0.830335, 0.830335, 0.830335, 1) @@ -232,12 +239,13 @@ size_flags_vertical = 7 toggle_mode = true button_group = SubResource("ButtonGroup_vwsbs") text = "ННВС" -metadata/unit_name = &"" +metadata/unit_name = &"эмс-ннвс" -[node name="sub5" type="GridContainer" parent="шкала"] +[node name="sub5" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +metadata/unit_name = &"эмс-ннвс" [node name="panel_rx" parent="шкала/sub5" instance=ExtResource("5_6hay3")] layout_mode = 2 @@ -260,10 +268,11 @@ button_group = SubResource("ButtonGroup_vwsbs") text = "Изделие 7" metadata/unit_name = &"изделие7" -[node name="sub6" type="GridContainer" parent="шкала"] +[node name="sub6" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +metadata/unit_name = &"эмс-изделие7" [node name="panel_rx" parent="шкала/sub6" instance=ExtResource("5_6hay3")] self_modulate = Color(0.830335, 0.830335, 0.830335, 1) @@ -286,12 +295,13 @@ size_flags_vertical = 7 toggle_mode = true button_group = SubResource("ButtonGroup_vwsbs") text = "Изделие 8" -metadata/unit_name = &"изделие8" +metadata/unit_name = &"эмс-изделие8" -[node name="sub7" type="GridContainer" parent="шкала"] +[node name="sub7" type="GridContainer" parent="шкала" groups=["шкалы-кластеров"]] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +metadata/unit_name = &"эмс-изделие8" [node name="panel_rx" parent="шкала/sub7" instance=ExtResource("5_6hay3")] layout_mode = 2