diff --git a/project.godot b/project.godot index 573868b..922bfd4 100644 --- a/project.godot +++ b/project.godot @@ -28,7 +28,7 @@ interfer/center_offset=Vector2(200, 225) interfer/default_color0=Color(0.38, 0.47, 0.51, 1) interfer/default_color1=Color(0.39, 0.44, 0.5, 1) interfer/select_color=Color(1, 1, 1, 1) -interfer/interfer_color=Color(0.92379, 0.0965192, 0.249261, 1) +interfer/interfer_color=Color(0.9, 0.1, 0.25, 0.9) interfer/resend_timeout=1000.0 config/external_cu=false config/unit_rr_request_period=20.0 @@ -36,7 +36,7 @@ config/kems_files_path="user://kems/" config/emsg_files_path="user://emsg/" config/settings_path="user://settings.json" config/unit_bpo_request_period=20.0 -interfer/emit_color=Color(0.92549, 0.0980392, 0.25098, 0.509804) +interfer/emit_color=Color(0.9, 0.1, 0.25, 0.5) interfer/closed_sectors=Color(0, 0, 0, 1) [autoload] diff --git a/scenes/frame-ecm-list/frm-ecm-list.tscn b/scenes/frame-ecm-list/frm-ecm-list.tscn index e008661..db6c658 100644 --- a/scenes/frame-ecm-list/frm-ecm-list.tscn +++ b/scenes/frame-ecm-list/frm-ecm-list.tscn @@ -65,7 +65,7 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 15.0 -text = "СПРС" +text = "JTIDS" metadata/rfi_name = "sprs" [node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 8de36cd..a9bae1b 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -122,7 +122,8 @@ func on_interfer_new(ecm, table_index): # Будем надеяться, что отложенные вызовы производятся в том же порядке $table.call_deferred('clear_rows_selected') $table.call_deferred('set_row_selected', i_row, true) - signaller.emit_signal('interfer_selected', ecm) + if not interfer.auto_enabled: + signaller.emit_signal('interfer_selected', ecm) func on_interfer_off(ecm, table_index): diff --git a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn index a1b2522..d938451 100644 --- a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn +++ b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn @@ -147,6 +147,6 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 -text = "ЕПРЛС" +text = "ЕРЛС" disabled = true metadata/rfi_name = "eprls" diff --git a/scenes/pribor-afsp/pribor-afsp.gd b/scenes/pribor-afsp/pribor-afsp.gd index 67a150b..7437ff9 100644 --- a/scenes/pribor-afsp/pribor-afsp.gd +++ b/scenes/pribor-afsp/pribor-afsp.gd @@ -99,4 +99,4 @@ func _on_request_completed(result, _response_code, headers, body: PackedByteArra func _on_item_pressed(block_a: Control): var metas = block_a.get_meta_list() for n in metas: - var v = block_a.get_meta(n) + var _v = block_a.get_meta(n) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index a185a98..e56f21b 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -37,15 +37,15 @@ func set_frame(node_frame: Node, val: int): node_frame.set_frame(val) func start_control() -> void: - set_default_state() + set_default_state(get_tree().get_nodes_in_group('default_reset'), get_tree().get_nodes_in_group('power_amplifier')) find_labels(self) -func set_default_state() -> void: - for group in get_tree().get_nodes_in_group('default_reset'): +static func set_default_state(default_reset_array_node: Array, power_amplifier_arr_node: Array) -> void: + for group in default_reset_array_node: group.state = STATE_VAL.NONE - for group in get_tree().get_nodes_in_group('power_amplifier'): + for group in power_amplifier_arr_node: group.state = STATE_VAL.NONE @@ -83,10 +83,16 @@ static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifi if powamp_meta == 'um_8' and not fs_result.fs_1: return if powamp_meta in ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'] and not fs_result.fs_6: return if powamp_meta in ['um_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14'] and not fs_result.fs_7: return - i_powapm.value0 = pow_dic[powamp_meta] - for i_p in pow_dic[powamp_meta]: - if i_p < POWER_THRESHOLD: + + if powamp_meta == 'um_8': + i_powapm.value0 = [pow_dic[powamp_meta][5]] + if pow_dic[powamp_meta][5] < POWER_THRESHOLD: status = STATE_VAL.ERROR + else: + i_powapm.value0 = pow_dic[powamp_meta] + for i_p in pow_dic[powamp_meta]: + if i_p < POWER_THRESHOLD: + status = STATE_VAL.ERROR i_powapm.state = status @@ -95,12 +101,14 @@ func on_press_device() -> void: var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') + var default_reset_array_node: Array = get_tree().get_nodes_in_group('default_reset') var module_fs_1: Node = $kasseta_fs_kd/ref_A2 var module_fs_6: Node = $kasseta_fs_kd/ref_A4 var dou_6: Node = $dou6_A7 var module_fs_7: Node = $kasseta_fs_kd/ref_A7 var dou_7: Node = $dou7_A8 var for_control_result: Dictionary = { + 'control_is_over': unit_prd_k.flag_control_is_over, 'result_dic': unit_prd_k.control_results, 'power_dic': unit_prd_k.power_result, 'block_kasseta_y5_config': unit_prd_k.block_kasseta_y5_config, @@ -110,6 +118,7 @@ func on_press_device() -> void: 'node_ip_power_arr': node_ip_power_arr, 'fs_nodes': fs_nodes, 'power_amplifier': power_amplifier, + 'default_reset_array_node': default_reset_array_node, 'POWER_THRESHOLD': unit_prd_k.constants.POWER_THRESHOLD, 'name_prd': unit_prd_k.self_name, 'module_fs_1': module_fs_1, @@ -121,7 +130,7 @@ func on_press_device() -> void: on_control_result(for_control_result) -func on_control_result(for_result_dic: Dictionary) -> void: +static func on_control_result(for_result_dic: Dictionary) -> void: temperature_fill(for_result_dic.power_amplifier, for_result_dic.temperature_um) var block_kasseta_y5_prd_config_k: Dictionary = for_result_dic.block_kasseta_y5_config @@ -134,14 +143,15 @@ func on_control_result(for_result_dic: Dictionary) -> void: break node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR - var block_ip_config_k: Dictionary = unit_prd_k.block_ip_config - var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') - for power_supply in node_ip_power_arr: + var block_ip_config_k: Dictionary = for_result_dic.block_ip_config + for power_supply in for_result_dic.node_ip_power_arr: var meta_ip = power_supply.get_meta('ip') if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug: power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR - ## If control is end + if not for_result_dic.control_is_over: + set_default_state(for_result_dic.default_reset_array_node, for_result_dic.power_amplifier) + return var result_dic: Dictionary = for_result_dic.result_dic for f in for_result_dic.fs_nodes: var fs_meta: String = f.get_meta('fs') diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index 404443e..2a448dd 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -51,7 +51,7 @@ offset_top = 242.0 offset_right = 485.0 offset_bottom = 432.0 -[node name="maa2000_A22" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("1_8dmgr")] +[node name="maa2000_A22" parent="." groups=["power_supply"] instance=ExtResource("1_8dmgr")] layout_mode = 0 offset_left = 485.0 offset_top = 907.0 @@ -70,7 +70,7 @@ offset_bottom = 907.0 fname = "ДОУ-6" rname = "A7" -[node name="maa2000_A23" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("1_8dmgr")] +[node name="maa2000_A23" parent="." groups=["power_supply"] instance=ExtResource("1_8dmgr")] layout_mode = 0 offset_left = 8.0 offset_top = 907.0 @@ -122,7 +122,7 @@ offset_bottom = 337.0 value0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] fname = "УМ1535Б" rname = "A10" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_1" @@ -134,7 +134,7 @@ offset_right = 652.0 offset_bottom = 432.0 fname = "УМ1535Б" rname = "A11" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_2" @@ -146,7 +146,7 @@ offset_right = 652.0 offset_bottom = 527.0 fname = "УМ1535Б" rname = "A12" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_3" @@ -158,7 +158,7 @@ offset_right = 652.0 offset_bottom = 622.0 fname = "УМ1535Б" rname = "A13" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_4" @@ -170,7 +170,7 @@ offset_right = 652.0 offset_bottom = 717.0 fname = "УМ1535Б" rname = "A14" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_5" @@ -182,7 +182,7 @@ offset_right = 652.0 offset_bottom = 812.0 fname = "УМ1535Б" rname = "A15" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_6" @@ -194,6 +194,8 @@ offset_right = 652.0 offset_bottom = 907.0 fname = "УТМ80" rname = "A9" +value0_info = "Мощность" +value1_info = "Температура,°C" metadata/um = "um_8" [node name="rm1620m_A16" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] @@ -204,7 +206,7 @@ offset_right = 175.0 offset_bottom = 337.0 fname = "РМ16-20М" rname = "A16" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_9" @@ -216,7 +218,7 @@ offset_right = 173.0 offset_bottom = 432.0 fname = "РМ16-20М" rname = "A17" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_10" @@ -228,7 +230,7 @@ offset_right = 175.0 offset_bottom = 527.0 fname = "РМ16-20М" rname = "A18" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_11" @@ -240,7 +242,7 @@ offset_right = 175.0 offset_bottom = 622.0 fname = "РМ16-20М" rname = "A19" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_12" @@ -252,7 +254,7 @@ offset_right = 175.0 offset_bottom = 717.0 fname = "РМ16-20М" rname = "A20" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_13" @@ -264,7 +266,7 @@ offset_right = 175.0 offset_bottom = 812.0 fname = "РМ16-20М" rname = "A21" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_14" @@ -290,7 +292,7 @@ patch_margin_bottom = 16 script = ExtResource("7_xpa2n") fname = "Кассета П-1" -[node name="ref_A26" parent="kasseta_p_1" groups=["default_reset", "power_supply"] instance=ExtResource("8_la5yt")] +[node name="ref_A26" parent="kasseta_p_1" groups=["power_supply"] instance=ExtResource("8_la5yt")] offset_left = 9.0 offset_top = 33.0 offset_right = 59.0 @@ -299,7 +301,7 @@ fname = "ИП9-50" rname = "A23" metadata/ip = "ip9_50_1" -[node name="ref_A23" parent="kasseta_p_1" groups=["default_reset", "power_supply"] instance=ExtResource("8_la5yt")] +[node name="ref_A23" parent="kasseta_p_1" groups=["power_supply"] instance=ExtResource("8_la5yt")] offset_left = 59.0 offset_top = 33.0 offset_right = 109.0 @@ -308,7 +310,7 @@ fname = "ИП9-50" rname = "A24" metadata/ip = "ip9_50_2" -[node name="ref_A24" parent="kasseta_p_1" groups=["default_reset", "power_supply"] instance=ExtResource("8_la5yt")] +[node name="ref_A24" parent="kasseta_p_1" groups=["power_supply"] instance=ExtResource("8_la5yt")] offset_left = 109.0 offset_top = 33.0 offset_right = 159.0 @@ -347,40 +349,25 @@ horizontal_alignment = 1 metadata/_edit_lock_ = true [node name="input_0" type="AnimatedSprite2D" parent="."] -position = Vector2(234, 177) +position = Vector2(353, 618) sprite_frames = SubResource("SpriteFrames_di0aa") -[node name="Label" type="Label" parent="input_0"] -offset_left = -38.0 -offset_top = 16.0 -offset_right = 30.0 -offset_bottom = 35.0 -text = "Вход ЕМС" - [node name="input_1" type="AnimatedSprite2D" parent="."] -position = Vector2(277, 177) +position = Vector2(405, 618) sprite_frames = SubResource("SpriteFrames_di0aa") [node name="input_2" type="AnimatedSprite2D" parent="."] -position = Vector2(188, 177) +position = Vector2(255, 619) sprite_frames = SubResource("SpriteFrames_di0aa") [node name="output_0" type="AnimatedSprite2D" parent="."] -position = Vector2(421, 177) +position = Vector2(355, 464) sprite_frames = SubResource("SpriteFrames_di0aa") -[node name="Label" type="Label" parent="output_0"] -offset_left = -40.0 -offset_top = 14.0 -offset_right = 36.0 -offset_bottom = 33.0 -text = "Модуляция" -metadata/_edit_use_anchors_ = true - [node name="output_1" type="AnimatedSprite2D" parent="."] -position = Vector2(462, 177) +position = Vector2(405, 464) sprite_frames = SubResource("SpriteFrames_di0aa") [node name="output_2" type="AnimatedSprite2D" parent="."] -position = Vector2(383, 177) +position = Vector2(255, 464) sprite_frames = SubResource("SpriteFrames_di0aa") diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index c8b7fd7..7562d1e 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -17,10 +17,8 @@ func _ready() -> void: var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') for temp in power_amplifier: temp.value1 = -70 - temp.max_value1 = 70 - temp.min_value1 = -40 unit_prd_n.connect('control_is_over', Callable(self, 'on_press_device')) - #unit_prd_n.power_amplify = power_amplifier + start_control() on_press_device() @@ -37,15 +35,15 @@ func set_frame(node_frame: Node, val: int): node_frame.set_frame(val) func start_control() -> void: - set_default_state() + set_default_state(get_tree().get_nodes_in_group('default_reset'), get_tree().get_nodes_in_group('power_amplifier')) find_labels(self) -func set_default_state() -> void: - for group in get_tree().get_nodes_in_group('default_reset'): +static func set_default_state(default_reset_array_node: Array, power_amplifier_arr_node: Array) -> void: + for group in default_reset_array_node: group.state = STATE_VAL.NONE - for group in get_tree().get_nodes_in_group('power_amplifier'): + for group in power_amplifier_arr_node: group.state = STATE_VAL.NONE @@ -88,11 +86,13 @@ func on_press_device() -> void: var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') var power_amplifier_arr_node: Array = get_tree().get_nodes_in_group('power_amplifier') + var default_reset_array_node = get_tree().get_nodes_in_group('default_reset') var module_fs_2: Node = $kasseta_FS_ND/ref_A4 var dou_2: Node = $dou2_A5 var module_fs_3: Node = $kasseta_FS_ND/ref_A3 var dou_3: Node = $dou3_A6 var for_control_result: Dictionary = { + 'control_is_over': unit_prd_n.flag_control_is_over, 'result_dic': unit_prd_n.control_results, 'power_dic': unit_prd_n.power_result, 'block_kasseta_y5_config': unit_prd_n.block_kasseta_y5_config, @@ -102,6 +102,7 @@ func on_press_device() -> void: 'node_ip_power_arr': node_ip_power_arr, 'fs_nodes': fs_nodes, 'power_amplifier': power_amplifier_arr_node, + 'default_reset_array_node': default_reset_array_node, 'POWER_THRESHOLD': unit_prd_n.constants.POWER_THRESHOLD, 'name_prd': unit_prd_n.self_name, 'module_fs_2': module_fs_2, @@ -112,7 +113,7 @@ func on_press_device() -> void: on_control_result(for_control_result) -func on_control_result(for_result_dic: Dictionary) -> void: +static func on_control_result(for_result_dic: Dictionary) -> void: temperature_fill(for_result_dic.power_amplifier, for_result_dic.temperature_um) var block_kasseta_y5_prd_config_n: Dictionary = for_result_dic.block_kasseta_y5_config @@ -125,14 +126,15 @@ func on_control_result(for_result_dic: Dictionary) -> void: break node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR - var block_ip_config_n: Dictionary = unit_prd_n.block_ip_config - var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') - for power_supply in node_ip_power_arr: + var block_ip_config_n: Dictionary = for_result_dic.block_ip_config + for power_supply in for_result_dic.node_ip_power_arr: var meta_ip = power_supply.get_meta('ip') if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug: power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR - ## If control is end + if not for_result_dic.control_is_over: + set_default_state(for_result_dic.default_reset_array_node, for_result_dic.power_amplifier) + return var result_dic: Dictionary = for_result_dic.result_dic for f in for_result_dic.fs_nodes: var fs_meta: String = f.get_meta('fs') diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 68571ce..acb800a 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -40,7 +40,7 @@ offset_right = 15.0 offset_bottom = 30.0 script = ExtResource("1_bnnv3") -[node name="maa2000_A23" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("2_is25t")] +[node name="maa2000_A23" parent="." groups=["power_supply"] instance=ExtResource("2_is25t")] layout_mode = 2 offset_left = 8.0 offset_top = 877.0 @@ -50,7 +50,7 @@ fname = "MAA2000" rname = "A23" metadata/ip = "maa2000_2" -[node name="maa2000_A22" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("2_is25t")] +[node name="maa2000_A22" parent="." groups=["power_supply"] instance=ExtResource("2_is25t")] layout_mode = 2 offset_left = 485.0 offset_top = 877.0 @@ -254,7 +254,7 @@ patch_margin_bottom = 16 script = ExtResource("6_b5wvk") fname = "Кассета П-1" -[node name="ref_A21" parent="kasseta_P_1" groups=["default_reset", "power_supply"] instance=ExtResource("7_eoqf2")] +[node name="ref_A21" parent="kasseta_P_1" groups=["power_supply"] instance=ExtResource("7_eoqf2")] offset_left = 9.0 offset_top = 33.0 offset_right = 59.0 @@ -263,7 +263,7 @@ fname = "ИП12-50" rname = "A21" metadata/ip = "ip12_50_1" -[node name="ref_A20" parent="kasseta_P_1" groups=["default_reset", "power_supply"] instance=ExtResource("7_eoqf2")] +[node name="ref_A20" parent="kasseta_P_1" groups=["power_supply"] instance=ExtResource("7_eoqf2")] offset_left = 59.0 offset_top = 33.0 offset_right = 109.0 @@ -272,7 +272,7 @@ fname = "ИП9-50" rname = "A20" metadata/ip = "ip9_50_1" -[node name="ref_A19" parent="kasseta_P_1" groups=["default_reset", "power_supply"] instance=ExtResource("7_eoqf2")] +[node name="ref_A19" parent="kasseta_P_1" groups=["power_supply"] instance=ExtResource("7_eoqf2")] offset_left = 109.0 offset_top = 33.0 offset_right = 159.0 @@ -300,7 +300,7 @@ offset_right = 652.0 offset_bottom = 337.0 fname = "УМ1535А" rname = "A7" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_1" @@ -312,7 +312,7 @@ offset_right = 652.0 offset_bottom = 432.0 fname = "УМ1535А" rname = "A8" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_2" @@ -324,7 +324,7 @@ offset_right = 652.0 offset_bottom = 527.0 fname = "УМ1535А" rname = "A9" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_3" @@ -336,7 +336,7 @@ offset_right = 652.0 offset_bottom = 622.0 fname = "УМ1535А" rname = "A10" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_4" @@ -348,7 +348,7 @@ offset_right = 652.0 offset_bottom = 717.0 fname = "УМ1535А" rname = "A11" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_5" @@ -360,7 +360,7 @@ offset_right = 652.0 offset_bottom = 812.0 fname = "УМ1535А" rname = "A12" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_6" @@ -372,7 +372,7 @@ offset_right = 175.0 offset_bottom = 337.0 fname = "УМ1535А" rname = "A13" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_9" @@ -384,7 +384,7 @@ offset_right = 175.0 offset_bottom = 432.0 fname = "УМ1535А" rname = "A14" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_10" @@ -396,7 +396,7 @@ offset_right = 175.0 offset_bottom = 527.0 fname = "УМ1535А" rname = "A15" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_11" @@ -408,7 +408,7 @@ offset_right = 175.0 offset_bottom = 622.0 fname = "УМ1535А" rname = "A16" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_12" @@ -420,7 +420,7 @@ offset_right = 175.0 offset_bottom = 717.0 fname = "УМ1535А" rname = "A17" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_13" @@ -432,7 +432,7 @@ offset_right = 175.0 offset_bottom = 812.0 fname = "УМ1535А" rname = "A18" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_14" @@ -446,31 +446,17 @@ horizontal_alignment = 1 metadata/_edit_lock_ = true [node name="input_0" type="AnimatedSprite2D" parent="."] -position = Vector2(234, 177) +position = Vector2(456, 589) sprite_frames = SubResource("SpriteFrames_1wf07") -[node name="Label" type="Label" parent="input_0"] -offset_left = -15.0 -offset_top = 15.0 -offset_right = 53.0 -offset_bottom = 34.0 -text = "Вход ЕМС" - [node name="input_1" type="AnimatedSprite2D" parent="."] -position = Vector2(277, 177) +position = Vector2(207, 586) sprite_frames = SubResource("SpriteFrames_1wf07") [node name="output_0" type="AnimatedSprite2D" parent="."] -position = Vector2(381, 177) +position = Vector2(458, 476) sprite_frames = SubResource("SpriteFrames_1wf07") -[node name="Label" type="Label" parent="output_0"] -offset_left = -19.0 -offset_top = 14.0 -offset_right = 57.0 -offset_bottom = 33.0 -text = "Модуляция" - [node name="output_1" type="AnimatedSprite2D" parent="."] -position = Vector2(422, 177) +position = Vector2(210, 477) sprite_frames = SubResource("SpriteFrames_1wf07") diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 6c32f5a..7ad3b6d 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -34,15 +34,15 @@ func set_frame(node_frame: Node, val: int): node_frame.set_frame(val) func start_control() -> void: - set_default_state() + set_default_state(get_tree().get_nodes_in_group('default_reset'), get_tree().get_nodes_in_group('power_amplifier')) find_labels(self) -func set_default_state() -> void: - for group in get_tree().get_nodes_in_group('default_reset'): +static func set_default_state(default_reset_array_node: Array, power_amplifier_arr_node: Array) -> void: + for group in default_reset_array_node: group.state = STATE_VAL.NONE - for group in get_tree().get_nodes_in_group('power_amplifier'): + for group in power_amplifier_arr_node: group.state = STATE_VAL.NONE @@ -83,63 +83,18 @@ static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifi i_powapm.state = status -## Проверка температур УМ от УКП -static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> bool: - if power_amplifier.size() < 1: return false - const Constants: Dictionary = { - 'CONST_MIN_TEMP': -25, - 'MAXIMUM_CODE_ADC': 3796, - 'MINIMUM_CODE_AD': 2660, - 'TEMPERATURE_UKP_1': 47, - 'TEMPERATURE_UKP_2': 79, - } - const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD) - var ukp1_online: int = (status_prd[0] >> 2) & 1 - var ukp2_online = (status_prd[0] >> 3) & 1 - var all_temp_is_ok: bool = true - - if ukp1_online: - var tmp_1: int - var temperature_ukp_1: int - for i_temp in 6: - temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp) - tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3) - power_amplifier[i_temp].value1 = tmp_1 - if tmp_1>70: - all_temp_is_ok = false - - if power_amplifier.size() > 12: # Темпуратура от УМ литеры 1 - temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7) - tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3) - power_amplifier[6].value1 = tmp_1 - if tmp_1>70: - all_temp_is_ok = false - - if ukp2_online: - for i_temp in 6: - var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp) - var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3) - if power_amplifier.size() > 12: - power_amplifier[i_temp+7].value1 = tmp_2 - if tmp_2>70: - all_temp_is_ok = false - else: - power_amplifier[i_temp+6].value1 = tmp_2 - if tmp_2>70: - all_temp_is_ok = false - return all_temp_is_ok - - func on_press_device() -> void: var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') + var default_reset_array_node: Array = get_tree().get_nodes_in_group('default_reset') var module_fs_4: Node = $kasseta_FS_VD/ref_A6 var dou_4: Node = $dou4_A5 var module_fs_5: Node = $kasseta_FS_VD/ref_A2 var dou_5: Node = $dou5_A6 var for_control_result: Dictionary = { + 'control_is_over': unit_prd_v.flag_control_is_over, 'result_dic': unit_prd_v.control_results, 'power_dic': unit_prd_v.power_result, 'block_kasseta_y5_config': unit_prd_v.block_kasseta_y5_config, @@ -149,6 +104,7 @@ func on_press_device() -> void: 'node_ip_power_arr': node_ip_power_arr, 'fs_nodes': fs_nodes, 'power_amplifier': power_amplifier, + 'default_reset_array_node': default_reset_array_node, 'POWER_THRESHOLD': unit_prd_v.constants.POWER_THRESHOLD, 'name_prd': unit_prd_v.self_name, 'module_fs_4': module_fs_4, @@ -178,7 +134,9 @@ static func on_control_result(for_result_dic: Dictionary) -> void: if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug: power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR - ## If control is end + if not for_result_dic.control_is_over: + set_default_state(for_result_dic.default_reset_array_node, for_result_dic.power_amplifier) + return var result_dic: Dictionary = for_result_dic.result_dic for f in for_result_dic.fs_nodes: var fs_meta: String = f.get_meta('fs') diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn index 1910aa1..d2b7ead 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.tscn +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -41,7 +41,7 @@ offset_right = 15.0 offset_bottom = 30.0 script = ExtResource("1_c20s6") -[node name="maa2000_A22" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("2_xpo4b")] +[node name="maa2000_A22" parent="." groups=["power_supply"] instance=ExtResource("2_xpo4b")] layout_mode = 2 offset_left = 485.0 offset_top = 877.0 @@ -60,7 +60,7 @@ offset_bottom = 877.0 fname = "ДОУ-4" rname = "A5" -[node name="maa2000_A23" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("2_xpo4b")] +[node name="maa2000_A23" parent="." groups=["power_supply"] instance=ExtResource("2_xpo4b")] layout_mode = 2 offset_left = 8.0 offset_top = 877.0 @@ -203,7 +203,7 @@ patch_margin_bottom = 16 script = ExtResource("6_os4mt") fname = "Кассета П-1В" -[node name="ref_A19" parent="kasseta_P_1" groups=["default_reset", "power_supply"] instance=ExtResource("7_38u2b")] +[node name="ref_A19" parent="kasseta_P_1" groups=["power_supply"] instance=ExtResource("7_38u2b")] offset_left = 9.0 offset_top = 33.0 offset_right = 59.0 @@ -212,7 +212,7 @@ fname = "ИП9-50" rname = "A19" metadata/ip = "ip9_50_1" -[node name="ref_A20" parent="kasseta_P_1" groups=["default_reset", "power_supply"] instance=ExtResource("7_38u2b")] +[node name="ref_A20" parent="kasseta_P_1" groups=["power_supply"] instance=ExtResource("7_38u2b")] offset_left = 59.0 offset_top = 33.0 offset_right = 109.0 @@ -221,7 +221,7 @@ fname = "ИП9-50" rname = "A20" metadata/ip = "ip9_50_2" -[node name="ref_A21" parent="kasseta_P_1" groups=["default_reset", "power_supply"] instance=ExtResource("7_38u2b")] +[node name="ref_A21" parent="kasseta_P_1" groups=["power_supply"] instance=ExtResource("7_38u2b")] offset_left = 109.0 offset_top = 33.0 offset_right = 159.0 @@ -249,7 +249,7 @@ offset_right = 652.0 offset_bottom = 337.0 fname = "УМ1535А" rname = "A7" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_1" @@ -261,7 +261,7 @@ offset_right = 652.0 offset_bottom = 432.0 fname = "УМ1535А" rname = "A8" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_2" @@ -273,7 +273,7 @@ offset_right = 652.0 offset_bottom = 527.0 fname = "УМ1535А" rname = "A9" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_3" @@ -285,7 +285,7 @@ offset_right = 652.0 offset_bottom = 622.0 fname = "УМ1535А" rname = "A10" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_4" @@ -297,7 +297,7 @@ offset_right = 652.0 offset_bottom = 717.0 fname = "УМ1535А" rname = "A11" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_5" @@ -309,7 +309,7 @@ offset_right = 652.0 offset_bottom = 812.0 fname = "УМ1535А" rname = "A12" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_6" @@ -321,7 +321,7 @@ offset_right = 175.0 offset_bottom = 337.0 fname = "УМ1535А" rname = "A13" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_9" @@ -333,7 +333,7 @@ offset_right = 175.0 offset_bottom = 432.0 fname = "УМ1535А" rname = "A14" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_10" @@ -345,7 +345,7 @@ offset_right = 175.0 offset_bottom = 527.0 fname = "УМ1535А" rname = "A15" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_11" @@ -357,7 +357,7 @@ offset_right = 175.0 offset_bottom = 622.0 fname = "УМ1535А" rname = "A16" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_12" @@ -369,7 +369,7 @@ offset_right = 175.0 offset_bottom = 717.0 fname = "УМ1535А" rname = "A17" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_13" @@ -381,7 +381,7 @@ offset_right = 175.0 offset_bottom = 812.0 fname = "УМ1535А" rname = "A18" -value0_info = "Мощность, Вт" +value0_info = "Мощность" value1_info = "Температура,°C" metadata/um = "um_14" @@ -395,31 +395,17 @@ horizontal_alignment = 1 metadata/_edit_lock_ = true [node name="input_0" type="AnimatedSprite2D" parent="."] -position = Vector2(234, 177) +position = Vector2(457, 586) sprite_frames = SubResource("SpriteFrames_s5gcy") -[node name="Label" type="Label" parent="input_0"] -offset_left = -15.0 -offset_top = 15.0 -offset_right = 53.0 -offset_bottom = 34.0 -text = "Вход ЕМС" - [node name="input_1" type="AnimatedSprite2D" parent="."] -position = Vector2(277, 177) +position = Vector2(209, 586) sprite_frames = SubResource("SpriteFrames_s5gcy") [node name="output_0" type="AnimatedSprite2D" parent="."] -position = Vector2(381, 177) +position = Vector2(457, 482) sprite_frames = SubResource("SpriteFrames_s5gcy") -[node name="Label" type="Label" parent="output_0"] -offset_left = -19.0 -offset_top = 14.0 -offset_right = 57.0 -offset_bottom = 33.0 -text = "Модуляция" - [node name="output_1" type="AnimatedSprite2D" parent="."] -position = Vector2(422, 177) +position = Vector2(209, 482) sprite_frames = SubResource("SpriteFrames_s5gcy") diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index 669b072..1b9b7f1 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -35,7 +35,7 @@ signal pressed(control: PanelContainer) if not is_inside_tree(): return $margin/vbox/grid1/level7.value = v - $margin/vbox/grid1/level7.tint_progress = Color.RED if v >= 70 else Color.GOLD if v >= 60 else Color.WHITE + $margin/vbox/grid1/level7.tint_progress = Color.RED if v >= 50 else Color.GOLD if v >= 40 else Color.WHITE @export var min_value0: float: @@ -273,8 +273,9 @@ theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") script = SubResource("GDScript_oj3k3") textures = [ExtResource("1_n1aqt"), ExtResource("2_rim3u"), ExtResource("3_3w8fg")] value0 = [20.0, 30.0, 40.0, 50.0, 60.0, 70.0] +min_value1 = -40.0 max_value0 = 1400.0 -max_value1 = 70.0 +max_value1 = 60.0 step0 = 1.0 step1 = 1.0 value_name0 = "P,%" @@ -475,9 +476,10 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…70.00" +Диапазон: -40.00…70.00" mouse_filter = 0 -max_value = 70.0 +min_value = -40.0 +max_value = 60.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 diff --git a/scenes/контроль/блок-к.tscn b/scenes/контроль/блок-к.tscn index 9156160..be62235 100644 --- a/scenes/контроль/блок-к.tscn +++ b/scenes/контроль/блок-к.tscn @@ -259,8 +259,10 @@ theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") script = SubResource("GDScript_oj3k3") textures = [ExtResource("1_uojqc"), ExtResource("2_a8ar3"), ExtResource("3_xwd13")] value0 = [20.0, 30.0, 40.0, 50.0, 60.0, 70.0] +value1 = -40.0 +min_value1 = -40.0 max_value0 = 1400.0 -max_value1 = 70.0 +max_value1 = 60.0 step0 = 1.0 step1 = 1.0 value_name0 = "P,%" @@ -363,10 +365,12 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 0.00 -Диапазон: 0.00…70.00" +Текущее: -40.00 +Диапазон: -40.00…70.00" mouse_filter = 0 -max_value = 70.0 +min_value = -40.0 +max_value = 60.0 +value = -40.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 diff --git a/scenes/контроль/кассета-п-2.tscn b/scenes/контроль/кассета-п-2.tscn index abe840d..cf2dd65 100644 --- a/scenes/контроль/кассета-п-2.tscn +++ b/scenes/контроль/кассета-п-2.tscn @@ -14,7 +14,7 @@ patch_margin_right = 16 patch_margin_bottom = 16 script = ExtResource("2_mdnod") -[node name="ref_A26" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("3_4a27g")] +[node name="ref_A26" parent="." groups=["power_supply"] instance=ExtResource("3_4a27g")] offset_left = 10.0 offset_top = 30.0 offset_right = 60.0 @@ -23,7 +23,7 @@ fname = "ИП9-50" rname = "A22" metadata/ip = "ip9_50_3" -[node name="ref_A23" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("3_4a27g")] +[node name="ref_A23" parent="." groups=["power_supply"] instance=ExtResource("3_4a27g")] offset_left = 60.0 offset_top = 30.0 offset_right = 110.0 diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index b77ce24..9a6497d 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -64,7 +64,7 @@ const SETTING_TABLE = [ ['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'], ['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ], ['Период опроса состояния АФСП, секунды', TableEdit, TableEdit, 'Время в секундах' ], - ['уареп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'], + ['уарэп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'], ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], ] diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 98bb536..2079510 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -31,7 +31,8 @@ var strob_band_begin: float ## Ширина строба в моме var strob_dir_begin: float ## Направление антенны в момент начала перетаскивания. var strob_width_begin: float ## Ширина строба по углу в момент начала перетаскивания. var view_mode: MapViewMode ## Режим отображения карты -var thrs_dict: Dictionary ## Ссылка на словарь целей +var thrs_dict: Dictionary ## Ссылка на словарь целей +var gos_flag = true ## Флаг работать по своим целям var color_ecm: Color var color_select: Color var color_emit: Color @@ -92,6 +93,7 @@ func on_enter_tree() -> void: call_deferred('on_button_strobe_pressed') func on_settings_changed(): + gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true) color_emit = ProjectSettings.get_setting('application/interfer/emit_color', Color(0.58, 0.47, 0.51, 1.0)) color_ecm = ProjectSettings.get_setting('application/interfer/interfer_color', Color(0.58, 0.47, 0.51, 1.0)) color_select = ProjectSettings.get_setting('application/interfer/select_color', Color(1.0, 1.0, 1.0, 1.0)) @@ -109,9 +111,7 @@ func on_settings_changed(): ## Обработчик сигнала изменения списка целей. func on_threats_resized(ths: Dictionary): - $count_all_pad/count_all.text = '%02d' % ths.size() - var c: int = ths.values().filter(func(th: threats.Threat): return th.proto != '').size() - $count_danger_pad/count_danger.text = '%02d' % c + count_threats(ths) thrs_dict = ths @@ -531,7 +531,6 @@ func update_fs_colors(): $btn_activate.self_modulate = Color.WHITE - func unsel_fs_all(need_btns_off: bool): fs_selected.clear() update_fs_colors() @@ -625,6 +624,14 @@ func _on_btn_all_work_pressed() -> void: func on_th_aoa_update(ths): + count_threats(ths) + + +func count_threats(ths): $count_all_pad/count_all.text = '%02d' % ths.size() - var c: int = ths.values().filter(func(th: threats.Threat): return th.proto != '').size() + var c: int = 0 + if gos_flag: + c = ths.values().filter(func(th: threats.Threat): return th.proto != '').size() + else: + c = ths.values().filter(func(th: threats.Threat): return ((th.proto != '') and th.proto not in interfer.gos_protocols)).size() $count_danger_pad/count_danger.text = '%02d' % c diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 3381836..cefdb43 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -125,6 +125,7 @@ class Interfer: var modulation: bool ## Модуляция для включения усилителей var um: float ## Угол места для помехи. var nmfs: int = 0 ## Номер модуля ФС в нумерации СТЦ + var priority: int = 0 ## Приоритет помехи func _to_string() -> String: return 'номер: %d название: %s частота: %0.1f МГц пеленг: %0.1f гр.' % [ispp, ITERFER_MODE[krp][0], params['freq'], kni] @@ -366,13 +367,23 @@ func map_mpchf_to_seczaps(unit_instance: unit.Unit, _seczaps: Dictionary): ## Вызыватся, когда пользователь выбрал помеху и выбраны цели. func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> void: for item in sel_threats: + if auto_enabled: + var need_continue = false + for ecm in ecms.values(): + if ecm.nmfs == item.nmfs: + if item.priority > ecm.priority: + interfer_off(ecm, u) + elif item.priority < ecm.priority: + need_continue = true + break + if need_continue: continue var param: Dictionary = {} var kni: float = item.aoa - course if kni < 0: kni += 360.0 var id = item.id param['freq'] = item.freq - param['width'] = item.width + param['width'] = item.width * 1.5 if (item.rkrp != '') and item.fflags.rkrp and auto_enabled: var krp = get_krp(item) if krp != '': @@ -454,13 +465,16 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf ecm = Interfer.new() ecm.ispp = ispp ecms[ispp] = ecm + ecm.modulation = emit_enable ecm.kni = kni ecm.krp = interfer_name ecm.params = param ecm.powp = power ecm.source_interfer = source_interfer - ecm.modulation = emit_enable ecm.um = param.get('um', 15.0) # Значение по умолчанию + if source_interfer == SOURCE_INTERFER[0]: + if thrs_dict.has(dict[ispp]): + ecm.priority = thrs_dict[dict[ispp]].priority call_ecm_proc(ecm) var set_nmfs_ok = set_nmfs(ecm) if set_nmfs_ok != Error.OK: @@ -477,7 +491,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf func send_ecm(ecm, unit0) -> void: if ecm.krp != INTERFER_OFF: - if not emit_enable: + if not ecm.modulation: ecm.svk = 0 call_deferred('emit_signal', 'interfer_update', ecm) return @@ -512,8 +526,10 @@ func push_id(id: int) -> void: id_array.sort() -func on_emit_changed(state, _ecms) -> void: +func on_emit_changed(state, ecms) -> void: emit_enable = state + for ecm in ecms.values(): + ecm.modulation = state func call_all_diap(ecm, ecm_params: Dictionary): @@ -561,8 +577,12 @@ func on_threats_update(threat, ecms, unit_caps): for ecm_i in thrs.keys(): if thrs[ecm_i] == th_id: ecm = ecms[ecm_i] + ecm.priority = threat.priority ecm.params['freq'] = threat.freq - ecm.params['width'] = threat.width + var width = threat.width * 1.5 + if width < settings.WIDTH_MIN: + width = settings.WIDTH_MIN + ecm.params['width'] = width if (threat.rkrp != '') and threat.fflags.rkrp and auto_enabled: var krp = get_krp(threat) if krp != '': @@ -604,7 +624,7 @@ func set_rparams(threat: threats.Threat, params: Dictionary): if threat.rparams.has('width'): params['width'] = threat.rparams['width'] else: - params['width'] = threat.width + params['width'] = threat.width * 1.5 if threat.rparams.has('filename'): params['filename'] = threat.rparams['filename'] diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 23c6476..acaa7fb 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -2,6 +2,7 @@ class_name TestPRD extends Node # Константы const CONFIG_PATH = "user://config/setting_prd_control.json" +const DEFAULT_CONFIG_PATH = "res://config/setting_prd_control.json" const RAY_m5: String = "RAY_m5" const RAY_5: String = "RAY_5" @@ -61,6 +62,7 @@ var flag_fs_status_ok: bool = false var flag_si_fs_input: bool = false var flag_si_fs_output: bool = false var flag_in_control: bool = false +var flag_control_is_over: bool = false var unit_prd: Object var control_timer: Timer = Timer.new() var ems_6666_timer: Timer = Timer.new() @@ -109,7 +111,24 @@ func _get_ray_key(machine_state: int) -> String: return _ray_state_mapping.get(machine_state, "") +func _ensure_config_exists() -> bool: + DirAccess.make_dir_recursive_absolute("user://config") + if FileAccess.file_exists(CONFIG_PATH): + return true + if not FileAccess.file_exists(DEFAULT_CONFIG_PATH): + return false + var src := FileAccess.open(DEFAULT_CONFIG_PATH, FileAccess.READ) + var dst := FileAccess.open(CONFIG_PATH, FileAccess.WRITE) + if src == null or dst == null: + return false + dst.store_string(src.get_as_text()) + src.close() + dst.close() + return true + + func _load_configuration() -> void: + if not _ensure_config_exists(): return var config_file = FileAccess.open(CONFIG_PATH, FileAccess.READ) if config_file: var json_text = config_file.get_as_text() @@ -184,13 +203,14 @@ func on_data_received(unit_pribor: Object) -> void: return _process_dkm_status(status) - if current_litera != 0: + if current_litera != 0: # Формирование мощностей в литерах var tek_litera: Dictionary = power_for_litera[current_litera] var interes = _get_ray_key(state) if interes != '': tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_litera, tek_litera[_get_ray_key(state)]) power_for_litera[current_litera] = tek_litera + var ems_input_1: int var ems_input_2: int var ems_input_lit_1: int @@ -202,17 +222,18 @@ var ems_output_lit_1: int func _get_data_index(key: String) -> int: return data_indices.get(key, -1) + func socket_status_ems_g(packet_form_yau_07: PackedByteArray) -> void: if self_name in ['1н', '2н', '3н', '4н']: ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 9)) != 0 ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 10)) != 0 if self_name in ['1в', '2в', '3в', '4в']: ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 11)) != 0 - ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 12)) != 0 + ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 12)) != 0 if self_name in ['1к', '2к', '3к', '4к']: - ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 13)) != 0 - ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 14)) != 0 ems_input_lit_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 8)) != 0 + ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 13)) != 0 + ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 14)) != 0 ems_output_1 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 4)) != 0 ems_output_2 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 5)) != 0 @@ -247,7 +268,6 @@ func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> vo func state_control_machine() -> void: match state: STATE_MACHINE.INIT: - print("Start control for %s device %s litera" % [self_name, current_litera]) _handle_init_state() STATE_MACHINE.FS_TURN_ON: _handle_fs_turn_on_state() @@ -335,15 +355,24 @@ func state_control_machine() -> void: STATE_MACHINE.STOP_CONTROL: _handle_stop_control_state() ## В машине состояний вызов изменения состояния прогресс бара контроля - progressbar_status() + if block_kasseta_y5_config['yau07']: + progressbar_status() ## 'Выполняется инициализация ФС-%s' % current_litera func _handle_init_state() -> void: if current_litera in [1, 2, 3, 4, 5, 6, 7]: - if not ecms.size(): + var flag_ecm: bool = false + for key in ecms: + var params = ecms[key].params.freq + if fs_parameters[current_litera].freq == params: + var kni = ecms[key].kni + if pribor_config[self_name].angle == kni: + flag_ecm = true + if not flag_ecm: state = STATE_MACHINE.FS_TURN_ON else: + flag_control_is_over = true control_results = on_control_result(block_ip_config, control_results) power_result = prep_power(power_for_litera, self_name) emit_signal('control_is_over') @@ -524,12 +553,12 @@ func setup_timer() -> void: func on_mode_changed(in_tree: bool) -> void: flag_in_control = in_tree if not in_tree: ## TODO: Дополнительная проверка если контроль идет, если нет, то смысла вызывать нет + flag_control_is_over = false progress_value = 0 machine_timer.stop() state = STATE_MACHINE.INIT _handle_fs_turn_off_state() #prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]]) - func _process_dkm_status(status: PackedByteArray) -> void: diff --git a/scripts/settings.gd b/scripts/settings.gd index 17e62c9..15d0ddc 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -51,7 +51,7 @@ var UnitProfiles: Dictionary[StringName, Array] = { \ const FREQ_MAX: = 6000.0 const FREQ_MIN: = 400.0 const WIDTH_MAX: = 120.0 -const WIDTH_MIN: = 0.0 +const WIDTH_MIN: = 5.0 const DUR_MAX: = 1000000.0 const PERIOD_MAX: = 1000000.0 const UM_MIN: = -5.0 diff --git a/scripts/threats.gd b/scripts/threats.gd index 5f39f51..1070cd2 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -29,7 +29,8 @@ class Threat: var selected: bool ## Флаг, что цель выбрана. var auto_selected: bool = false ## Флаг автомата для целей var emit_state: int = 0 ## 0 - подавление не назначено, 1 - назначено, 2 - выполняется - var nmfs:int ## Индекс модуля ФС, в зону действия которого попала цель + var nmfs: int ## Индекс модуля ФС, в зону действия которого попала цель + var priority: int ## Приоритет опасности цели func _init(): clear_fflags() func _to_string() -> String: return 'номер: %d пеленг: %0.1f частота: %0.1f МГц' % [id, aoa, freq] @@ -142,6 +143,10 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary): th.clear_fflags() th.set_from_dic(dic_th) th.tick_rx = unit.tick + if th.fflags.proto and th.proto != '': + th.priority = 1 + else: + th.priority = 0 call_deferred('emit_signal', 'threat_update', th) else: var th: = Threat.new() diff --git a/table/table.gd b/table/table.gd index 0392d5a..14037c0 100644 --- a/table/table.gd +++ b/table/table.gd @@ -325,8 +325,9 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void: var node = nodes[node_key] var selector = nodes[selector_key] nodes.erase(selector_key) - if is_instance_valid(selector): - node.remove_child(selector) + if is_instance_valid(node) and is_instance_valid(selector): + if selector.get_parent() == node: + node.remove_child(selector) selector.queue_free() else: push_warning('обращение к удалённому элементу \"%s\"' % selector_key)