Merge remote-tracking branch 'origin/master' into master-prd

This commit is contained in:
Maxim
2025-07-30 01:12:37 +03:00
41 changed files with 692 additions and 383 deletions

3
.gitignore vendored
View File

@@ -33,3 +33,6 @@ scripts/commit.gd
# python специфичное
modbus/pymodbus/__pycache__
modbus/serial/__pycache__
/scenes/pribor-prd-k/kasseta-fs-kd.tscn.bak
/scenes/pribor-prd-k/pribor-prd-k.tscn.bak
/scenes/pribor-prd-n/kasseta-fs-nd.tscn.bak

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

View File

@@ -33,8 +33,8 @@ config/mod_bus_driver_port="48000"
config/mod_bus_driver_address="localhost"
interfer/resend_timeout=1000.0
config/external_cu=false
config/unit_afsp_left_bort="http://127.0.0.1:8080/reports/left_SelfTestReport.json"
config/unit_afsp_right_bort="http://127.0.0.1:8080/reports/right_SelfTestReport.json"
config/unit_afsp_left_bort="http://127.0.0.1:8000/selftest_left.json"
config/unit_afsp_right_bort="http://127.0.0.1:8000/selftest_right.json"
config/unit_rr_request_period=5.0
config/kems_files_path="user://kems/"
config/emsg_files_path="user://emsg/"
@@ -84,7 +84,7 @@ gdscript/warnings/integer_division=0
window/size/viewport_width=1600
window/size/viewport_height=1200
window/size/mode=3
window/size/window_height_override=768
window/subwindows/embed_subwindows=false
window/stretch/mode="canvas_items"
window/dpi/allow_hidpi=false

View File

@@ -13,7 +13,7 @@ horizontal_alignment = 1
vertical_alignment = 1
[node name="count_danger" type="Label" parent="."]
modulate = Color(0.8, 0.533333, 0.27451, 1)
modulate = Color(0.890196, 0.486275, 0.196078, 1)
layout_mode = 0
offset_right = 92.0
offset_bottom = 63.0

View File

@@ -20,6 +20,7 @@ offset_right = 580.0
offset_bottom = 1185.0
script = SubResource("GDScript_y4aoq")
metadata/DeviceName = &""
metadata/_edit_vertical_guides_ = [-1620.0]
[node name="konverter" type="NinePatchRect" parent="."]
layout_mode = 0
@@ -71,10 +72,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 1"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[0].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[0]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[0]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[0]['TestPassed']", "SelfTest[2].SystemList[1].DevList[0]['TestPassed']"]
metadata/value0 = "SelfTest[0].SystemList[1].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[0].SystemList[1].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DevList[0]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[0]['TestPassed']"]
[node name="kanal2" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -96,10 +97,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 2"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[1].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[1]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[1]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[1]['TestPassed']", "SelfTest[2].SystemList[1].DevList[1]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[1]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[1]['TestPassed']"]
[node name="kanal3" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -121,10 +122,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 3"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[2].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[2]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[2]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[2]['TestPassed']", "SelfTest[2].SystemList[1].DevList[2]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[2]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[2]['TestPassed']"]
[node name="kanal4" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -146,10 +147,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 4"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[3].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[3]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[3]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[3]['TestPassed']", "SelfTest[2].SystemList[1].DevList[3]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[3]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[3]['TestPassed']"]
[node name="kanal5" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -171,10 +172,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 5"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[4].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[4]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[4]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[4]['TestPassed']", "SelfTest[2].SystemList[1].DevList[4]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[4]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[4]['TestPassed']"]
[node name="kanal6" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -196,10 +197,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 6"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[5].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[5]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[5]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[5]['TestPassed']", "SelfTest[2].SystemList[1].DevList[5]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[5]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[5]['TestPassed']"]
[node name="kanal7" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -221,10 +222,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 7"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[6].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[6]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[6]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[6]['TestPassed']", "SelfTest[2].SystemList[1].DevList[6]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[6]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[6]['TestPassed']"]
[node name="kanal8" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -246,10 +247,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 8"
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[7].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[7]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DeviceList[7]['TestPassed']", "SelfTest[1].SystemList[1].DeviceList[7]['TestPassed']", "SelfTest[2].SystemList[1].DevList[7]['TestPassed']"]
metadata/value2 = "SelfTest[0].SystemList[1].DevList[7]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[1].DevList[7]['TestPassed']"]
[node name="antenna1" type="NinePatchRect" parent="."]
layout_mode = 0
@@ -292,9 +293,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 1"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[0].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[0]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[0].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[0]['TestPassed']"]
[node name="yelement2" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -307,9 +308,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 2"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[1].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[1].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[1]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[1].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[1].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[1]['TestPassed']"]
[node name="yelement3" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -322,9 +323,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 3"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[2].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[2].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[2]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[2].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[2].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[2]['TestPassed']"]
[node name="yelement4" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -337,9 +338,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 4"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[3].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[3].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[3]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[3].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[3].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[3]['TestPassed']"]
[node name="yelement5" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -352,9 +353,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 5"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[4].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[4].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[4]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[4].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[4].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[4]['TestPassed']"]
[node name="yelement6" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -367,9 +368,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 6"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[5].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[5].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[5]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[5].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[5].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[5]['TestPassed']"]
[node name="yelement7" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -382,9 +383,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 7"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[6].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[6].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[6]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[6].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[6].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[6]['TestPassed']"]
[node name="yelement8" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -397,9 +398,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 8"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[7].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[7].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[7]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[7].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[7].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[7]['TestPassed']"]
[node name="yelement9" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -412,9 +413,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 9"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[8].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[8].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[8]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[8].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[8].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[8]['TestPassed']"]
[node name="yelement10" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -427,9 +428,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 10"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[9].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[9].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[9]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[9].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[9].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[9]['TestPassed']"]
[node name="yelement11" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -442,9 +443,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 11"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[10].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[10].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[10]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[10].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[10].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[10]['TestPassed']"]
[node name="yelement12" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -457,9 +458,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 12"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[11].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[11].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[11]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[11].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[11].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[11]['TestPassed']"]
[node name="yelement13" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -472,9 +473,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 13"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[12].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[12].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[12]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[12].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[12].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[12]['TestPassed']"]
[node name="yelement14" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -487,9 +488,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 14"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[13].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[13].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[13]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[13].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[13].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[13]['TestPassed']"]
[node name="yelement15" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -502,9 +503,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 15"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[14].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[14].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[14]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[14].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[14].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[14]['TestPassed']"]
[node name="yelement16" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -517,9 +518,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 16"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[15].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[15].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[15]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[0].DevList[15].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[0].DevList[15].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[0].DevList[15]['TestPassed']"]
[node name="antenna2" type="NinePatchRect" parent="."]
layout_mode = 0
@@ -562,9 +563,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 1"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[0].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[0]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[0].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[0]['TestPassed']"]
[node name="yelement2" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -577,9 +578,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 2"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[1].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[1]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[1].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[1]['TestPassed']"]
[node name="yelement3" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -592,9 +593,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 3"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[2].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[2]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[2].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[2]['TestPassed']"]
[node name="yelement4" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -607,9 +608,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 4"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[3].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[3]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[3].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[3]['TestPassed']"]
[node name="yelement5" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -622,9 +623,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 5"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[4].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[4]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[4].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[4]['TestPassed']"]
[node name="yelement6" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -637,9 +638,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 6"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[5].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[5]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[5].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[5]['TestPassed']"]
[node name="yelement7" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -652,9 +653,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 7"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[6].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[6]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[6].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[6]['TestPassed']"]
[node name="yelement8" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -667,9 +668,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 8"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[7].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[7]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[7].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[7]['TestPassed']"]
[node name="yelement9" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -682,9 +683,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 9"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[8].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[8].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[8]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[8].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[8].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[8]['TestPassed']"]
[node name="yelement10" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -697,9 +698,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 10"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[9].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[9].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[9]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[9].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[9].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[9]['TestPassed']"]
[node name="yelement11" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -712,9 +713,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 11"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[10].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[10].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[10]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[10].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[10].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[10]['TestPassed']"]
[node name="yelement12" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -727,9 +728,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 12"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[11].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[11].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[11]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[11].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[11].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[11]['TestPassed']"]
[node name="yelement13" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -742,9 +743,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 13"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[12].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[12].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[12]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[12].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[12].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[12]['TestPassed']"]
[node name="yelement14" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -757,9 +758,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 14"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[13].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[13].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[13]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[13].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[13].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[13]['TestPassed']"]
[node name="yelement15" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -772,9 +773,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 15"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[14].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[14].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[14]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[14].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[14].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[14]['TestPassed']"]
[node name="yelement16" parent="antenna2/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -787,9 +788,9 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 16"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[1].DevList[15].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[1].DevList[15].TestedParamList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[1].DevList[15]['TestPassed']"]
metadata/value0 = "SelfTest[1].SystemList[0].SystemList[1].DevList[15].TestedParamList[1]['CurrentValue']"
metadata/value1 = "SelfTest[1].SystemList[0].SystemList[1].DevList[15].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[1].SystemList[0].SystemList[1].DevList[15]['TestPassed']"]
[node name="adc" parent="." instance=ExtResource("4_mtf2n")]
layout_mode = 0
@@ -826,9 +827,9 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Генератор"
metadata/value0 = "SelfTest[1].SystemList[2].DeviceList[0].TestedParamList[0]['CurrentValue']"
metadata/value0 = "SelfTest[1].SystemList[2].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].SystemList[2].DevList[0].TestedParamList[0]['CurrentValue']"
metadata/state = ["SelfTest[0].SystemList[2].DeviceList[0]['TestPassed']"]
metadata/state = ["SelfTest[0].SystemList[2].DevList[0]['TestPassed']"]
[node name="rpu" parent="." instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -847,9 +848,9 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Приёмник 20...1000 МГц"
metadata/value0 = "SelfTest[1].SystemList[0].DeviceList[0]['TestPassed']"
metadata/value0 = "SelfTest[1].SystemList[0].DevList[0]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[0].DevList[0]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[0].DeviceList[0]['TestPassed']"]
metadata/state = ["SelfTest[0].SystemList[0].DevList[3]['TestPassed']"]
[connection signal="pressed" from="konverter/grid/kanal1" to="." method="_on_item_pressed"]
[connection signal="pressed" from="konverter/grid/kanal2" to="." method="_on_item_pressed"]

View File

@@ -0,0 +1,40 @@
extends Node
static func map_value_to_item(data, item, value_name: StringName):
var meta = item.get_meta(value_name, '')
if meta == '':
return
if not (meta is String):
return
var paths: = Array()
tools.map_solid_to_array(meta, paths)
var ret_val: = [null, false, 0]
var paths_copy = paths.duplicate(true)
tools.get_value_by_path(data, paths, ret_val)
if ret_val[1]:
item.set(value_name, ret_val[0])
else:
push_error('не найден путь %s (%s) для $%s.%s (%s)' % [paths_copy, ret_val[2], item.name, value_name, item.tooltip_text])
static func map_error_codes_to_item(data, item, value_name: StringName, value_init: int):
var metas = item.get_meta(value_name, '')
if not (metas is Array):
return
var paths: = Array()
var values: = Array()
for meta in metas:
tools.map_solid_to_array(meta, paths)
var ret_val: = [null, false, 0]
var paths_copy = paths.duplicate(true)
tools.get_value_by_path(data, paths, ret_val)
if ret_val[1]:
values.append(ret_val[0])
else:
push_error('не найден путь %s(%s) для $%s.%s (%s)' % [paths_copy, ret_val[2], item.name, value_name, item.tooltip_text])
if values.size() == metas.size():
var test_res = 1 if values.count(true) == values.size() else 2
item.set(value_name, test_res)
else:
item.set(value_name, value_init)

View File

@@ -0,0 +1 @@
uid://bcjneo1tbiygo

View File

@@ -25,7 +25,6 @@ metadata/DeviceName = &"Устройство РР левого борта"
script = ExtResource("2_4vyhj")
[node name="timer" type="Timer" parent="request"]
wait_time = 4.168
autostart = true
script = SubResource("GDScript_yhnwg")
@@ -36,6 +35,6 @@ offset_bottom = 1216.78
metadata/DeviceName = &"Устройство РР левого борта"
[connection signal="child_entered_tree" from="request" to="request" method="_on_child_entered_tree"]
[connection signal="request_completed" from="request" to="." method="_on_request_rtr_request_completed"]
[connection signal="request_completed" from="request" to="." method="_on_request_completed"]
[connection signal="timeout" from="request/timer" to="request" method="_on_request_timer"]
[connection signal="pressed" from="bort" to="." method="_on_item_pressed"]

View File

@@ -25,7 +25,6 @@ metadata/DeviceName = &"Устройство РР правого борта"
script = ExtResource("2_miwrd")
[node name="timer" type="Timer" parent="request"]
wait_time = 4.168
autostart = true
script = SubResource("GDScript_yhnwg")
@@ -38,6 +37,6 @@ offset_bottom = 1130.0
metadata/DeviceName = &"Устройство РР правого борта"
[connection signal="child_entered_tree" from="request" to="request" method="_on_child_entered_tree"]
[connection signal="request_completed" from="request" to="." method="_on_request_rtr_request_completed"]
[connection signal="request_completed" from="request" to="." method="_on_request_completed"]
[connection signal="timeout" from="request/timer" to="request" method="_on_request_timer"]
[connection signal="pressed" from="bort" to="." method="_on_item_pressed"]

View File

@@ -3,36 +3,9 @@ class_name pribor_afsp extends 'res://scenes/контроль/прибор.gd'
@export var prefix_path: String = 'DeviceDescripton[DeviceName]'
static var json_conv: JSON = JSON.new()
static var node_maper = load('res://scenes/pribor-afsp/node_maper.gd')
## Преобразует путь в виде целой строки в массив отдельных элементов пути.[br]
## [param solid] - Входная строка содержащая путь, которая имеет следующий примерный вид:[br]
## [code]SelfTest[1].DevList[2]['CurrentValue'][/code][br]
## [param paths] - Массив содержащий отдельные элементы пути.[br]
## [param tokens] - Разделители используемые во входной строке для разделения элементов пути.[br]
func map_solid_to_array(solid: String, paths: Array, tokens: Array = ['[', ']', '.']) -> void:
paths.clear()
var i_chs = []
for sep in tokens:
var i = 0
while i != -1:
i = solid.find(sep, i + 1)
i_chs.append(i)
i_chs.pop_back()
i_chs.sort()
var i0 = 0
for i1 in i_chs:
var ss: = [String()]
tools.get_string_slice(solid, ss, i0, i1)
if ss[0].is_valid_int():
paths.append(ss[0].to_int())
else:
if ss[0]:
paths.append(ss[0])
i0 = i1 + 1
func _on_request_rtr_request_completed(result, _response_code, headers, body: PackedByteArray):
func _on_request_completed(result, _response_code, headers, body: PackedByteArray):
if result != 0:
var rs = $request.get_result_string(result)
log.error('\"%s\"' % rs)
@@ -50,7 +23,7 @@ func _on_request_rtr_request_completed(result, _response_code, headers, body: Pa
return
var pp = []
map_solid_to_array(prefix_path, pp)
tools.map_solid_to_array(prefix_path, pp)
var ret_val = [null, false, 0]
var pp_copy = pp.duplicate(true)
tools.get_value_by_path(json_conv.data, pp, ret_val)
@@ -65,68 +38,28 @@ func _on_request_rtr_request_completed(result, _response_code, headers, body: Pa
return
for child in $bort.get_node('konverter/grid').get_children():
map_value_to_item(json_conv.data, child, 'value0')
map_value_to_item(json_conv.data, child, 'value1')
map_value_to_item(json_conv.data, child, 'value2')
map_error_codes_to_item(json_conv.data, child, 'state', 0)
node_maper.map_value_to_item(json_conv.data, child, 'value0')
node_maper.map_value_to_item(json_conv.data, child, 'value1')
node_maper.map_value_to_item(json_conv.data, child, 'value2')
node_maper.map_error_codes_to_item(json_conv.data, child, 'state', 0)
for child in $bort.get_node('antenna1/grid').get_children():
map_value_to_item(json_conv.data, child, 'value0')
map_value_to_item(json_conv.data, child, 'value1')
map_error_codes_to_item(json_conv.data, child, 'state', 0)
node_maper.map_value_to_item(json_conv.data, child, 'value0')
node_maper.map_value_to_item(json_conv.data, child, 'value1')
node_maper.map_error_codes_to_item(json_conv.data, child, 'state', 0)
for child in $bort.get_node('antenna2/grid').get_children():
map_value_to_item(json_conv.data, child, 'value0')
map_value_to_item(json_conv.data, child, 'value1')
map_error_codes_to_item(json_conv.data, child, 'state', 0)
node_maper.map_value_to_item(json_conv.data, child, 'value0')
node_maper.map_value_to_item(json_conv.data, child, 'value1')
node_maper.map_error_codes_to_item(json_conv.data, child, 'state', 0)
for child in $bort.get_children():
map_value_to_item(json_conv.data, child, 'value0')
map_value_to_item(json_conv.data, child, 'value1')
map_error_codes_to_item(json_conv.data, child, 'state', 0)
func map_value_to_item(data, item, value_name: StringName):
var meta = item.get_meta(value_name, '')
if meta == '':
return
if not (meta is String):
return
var paths: = Array()
map_solid_to_array(meta, paths)
var ret_val: = [null, false, 0]
var paths_copy = paths.duplicate(true)
tools.get_value_by_path(data, paths, ret_val)
if ret_val[1]:
item.set(value_name, ret_val[0])
else:
push_error('не найден путь %s (%s) для $%s.%s (%s)' % [paths_copy, ret_val[2], item.name, value_name, item.tooltip_text])
func map_error_codes_to_item(data, item, value_name: StringName, value_init: int):
var metas = item.get_meta(value_name, '')
if not (metas is Array):
return
var paths: = Array()
var values: = Array()
for meta in metas:
map_solid_to_array(meta, paths)
var ret_val: = [null, false, 0]
var paths_copy = paths.duplicate(true)
tools.get_value_by_path(data, paths, ret_val)
if ret_val[1]:
values.append(ret_val[0])
else:
push_error('не найден путь %s(%s) для $%s.%s (%s)' % [paths_copy, ret_val[2], item.name, value_name, item.tooltip_text])
if values.size() == metas.size():
var test_res = 1 if values.count(true) == values.size() else 2
item.set(value_name, test_res)
else:
item.set(value_name, value_init)
node_maper.map_value_to_item(json_conv.data, child, 'value0')
node_maper.map_value_to_item(json_conv.data, child, 'value1')
node_maper.map_error_codes_to_item(json_conv.data, child, 'state', 0)
## Вызывается при клике мыши на элементе контроля.
## [param block_a] - Кликнутый элемент контроля.
func _on_item_pressed(block_a: Control):
var metas = block_a.get_meta_list()
print_debug(block_a)
for n in metas:
var v = block_a.get_meta(n)
print_debug('%s:%s' % [n, v])

View File

@@ -1,3 +1,47 @@
class_name pribor_rtr extends 'res://scenes/контроль/прибор.gd'
@export var prefix_path: String = ''
@export var prefix_path: String = 'DeviceDescripton[DeviceName]'
static var json_conv: JSON = JSON.new()
static var node_maper = load('res://scenes/pribor-afsp/node_maper.gd')
const bort_to_node_name = {
'Устройство РР левого борта': 'grid_bpo_a1',
'Устройство РР правого борта': 'grid_bpo_a2'}
func _on_request_completed(result, _response_code, headers, body: PackedByteArray):
if result != 0:
var rs = $request.get_result_string(result)
log.error('\"%s\"' % rs)
return
var json_str: String = body.get_string_from_utf8()
if not json_str:
push_error('не удаётся получить строку из utf8-данных (%s)' % headers)
return
var rc = json_conv.parse(json_str)
if rc != Error.OK:
var err = json_conv.get_error_message()
push_error('разбор json прерван - \"%s\" (%s)' % [err, headers])
return
var pp = []
tools.map_solid_to_array(prefix_path, pp)
var ret_val = [null, false, 0]
var pp_copy = pp.duplicate(true)
tools.get_value_by_path(json_conv.data, pp, ret_val)
if not ret_val[1]:
push_error('путь %s не найден (%s)' % [pp_copy, ret_val[2]])
return
if not bort_to_node_name.has(ret_val[0]):
return
var node_name = bort_to_node_name[ret_val[0]]
var bort_node = get_node(node_name)
for item in bort_node.get_children():
node_maper.map_value_to_item(json_conv.data, item, 'state')

View File

@@ -1,8 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://5uv1idl3lqea"]
[gd_scene load_steps=5 format=3 uid="uid://5uv1idl3lqea"]
[ext_resource type="Script" uid="uid://d0jwv5opi3mrk" path="res://scenes/pribor-afsp/pribor-rtr.gd" id="1_soedq"]
[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_pspup"]
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_gh777"]
[ext_resource type="Script" uid="uid://bux47vkw71w1t" path="res://scenes/pribor-afsp/request.gd" id="4_pspup"]
[node name="pribor_rtr" type="Control"]
layout_mode = 3
@@ -13,7 +14,7 @@ offset_right = 115.0
offset_bottom = 150.0
script = ExtResource("1_soedq")
[node name="yach_svyzi" parent="." instance=ExtResource("2_pspup")]
[node name="mod_pit_g1" parent="." instance=ExtResource("2_pspup")]
layout_mode = 2
offset_left = 40.0
offset_top = 535.0
@@ -42,53 +43,61 @@ offset_right = 498.0
offset_bottom = 320.0
columns = 4
[node name="a1_kanal1" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal1" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 1"
metadata/state = "SelfTest[0].SystemList[0].DevList[0]['TestPassed']"
[node name="a1_kanal2" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal2" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 2"
metadata/state = "SelfTest[0].SystemList[0].DevList[1]['TestPassed']"
[node name="a1_kanal3" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal3" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 3"
metadata/state = "SelfTest[0].SystemList[0].DevList[2]['TestPassed']"
[node name="a1_kanal4" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal4" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 4"
metadata/state = "SelfTest[0].SystemList[0].DevList[3]['TestPassed']"
[node name="a1_kanal5" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal5" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 5"
metadata/state = "SelfTest[0].SystemList[0].DevList[4]['TestPassed']"
[node name="a1_kanal6" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal6" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 6"
metadata/state = "SelfTest[0].SystemList[0].DevList[5]['TestPassed']"
[node name="a1_kanal7" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal7" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 7"
metadata/state = "SelfTest[0].SystemList[0].DevList[6]['TestPassed']"
[node name="a1_kanal8" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
[node name="kanal8" parent="grid_bpo_a1" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 8"
metadata/state = "SelfTest[0].SystemList[0].DevList[7]['TestPassed']"
[node name="yas_bpo_a1" parent="." instance=ExtResource("3_gh777")]
offset_left = 500.0
@@ -117,49 +126,49 @@ offset_right = 498.0
offset_bottom = 520.0
columns = 4
[node name="a1_kanal1" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal1" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 1"
[node name="a1_kanal2" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal2" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 2"
[node name="a1_kanal3" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal3" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 3"
[node name="a1_kanal4" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal4" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 4"
[node name="a1_kanal5" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal5" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 5"
[node name="a1_kanal6" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal6" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 6"
[node name="a1_kanal7" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal7" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 7"
[node name="a1_kanal8" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
[node name="kanal8" parent="grid_bpo_a2" instance=ExtResource("2_pspup")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
@@ -173,3 +182,12 @@ offset_bottom = 520.0
show_rname = false
self_size = Vector2i(50, 145)
fname = "Яч. связи"
[node name="request" type="HTTPRequest" parent="."]
script = ExtResource("4_pspup")
[node name="timer" type="Timer" parent="request"]
autostart = true
[connection signal="request_completed" from="request" to="." method="_on_request_completed"]
[connection signal="timeout" from="request/timer" to="request" method="_on_request_timer"]

View File

@@ -1,4 +1,4 @@
extends "res://scenes/контроль/прибор.gd"
extends 'res://scenes/контроль/прибор.gd'
enum STATE_VAL {
NONE = 0,
@@ -53,8 +53,8 @@ func Control_VK() -> void:
for element in out_pci:
out_pci_str += element
out_usb_str = out_usb_str.split("\n")
out_pci_str = out_pci_str.split("\n")
out_usb_str = out_usb_str.split('\n')
out_pci_str = out_pci_str.split('\n')
var i: int = 0
@@ -93,10 +93,10 @@ func status_uf() -> void:
var status_ip27:int = $ref_uf/ref_kassetav13/ref_A12_IP27B.state
if (status_yay == 1) and (status_bu == 1) and (status_kems == 1) \
and (status_ems0 == 1) and (status_ems1 == 1) and (status_ip5 == 1) and (status_ip27 == 1):
$lbl_header2.text = "Прибор исправен"
and (status_ems0 == 1) and (status_ems1 == 1) and (status_ip5 == 1) and (status_ip27 == 1):
$lbl_header2.text = 'Прибор исправен'
$lbl_header2.modulate = Color(0,1,0,1)
else:
$lbl_header2.text = "Прибор не исправен"
$lbl_header2.text = 'Прибор не исправен'
$lbl_header2.modulate = Color(1,0,0,1)
$lbl_header2.visible = true

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://dwxn2puh462nl"]
[ext_resource type="Script" uid="uid://pvhb2f04v00w" path="res://scenes/pribor-uf/pribor_uf.gd" id="1_7gtpa"]
[ext_resource type="Script" uid="uid://pvhb2f04v00w" path="res://scenes/pribor-uf/pribor-uf.gd" id="1_7gtpa"]
[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_ho0da"]
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_dp78y"]

View File

@@ -1 +1 @@
extends "res://scenes/контроль/прибор.gd"
extends 'res://scenes/контроль/прибор.gd'

View File

@@ -36,7 +36,7 @@ func on_line_changed_sch3(unit_sch3):
regs_input.clear()
switches_sync = false
$margin/vbox/grid1/lbl_freq.text = '<нет данных>'
$margin/vbox/grid1/lbl_freq.self_modulate = Color.CADET_BLUE
$margin/vbox/grid1/lbl_freq.self_modulate = Color(settings.C_BLUE)
$margin/vbox/grid1/state_freq.texture = textures[STATE_VAL.NONE]
$margin/vbox/grid/state.texture = textures[STATE_VAL.NONE]

View File

@@ -1,6 +1,6 @@
@tool
extends "res://scenes/контроль/элемент-я.gd"
extends 'res://scenes/контроль/элемент-я.gd'
func on_line_changed(unit0):

View File

@@ -35,15 +35,15 @@ theme_override_styles/tab_focus = SubResource("StyleBoxEmpty_41d34")
theme_override_styles/tab_disabled = SubResource("StyleBoxEmpty_cw2ss")
theme_override_styles/tabbar_background = SubResource("StyleBoxEmpty_nmdfd")
theme_override_styles/panel = SubResource("StyleBoxEmpty_vap7n")
current_tab = 0
current_tab = 1
script = ExtResource("1_fg0vd")
[node name="Работа" parent="tab_switch" instance=ExtResource("2_u7p16")]
visible = false
layout_mode = 2
metadata/_tab_index = 0
[node name="Контроль" parent="tab_switch" instance=ExtResource("3_txp0s")]
visible = false
layout_mode = 2
metadata/_tab_index = 1

BIN
scenes/tilemap/ship.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c4erjbms6c1em"
path="res://.godot/imported/arrow-ninepatch-0.png-dfdc5d78f833b20c0b46412eab73b9fe.ctex"
uid="uid://bry3qqgbuvpdt"
path="res://.godot/imported/ship.png-1e5b46229cc4c1adf618fcb5da01fb4c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/arrow-ninepatch-0.png"
dest_files=["res://.godot/imported/arrow-ninepatch-0.png-dfdc5d78f833b20c0b46412eab73b9fe.ctex"]
source_file="res://scenes/tilemap/ship.png"
dest_files=["res://.godot/imported/ship.png-1e5b46229cc4c1adf618fcb5da01fb4c.ctex"]
[params]

BIN
scenes/tilemap/ship1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dct2op842kyxo"
path="res://.godot/imported/ship1.png-fb0d0fe319583fdccb34710f90651bfb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/tilemap/ship1.png"
dest_files=["res://.godot/imported/ship1.png-fb0d0fe319583fdccb34710f90651bfb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
scenes/tilemap/ship2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3i0dm4vk3fvu"
path="res://.godot/imported/ship2.png-dfba13504c314fdc4446dacd0ce91bc5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/tilemap/ship2.png"
dest_files=["res://.godot/imported/ship2.png-dfba13504c314fdc4446dacd0ce91bc5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://c2523fcn14gn4"]
[ext_resource type="Texture2D" uid="uid://b3i0dm4vk3fvu" path="res://scenes/tilemap/ship2.png" id="1_o15fj"]
[node name="Ship_mark" type="Sprite2D"]
position = Vector2(2.38419e-07, -1.19209e-07)
scale = Vector2(0.496428, 0.496429)
texture = ExtResource("1_o15fj")

BIN
scenes/tilemap/threat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mobingoxskg1"
path="res://.godot/imported/threat.png-602b9c318dc5f1342d23490e047ca526.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/tilemap/threat.png"
dest_files=["res://.godot/imported/threat.png-602b9c318dc5f1342d23490e047ca526.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://cv342kc1jj5hb"]
[ext_resource type="Texture2D" uid="uid://mobingoxskg1" path="res://scenes/tilemap/threat.png" id="1_pvxsy"]
[node name="Threat" type="Node2D"]
[node name="Threat" type="Sprite2D" parent="."]
scale = Vector2(0.171358, 0.171358)
texture = ExtResource("1_pvxsy")

View File

@@ -22,10 +22,17 @@ class_name MercatorTileMap
@export_range(0, 20, 1) var min_zoom_level: int = 0
@export_range(0, 20, 1) var max_zoom_level_server: int = 20
@export_color_no_alpha() var back_color: = Color.BLACK
@onready var scale_label: String
@onready var coordinates_label: String
@onready var threat_mark: PackedScene = load("res://scenes/tilemap/threat.tscn")
@onready var ship_mark: PackedScene = load("res://scenes/tilemap/ship_mark.tscn")
var ship_id := 9999
var ship_instance: Node2D = null
const default_size: = 400.0
var is_centered: = false
var is_out_border1: = true
var is_out_border2: = true
var threat_markers := {}
@export var animation_time: float = 0.1:
set(val):
@@ -94,6 +101,7 @@ signal map_server_online()
## Вызывается при отсутствии ответа от сервера карт
signal map_server_offline()
const image_load_proc_names = {
'png': 'load_png_from_buffer',
'jpg': 'load_jpg_from_buffer',
@@ -131,6 +139,9 @@ func _ready() -> void:
var unit_nav = network.units[key]
unit_nav.connect('data_received', on_data_received)
ProjectSettings.connect('settings_changed', _settings_changed)
threats.connect('threat_new', Callable(self, '_on_threat_new'))
threats.connect('threat_lost', Callable(self, '_on_threat_lost'))
threats.connect('threat_update', Callable(self, '_on_threat_update'))
func _settings_changed():
@@ -150,7 +161,7 @@ func _on_resize() -> void:
$canvas/spr_mask.scale = $canvas.size / default_size
## Создаёт новую отметку из координат экрана
## Создаёт новую отметку из координат экранаa
func add_mark_from_screen_pos(id: int, scr_xy: Vector2, mark: Node) -> bool:
if _marks.has(id):
return false
@@ -238,6 +249,7 @@ func _input(e) -> void:
func multiply_zoom(multiplier: float, pivot: Vector2) -> void:
var p1: = screen_to_world(_xyz, pivot)
_xyz.z = clampf(_xyz.z * multiplier, min_zoom_level, max_zoom_level)
update_scale_label()
var p2: = screen_to_world(_xyz, pivot)
_xyz.x -= p2.x - p1.x
_xyz.y -= p2.y - p1.y
@@ -279,6 +291,7 @@ func _draw() -> void:
var scr_pos = world_to_screen(dot.position)
scr_pos.x = posmod(scr_pos.x, dx)
dot.mark.position = scr_pos
dot.mark.visible = is_mark_visible(dot)
dot.mark.visible = c.distance_to(scr_pos) < (r - dot.gap_size)
visible_marks_count += int(dot.mark.visible)
# Рисование границ
@@ -350,6 +363,8 @@ func _process(delta) -> void:
if _queue.is_empty():
emit_signal('load_completed')
update_scale_label()
func _response(result, code, _headers: Array, body: PackedByteArray, req, tile: Tile) -> void:
@@ -552,8 +567,9 @@ func get_tile(x: int, y: int, z: int) -> Tile:
var req = get_node_or_null(NodePath(str(idx)))
if req:
tile = req.get_meta('tile')
tile.t = now
return tile
if tile != null:
tile.t = now
return tile
tile = _cache.get(idx)
if tile:
@@ -670,8 +686,49 @@ func set_coordinates(lon: float, lat: float) -> void:
anim.track_insert_key(0, animation_time, new_pos.x)
anim.track_insert_key(1, animation_time, new_pos.y)
$player.play('goto')
update_coordinates_label(lon, lat)
if not _marks.has(ship_id):
ship_instance = ship_mark.instantiate()
add_mark_from_lon_lat(ship_id, lon, lat, ship_instance, 0.0)
else:
_marks[ship_id].position = lonlat_to_world(lon, lat)
func blend_mask(val: bool) -> void:
$canvas/spr_mask.visible = val
queue_redraw()
func update_coordinates_label(lon: float, lat: float) -> void:
coordinates_label = "Координаты:\nNS:%f\nEW: %f" % [lat, lon]
signaller.emit_signal('update_coordinates_map', coordinates_label)
func update_scale_label() -> void:
scale_label = "Масштаб: " + str(round(_xyz.z))
signaller.emit_signal('update_scale_map', scale_label)
func _on_threat_new(th) -> void:
var bip_instance = threat_mark.instantiate()
if bip_instance:
bip_instance.name = str(th.id)
bip_instance.position = lonlat_to_world(th.lon, th.lat)
add_mark_from_lon_lat(th.id, th.lon, th.lat, bip_instance, 32)
func _on_threat_update(th) -> void:
var target = get_parent().get_node(str(th.id))
if not target:
return
var new_position = lonlat_to_world(th.lon, th.lat)
if _marks.has(th.id):
_marks[th.id].position = new_position
if new_position != target.position:
target.position = new_position
func _on_threat_lost(th) -> void:
var target = get_parent().get_node(str(th.id))
if target:
target.queue_free()

View File

@@ -28,8 +28,6 @@ size = Vector2(400, 400)
[node name="tilemap" type="CanvasGroup" groups=["gui_items"]]
script = ExtResource("1_l64tp")
border_scene = "uid://bumg0moa26skt"
zoom_step = 0.1
[node name="canvas" type="TextureRect" parent="." groups=["gui_items"]]
clip_contents = true

View File

@@ -41,10 +41,10 @@ metadata/_edit_lock_ = true
[node name="pribor_uf" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1194.0
offset_top = 473.0
offset_right = 1305.0
offset_bottom = 658.0
offset_left = 1150.0
offset_top = 565.0
offset_right = 1261.0
offset_bottom = 750.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -93,10 +93,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_rtr" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1198.0
offset_top = 264.0
offset_right = 1304.0
offset_bottom = 420.0
offset_left = 1025.0
offset_top = 595.0
offset_right = 1131.0
offset_bottom = 751.0
pivot_offset = Vector2(-10, -65)
size_flags_horizontal = 15
size_flags_vertical = 15
@@ -144,10 +144,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_afsp_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 980.0
offset_top = 330.0
offset_right = 1813.0
offset_bottom = 970.0
offset_left = 1020.0
offset_top = 420.0
offset_right = 1853.0
offset_bottom = 1060.0
scale = Vector2(0.2, 0.2)
pivot_offset = Vector2(-10, -65)
size_flags_horizontal = 15
@@ -198,10 +198,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_afsp_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1368.0
offset_top = 330.0
offset_right = 2201.0
offset_bottom = 970.0
offset_left = 1210.0
offset_top = 420.0
offset_right = 2043.0
offset_bottom = 1060.0
scale = Vector2(0.2, 0.2)
pivot_offset = Vector2(-10, -65)
size_flags_horizontal = 15
@@ -253,10 +253,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_uyep" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1201.0
offset_top = 712.0
offset_right = 1295.0
offset_bottom = 898.0
offset_left = 1280.0
offset_top = 565.0
offset_right = 1374.0
offset_bottom = 751.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -305,16 +305,17 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_v_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 960.0
offset_top = 475.0
offset_right = 1037.0
offset_bottom = 591.0
offset_left = 1435.0
offset_top = 680.0
offset_right = 1512.0
offset_bottom = 796.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
action_mode = 0
texture_normal = ExtResource("6_i1yfn")
stretch_mode = 4
flip_h = true
script = ExtResource("3_4pt7j")
state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)]
metadata/unit_name = ["уарэп-яу07-2в"]
@@ -357,16 +358,17 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_n_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 960.0
offset_top = 635.0
offset_right = 1037.0
offset_bottom = 751.0
offset_left = 1435.0
offset_top = 345.0
offset_right = 1512.0
offset_bottom = 461.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
action_mode = 0
texture_normal = ExtResource("6_i1yfn")
stretch_mode = 4
flip_h = true
script = ExtResource("3_4pt7j")
state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)]
metadata/unit_name = ["уарэп-яу07-2н"]
@@ -411,16 +413,17 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_k_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1077.0
offset_top = 474.0
offset_right = 1154.0
offset_bottom = 590.0
offset_left = 1435.0
offset_top = 515.0
offset_right = 1512.0
offset_bottom = 631.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
action_mode = 0
texture_normal = ExtResource("6_i1yfn")
stretch_mode = 4
flip_h = true
script = ExtResource("3_4pt7j")
state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)]
metadata/unit_name = ["уарэп-яу07-2к"]
@@ -463,10 +466,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_v_3" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1344.0
offset_top = 797.0
offset_right = 1421.0
offset_bottom = 913.0
offset_left = 1015.0
offset_top = 865.0
offset_right = 1092.0
offset_bottom = 981.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -516,10 +519,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_n_3" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1457.0
offset_top = 798.0
offset_right = 1534.0
offset_bottom = 914.0
offset_left = 1290.0
offset_top = 865.0
offset_right = 1367.0
offset_bottom = 981.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -569,10 +572,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_k_3" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1344.0
offset_top = 635.0
offset_right = 1421.0
offset_bottom = 751.0
offset_left = 1155.0
offset_top = 865.0
offset_right = 1232.0
offset_bottom = 981.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -622,10 +625,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_v_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1457.0
offset_top = 475.0
offset_right = 1534.0
offset_bottom = 591.0
offset_left = 1295.0
offset_top = 180.0
offset_right = 1372.0
offset_bottom = 296.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -675,10 +678,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1457.0
offset_top = 634.0
offset_right = 1534.0
offset_bottom = 750.0
offset_left = 1015.0
offset_top = 175.0
offset_right = 1092.0
offset_bottom = 291.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -728,10 +731,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_k_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1344.0
offset_top = 473.0
offset_right = 1421.0
offset_bottom = 589.0
offset_left = 1150.0
offset_top = 175.0
offset_right = 1227.0
offset_bottom = 291.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -781,10 +784,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_v_4" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1077.0
offset_top = 797.0
offset_right = 1154.0
offset_bottom = 913.0
offset_left = 890.0
offset_top = 345.0
offset_right = 967.0
offset_bottom = 461.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -833,10 +836,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_n_4" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 960.0
offset_top = 797.0
offset_right = 1037.0
offset_bottom = 913.0
offset_left = 885.0
offset_top = 685.0
offset_right = 962.0
offset_bottom = 801.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -885,10 +888,10 @@ script = ExtResource("11_u7tym")
[node name="pribor_prd_k_4" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1077.0
offset_top = 635.0
offset_right = 1154.0
offset_bottom = 751.0
offset_left = 890.0
offset_top = 515.0
offset_right = 967.0
offset_bottom = 631.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
@@ -936,58 +939,58 @@ script = ExtResource("11_u7tym")
[node name="txr_legend0" type="TextureRect" parent="."]
layout_mode = 0
offset_left = 1176.0
offset_top = 960.0
offset_right = 1400.0
offset_bottom = 1184.0
offset_left = 1198.0
offset_top = 1135.0
offset_right = 1422.0
offset_bottom = 1359.0
scale = Vector2(0.1, 0.1)
texture = ExtResource("7_6j01w")
[node name="lbl_legend0" type="Label" parent="."]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 0
offset_left = 1204.0
offset_top = 961.0
offset_right = 1360.0
offset_bottom = 981.0
offset_left = 1226.0
offset_top = 1136.0
offset_right = 1382.0
offset_bottom = 1156.0
theme_override_font_sizes/font_size = 17
text = "Ожидание результата"
[node name="lbl_legend1" type="Label" parent="."]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 0
offset_left = 1009.0
offset_top = 961.0
offset_right = 1082.0
offset_bottom = 981.0
offset_left = 1031.0
offset_top = 1136.0
offset_right = 1104.0
offset_bottom = 1156.0
theme_override_font_sizes/font_size = 17
text = "Исправно"
[node name="txr_legend1" type="TextureRect" parent="."]
layout_mode = 0
offset_left = 983.0
offset_top = 960.0
offset_right = 1207.0
offset_bottom = 1184.0
offset_left = 1005.0
offset_top = 1135.0
offset_right = 1229.0
offset_bottom = 1359.0
scale = Vector2(0.1, 0.1)
texture = ExtResource("8_isjua")
[node name="txr_legend2" type="TextureRect" parent="."]
layout_mode = 0
offset_left = 1433.0
offset_top = 960.0
offset_right = 1657.0
offset_bottom = 1184.0
offset_left = 1455.0
offset_top = 1135.0
offset_right = 1679.0
offset_bottom = 1359.0
scale = Vector2(0.1, 0.1)
texture = ExtResource("9_ll0vs")
[node name="lbl_legend2" type="Label" parent="."]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 0
offset_left = 1461.0
offset_top = 961.0
offset_right = 1505.0
offset_bottom = 981.0
offset_left = 1483.0
offset_top = 1136.0
offset_right = 1527.0
offset_bottom = 1156.0
theme_override_font_sizes/font_size = 17
text = "Сбой"

View File

@@ -165,11 +165,12 @@ func setting_tab():
var tootip_text = tbl_row[3]
name_to_line_index[param_name] = i
$scroll_set/table.add_row([node_label, node_value])
var label_instance = $scroll_set/table.get_node2(0, i)
var label_instance = $scroll_set/table.get_node2(0, i)
label_instance.text = param_name
label_instance.tooltip_text = tootip_text
$scroll_set/table.set_node_editable(0, i, false)
var node_values = $scroll_set/table.get_node2(1, i).get_children()
var edit_node = $scroll_set/table.get_node2(1, i)
if node_values.size():
var child = node_values[0]
if child is CheckButton:
@@ -181,15 +182,15 @@ func setting_tab():
var val = settings_data[param_name]
if typeof(val) == TYPE_STRING:
$scroll_set/table.get_node2(1, i).text = settings_data[param_name]
if edit_node:
if edit_node is LineEdit:
$scroll_set/table.set_node_control(1, i, true)
$scroll_set/table.set_node_editable(1, COMMIT, false)
$scroll_set/table.set_columns_min_size([600, 950])
$scroll_set/table.set_columns_alignments(ALIGNMENT)
$scroll_set/table.connect('row_pressed', Callable(self, 'on_row_pressed'))
var commit_instance = $scroll_set/table.get_node2(1, COMMIT)
commit_instance.text = '%s' % commit.VCS_HEAD
for i in SETTING_TABLE.size():
var param_name = SETTING_TABLE[i][0]
if not settings.UnitProfiles.has(param_name):

View File

@@ -31,6 +31,7 @@ var strob_dir_begin: float ## Направление антенны
var strob_width_begin: float ## Ширина строба по углу в момент начала перетаскивания.
var view_mode: MapViewMode ## Режим отображения карты
signal drag_begin ## Вызывается в момент начала перетаскивания.
signal drag_continue ## Вызывается во время продолжения перетаскивания.
signal drag_end ## Вызывается в момент завершения перетаскивания.
@@ -140,6 +141,8 @@ func _ready():
signaller.connect('interfer_prinuditelno', Callable(self, 'on_chk_interfer_prinuditelno'))
signaller.connect('fs_update_state', Callable(self, 'on_fs_update_state'))
signaller.connect('map_user_panning', Callable(self, 'on_user_panning'))
signaller.connect('update_coordinates_map', Callable(self, 'on_update_coordinates_label'))
signaller.connect('update_scale_map', Callable(self, 'on_update_scale_label'))
on_btn_center_toggled(true)
on_btn_activate_toggled(false)
@@ -510,4 +513,12 @@ func on_btn_center_toggled(toggled_on: bool) -> void:
func on_btn_activate_toggled(toggled_on: bool) -> void:
$btn_activate.tooltip_text = 'Включает падавление (%s)' % ('включено' if toggled_on else 'отключено')
$btn_activate.tooltip_text = 'Включает подавление (%s)' % ('включено' if toggled_on else 'отключено')
func on_update_coordinates_label(coordinates_label) -> void:
$coordinates_map.text = str(coordinates_label)
func on_update_scale_label(scale_label) -> void:
$scale_map.text = str(scale_label)

View File

@@ -284,10 +284,26 @@ button_pressed = true
texture_normal = ExtResource("12_5ffal")
texture_pressed = ExtResource("13_ggrwd")
[node name="coordinates_map" type="Label" parent="."]
layout_mode = 0
offset_left = 1000.0
offset_top = 128.0
offset_right = 1112.0
offset_bottom = 147.0
text = "Координаты:"
[node name="scale_map" type="Label" parent="."]
layout_mode = 0
offset_left = 1000.0
offset_top = 192.0
offset_right = 1110.0
offset_bottom = 213.0
text = "Масштаб:"
[connection signal="drag_begin" from="." to="." method="_on_drag_begin"]
[connection signal="drag_continue" from="." to="." method="_on_drag_continue"]
[connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"]
[connection signal="toggled" from="chk_auto" to="." method="on_value_changed"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
[connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"]

View File

@@ -25,7 +25,8 @@ const SOURCE_INTERFER = ['th','fs','cu']
const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей.
const INTERFER_OFF = 'off'
const POW_DEFAULT: float = 100.0
var msg_num: int = 0 ## Счётчик сообщений.
var msg6_num: int = 0 ## Счётчик сообщений "тип 6"
var msg8_num: int = 0 ## Счётчик сообщений "тип 8"
var id_array: Array ## Массив id воздействий.
var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия.
var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия.
@@ -93,11 +94,11 @@ signal interfer_resized(ecms: Dictionary) ## Вызывается пр
func on_get_interfers(unit, ecms) -> void: unit.pack_interfers(cu, ecms)
## Автмат выключен
## Автомат выключен
func on_manual_control() -> void: auto_enabled = false
## Автмат отключен
## Автомат отключен
func on_full_auto() -> void: auto_enabled = true
@@ -106,27 +107,46 @@ func _ready() -> void:
for i in ID_INTERFERS_LEN: # Заполняет массив ID целей
id_array.append(i + 1)
var unit_key = settings.get_unit_key('уарэп-капсрпб')
var unit = network.units[unit_key]
var unit_caps = network.units[unit_key]
var unit_5p28_key = settings.get_unit_key('уарэп-5п28')
var unit_5p28 = network.units_tcp[unit_5p28_key]
var timer_check_state: = Timer.new()
add_child(timer_check_state)
var resend_timeout = ProjectSettings.get_setting('application/interfer/resend_timeout', 1000.0)
timer_check_state.connect('timeout', Callable(self, 'on_timer_check_state').bind(unit, ecms, resend_timeout))
timer_check_state.connect('timeout', Callable(self, 'on_timer_check_state').bind(unit_caps, ecms, resend_timeout))
timer_check_state.start(resend_timeout / 1000.0)
unit.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms))
unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms))
unit_5p28.connect('get_interfers', Callable(self, 'on_get_interfers').bind(unit_5p28, ecms))
signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit, ecms))
signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit_caps, ecms))
signaller.connect('interfer_rcv', Callable(self, 'on_interfer_rcv').bind(unit_5p28, ecms))
signaller.connect('interfer_new', Callable(self, 'send_ecm').bind(unit))
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit, ecms))
signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit))
signaller.connect('interfer_new', Callable(self, 'send_ecm').bind(unit_caps))
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit_caps, ecms))
signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit_caps))
signaller.connect('interfer_off', Callable(self, 'on_interfer_off'))
signaller.connect('manual_control', Callable(self, 'on_manual_control'))
signaller.connect('full_auto', Callable(self, 'on_full_auto'))
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno'))
signaller.connect('emit_changed', Callable(self, 'on_emit_changed').bind(ecms))
threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit))
threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps))
var key = settings.get_unit_key('навигация')
var unit_nav = network.units[key]
unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps))
func on_nav_data_received(coords: Dictionary, unit_caps):
var data_to_json = {
'ts': 8,
'ss': msg8_num,
'roll': coords.get('bk', 0),
'trim': coords.get('kk', 0),
'long': coords.get('longitude', 0),
'lat': coords.get('latitude', 0),
'course': coords.get('k', 0),
'speed': coords.get('speed', 0) }
var json_data = JSON.stringify(data_to_json).to_utf8_buffer()
unit_caps.tx_stack.append(json_data)
msg8_num += 1
msg8_num %= 0xffffffff
## Проверяет состояние отправки пакета и если не доставлен, повторяет отправку.
@@ -231,7 +251,7 @@ func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void:
param['width'] = interfer_params[5]
if (param['width'] < settings.WIDTH_MIN) and (param['width'] > settings.WIDTH_MAX):
err = true
var interfer_name: String
var interfer_name: = ''
for key in ITERFER_MODE:
if ITERFER_MODE[key][2] == mode:
interfer_name = key
@@ -274,10 +294,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
ecm.powp = power
ecm.source_interfer = source_interfer
ecm.modulation = emit_enable
if param.has('um'):
ecm.um = param['um']
else:
ecm.um = 15.0 # Значение по умолчанию
ecm.um = param.get('um', 15.0) # Значение по умолчанию
signaller.emit_signal('interfer_new', ecm)
if interfer_name == 'off':
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
@@ -287,8 +304,8 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
func send_ecm(ecm, unit0) -> void:
msg_num += 1
var json_data = ecm.get_msg6_data(msg_num)
msg6_num += 1
var json_data = ecm.get_msg6_data(msg6_num)
unit0.tx_stack.append(json_data)

View File

@@ -297,15 +297,15 @@ func get_tcp_data(sock: SocketTCP, peer, len_rx):
func _process(_delta: float) -> void:
tick = Time.get_ticks_msec()
RenderingServer.global_shader_parameter_set('tick_curent', tick)
for addr in units_udp:
var unit_udp = units_udp[addr]
for key in units_udp:
var unit_udp = units_udp[key]
if Error.OK == unit_udp.process(tick):
var sock = send_sockets[unit_udp.name]
var dst_port = dst_ports[addr]
var dst_port = dst_ports[key]
var tx_data = unit_udp.tx_data.slice(0, unit_udp.tx_len)
sock.send_to([addr[0], dst_port], tx_data)
for addr in units_udprx:
var unit_udprx = units_udprx[addr]
sock.send_to([key[0], dst_port], tx_data)
for key in units_udprx:
var unit_udprx = units_udprx[key]
unit_udprx.process(tick)
for key in units_serial:
var unit_serial = units_serial[key]

View File

@@ -30,13 +30,13 @@ const FS_SECTORS: Dictionary = {
1: [270.0, 360.0] }
const FS_FREQ: Dictionary = {
0: [390.0, 800.0, 433.0],
1: [800.0, 1065.0, 860.0],
0: [390.0, 510.0, 450.0],
1: [800.0, 1065.0, 932.0],
2: [1065.0, 1210.0, 1137.0],
3: [1150.0, 1490.0, 1227.0],
3: [1150.0, 1280.0, 1215.0],
4: [1490.0, 2000.0, 1575.0],
5: [2000.0, 3500.0, 2450.0],
6: [3500.0, 6000.0, 5800.0] }
5: [2000.0, 3500.0, 2750.0],
6: [3500.0, 6000.0, 4750.0] }
## Названия приборов ПРД
const PRD_NAMES: Array = [

View File

@@ -179,3 +179,13 @@ signal ems2_hide_pressed(state)
## Вызывается при нажатии на кнопку экранной клавиатуры
## [param state] - состояние скрытия кнопки ЭМС2
signal emit_changed(state)
## Вызывается при изменении детализации карты.[br]
## [param new_scale] - обновленное значение масштаба ([b]true[/b]
signal update_scale_map(new_scale)
## Вызывается при изменении текущих координат.[br]
## [param new_coordinates] - обновленное значение координат ([b]true[/b]
signal update_coordinates_map(new_coordinates)

View File

@@ -35,6 +35,34 @@ func allways(val: bool, msg: String = '<не указано>'):
get_tree().quit(Error.FAILED)
## Преобразует путь в виде целой строки в массив отдельных элементов пути.[br]
## [param solid] - Входная строка содержащая путь, которая имеет следующий примерный вид:[br]
## [code]SelfTest[1].DevList[2]['CurrentValue'][/code][br]
## [param paths] - Массив содержащий отдельные элементы пути.[br]
## [param tokens] - Разделители используемые во входной строке для разделения элементов пути.[br]
func map_solid_to_array(solid: String, paths: Array, tokens: Array = ['[', ']', '.']) -> void:
paths.clear()
var i_chs = []
for sep in tokens:
var i = 0
while i != -1:
i = solid.find(sep, i + 1)
i_chs.append(i)
i_chs.pop_back()
i_chs.sort()
var i0 = 0
for i1 in i_chs:
var ss: = [String()]
get_string_slice(solid, ss, i0, i1)
if ss[0].is_valid_int():
paths.append(ss[0].to_int())
else:
if ss[0]:
paths.append(ss[0])
i0 = i1 + 1
func check_index(obj, index) -> bool:
if obj is Dictionary:
if obj.has(index):

View File

@@ -599,6 +599,17 @@ func set_node_frame(i_col: int, i_row: int, node_name: String, val: int) -> void
func set_node_editable(i_col: int, i_row: int, val: bool) -> void:
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
nodes[key].editable = val
## Устанавливает контекстное меню для ячейки таблицы. Ячейка должна иметь свойство [param context_menu].[br]
## [param i_col] - Индекс колонки.[br]
## [param i_row] - Индекс ряда.[br]
## [param val] - Включить или отключить контекстное меню.
func set_node_control(i_col: int, i_row: int, val: bool) -> void:
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
nodes[key].shortcut_keys_enabled = val
nodes[key].selecting_enabled = val
nodes[key].deselect_on_focus_loss_enabled = val
## Разрешает редактирование ряда. Ячейки ряда должны иметь свойство [param editable].[br]