Доработка. WIP Отображение кластеров на шкале

This commit is contained in:
sasha80
2026-03-20 14:58:41 +03:00
parent 59da91d98c
commit 0fc98c5e98
2 changed files with 48 additions and 18 deletions

View File

@@ -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)

View File

@@ -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