diff --git a/.gitignore b/.gitignore index e4b2bb6..41d1abc 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/data/arrow-ninepatch-0.png b/data/arrow-ninepatch-0.png deleted file mode 100644 index 3a5b1ac..0000000 Binary files a/data/arrow-ninepatch-0.png and /dev/null differ diff --git a/project.godot b/project.godot index 81344c9..0be2d55 100644 --- a/project.godot +++ b/project.godot @@ -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 diff --git a/scenes/count-danger/count_danger_pad.tscn b/scenes/count-danger/count_danger_pad.tscn index 03b5559..8f4dd4e 100644 --- a/scenes/count-danger/count_danger_pad.tscn +++ b/scenes/count-danger/count_danger_pad.tscn @@ -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 diff --git a/scenes/pribor-afsp/bort-afsp.tscn b/scenes/pribor-afsp/bort-afsp.tscn index 7150a58..8d55d61 100644 --- a/scenes/pribor-afsp/bort-afsp.tscn +++ b/scenes/pribor-afsp/bort-afsp.tscn @@ -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"] diff --git a/scenes/pribor-afsp/node_maper.gd b/scenes/pribor-afsp/node_maper.gd new file mode 100644 index 0000000..b42f189 --- /dev/null +++ b/scenes/pribor-afsp/node_maper.gd @@ -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) diff --git a/scenes/pribor-afsp/node_maper.gd.uid b/scenes/pribor-afsp/node_maper.gd.uid new file mode 100644 index 0000000..973fc93 --- /dev/null +++ b/scenes/pribor-afsp/node_maper.gd.uid @@ -0,0 +1 @@ +uid://bcjneo1tbiygo diff --git a/scenes/pribor-afsp/pribor-afsp-1.tscn b/scenes/pribor-afsp/pribor-afsp-1.tscn index 907863f..8267382 100644 --- a/scenes/pribor-afsp/pribor-afsp-1.tscn +++ b/scenes/pribor-afsp/pribor-afsp-1.tscn @@ -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"] diff --git a/scenes/pribor-afsp/pribor-afsp-2.tscn b/scenes/pribor-afsp/pribor-afsp-2.tscn index 6e0c434..8b82266 100644 --- a/scenes/pribor-afsp/pribor-afsp-2.tscn +++ b/scenes/pribor-afsp/pribor-afsp-2.tscn @@ -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"] diff --git a/scenes/pribor-afsp/pribor-afsp.gd b/scenes/pribor-afsp/pribor-afsp.gd index ca717ba..b8018e7 100644 --- a/scenes/pribor-afsp/pribor-afsp.gd +++ b/scenes/pribor-afsp/pribor-afsp.gd @@ -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]) diff --git a/scenes/pribor-afsp/pribor-rtr.gd b/scenes/pribor-afsp/pribor-rtr.gd index 12f04cd..63aec35 100644 --- a/scenes/pribor-afsp/pribor-rtr.gd +++ b/scenes/pribor-afsp/pribor-rtr.gd @@ -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') diff --git a/scenes/pribor-afsp/pribor-rtr.tscn b/scenes/pribor-afsp/pribor-rtr.tscn index 345ec83..b92a659 100644 --- a/scenes/pribor-afsp/pribor-rtr.tscn +++ b/scenes/pribor-afsp/pribor-rtr.tscn @@ -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"] diff --git a/scenes/pribor-uf/pribor_uf.gd b/scenes/pribor-uf/pribor-uf.gd similarity index 90% rename from scenes/pribor-uf/pribor_uf.gd rename to scenes/pribor-uf/pribor-uf.gd index 7eec3bf..5f10eb9 100644 --- a/scenes/pribor-uf/pribor_uf.gd +++ b/scenes/pribor-uf/pribor-uf.gd @@ -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 diff --git a/scenes/pribor-uf/pribor_uf.gd.uid b/scenes/pribor-uf/pribor-uf.gd.uid similarity index 100% rename from scenes/pribor-uf/pribor_uf.gd.uid rename to scenes/pribor-uf/pribor-uf.gd.uid diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn index e897449..6d9ea19 100644 --- a/scenes/pribor-uf/pribor-uf.tscn +++ b/scenes/pribor-uf/pribor-uf.tscn @@ -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"] diff --git a/scenes/pribor-uyep/pribor-uyep.gd b/scenes/pribor-uyep/pribor-uyep.gd index 809e0cd..3b91095 100644 --- a/scenes/pribor-uyep/pribor-uyep.gd +++ b/scenes/pribor-uyep/pribor-uyep.gd @@ -1 +1 @@ -extends "res://scenes/контроль/прибор.gd" +extends 'res://scenes/контроль/прибор.gd' diff --git a/scenes/pribor-uyep/sch3-view.gd b/scenes/pribor-uyep/sch3-view.gd index f0ee87f..2851607 100644 --- a/scenes/pribor-uyep/sch3-view.gd +++ b/scenes/pribor-uyep/sch3-view.gd @@ -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] diff --git a/scenes/pribor-uyep/spt25-view.gd b/scenes/pribor-uyep/spt25-view.gd index f537b1c..30066a9 100644 --- a/scenes/pribor-uyep/spt25-view.gd +++ b/scenes/pribor-uyep/spt25-view.gd @@ -1,6 +1,6 @@ @tool -extends "res://scenes/контроль/элемент-я.gd" +extends 'res://scenes/контроль/элемент-я.gd' func on_line_changed(unit0): diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index b534326..ab5391f 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -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 diff --git a/scenes/tilemap/ship.png b/scenes/tilemap/ship.png new file mode 100644 index 0000000..25e3830 Binary files /dev/null and b/scenes/tilemap/ship.png differ diff --git a/data/arrow-ninepatch-0.png.import b/scenes/tilemap/ship.png.import similarity index 67% rename from data/arrow-ninepatch-0.png.import rename to scenes/tilemap/ship.png.import index 81a3371..e7819c4 100644 --- a/data/arrow-ninepatch-0.png.import +++ b/scenes/tilemap/ship.png.import @@ -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] diff --git a/scenes/tilemap/ship1.png b/scenes/tilemap/ship1.png new file mode 100644 index 0000000..e2057b1 Binary files /dev/null and b/scenes/tilemap/ship1.png differ diff --git a/scenes/tilemap/ship1.png.import b/scenes/tilemap/ship1.png.import new file mode 100644 index 0000000..850c04e --- /dev/null +++ b/scenes/tilemap/ship1.png.import @@ -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 diff --git a/scenes/tilemap/ship2.png b/scenes/tilemap/ship2.png new file mode 100644 index 0000000..74acd04 Binary files /dev/null and b/scenes/tilemap/ship2.png differ diff --git a/scenes/tilemap/ship2.png.import b/scenes/tilemap/ship2.png.import new file mode 100644 index 0000000..cb7b68f --- /dev/null +++ b/scenes/tilemap/ship2.png.import @@ -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 diff --git a/scenes/tilemap/ship_mark.tscn b/scenes/tilemap/ship_mark.tscn new file mode 100644 index 0000000..580f3a0 --- /dev/null +++ b/scenes/tilemap/ship_mark.tscn @@ -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") diff --git a/scenes/tilemap/threat.png b/scenes/tilemap/threat.png new file mode 100644 index 0000000..bfa952e Binary files /dev/null and b/scenes/tilemap/threat.png differ diff --git a/scenes/tilemap/threat.png.import b/scenes/tilemap/threat.png.import new file mode 100644 index 0000000..9d8f51c --- /dev/null +++ b/scenes/tilemap/threat.png.import @@ -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 diff --git a/scenes/tilemap/threat.tscn b/scenes/tilemap/threat.tscn new file mode 100644 index 0000000..e430ebc --- /dev/null +++ b/scenes/tilemap/threat.tscn @@ -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") diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index 4e4ec18..9ec8d54 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -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() diff --git a/scenes/tilemap/tilemap.tscn b/scenes/tilemap/tilemap.tscn index 40e8eb5..aee2951 100644 --- a/scenes/tilemap/tilemap.tscn +++ b/scenes/tilemap/tilemap.tscn @@ -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 diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 08642ca..a6c4fb8 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -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 = "Сбой" diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index 6f262cd..4e07d7e 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -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): diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 3ab99c3..724eef0 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -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) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 1b179b1..1336c77 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -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"] diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 7140f78..dabecd5 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -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) diff --git a/scripts/network.gd b/scripts/network.gd index c349ac9..1465ca4 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -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] diff --git a/scripts/prd.gd b/scripts/prd.gd index 96c5d90..406fc7e 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -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 = [ diff --git a/scripts/signaller.gd b/scripts/signaller.gd index 37754ac..d96201f 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -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) diff --git a/scripts/tools.gd b/scripts/tools.gd index dca07aa..ec7d553 100644 --- a/scripts/tools.gd +++ b/scripts/tools.gd @@ -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): diff --git a/table/table.gd b/table/table.gd index d096da1..4d6e220 100644 --- a/table/table.gd +++ b/table/table.gd @@ -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]