diff --git a/scenes/tabs-switch/tab-switch.gd b/scenes/tabs-switch/tab-switch.gd index 66f14765..5d8dba77 100644 --- a/scenes/tabs-switch/tab-switch.gd +++ b/scenes/tabs-switch/tab-switch.gd @@ -27,3 +27,7 @@ func _on_tab_changed(tab) -> void: func on_setting_changed(): var ext_cu = ProjectSettings.get_setting('application/config/Внешнее управление', false) get_parent().get_node('remote_control').visible = ext_cu + + +func _on_button_trenaj_toggled(toggled_mode: bool) -> void: + signaller.emit_signal('режим_тренаж', toggled_mode) diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index 477a9670..d9ab0277 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://3slb0i3pvowc"] +[gd_scene load_steps=15 format=3 uid="uid://3slb0i3pvowc"] [ext_resource type="Script" uid="uid://bvo6tcreqyuex" path="res://scenes/tabs-switch/tab-switch.gd" id="1_fg0vd"] [ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа/работа.tscn" id="2_u7p16"] @@ -20,6 +20,8 @@ [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o1r22"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_imu1q"] + [node name="panel" type="Panel"] offset_right = 1600.0 offset_bottom = 1200.0 @@ -95,4 +97,17 @@ text = "Внешнее управление" horizontal_alignment = 1 vertical_alignment = 1 +[node name="тренаж_режим" type="Button" parent="."] +layout_mode = 0 +offset_left = 1404.0 +offset_right = 1501.0 +offset_bottom = 27.0 +tooltip_text = "Задействовать режим Тренаж" +focus_mode = 0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_styles/normal = SubResource("StyleBoxFlat_imu1q") +toggle_mode = true +text = "Тренаж" + [connection signal="tab_changed" from="tab_switch" to="tab_switch" method="_on_tab_changed"] +[connection signal="toggled" from="тренаж_режим" to="tab_switch" method="_on_button_trenaj_toggled"] diff --git a/scenes/журнал/журнал.gd b/scenes/журнал/журнал.gd index 401ad0d8..2fcb0369 100644 --- a/scenes/журнал/журнал.gd +++ b/scenes/журнал/журнал.gd @@ -7,6 +7,7 @@ func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit_inst.name, msg]) func on_interfer_off(ecm, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()]) func on_set_program_mode(msg: String): log.message(Logger.INFO, msg) +func on_mode_trenazh(val: bool): log.message(Logger.INFO, 'Режим \"Тренаж\" %s' % ['отменён', 'задейсвован'][int(val)]) func on_interfer_new(ecm, msg: String): if ecm.krp != interfer.INTERFER_OFF: @@ -33,6 +34,9 @@ func _ready() -> void: signaller.conn(signaller.режим_эмс, Callable(log, 'info').bind('Программа в режиме \"ЭМС\"')) signaller.conn(signaller.режим_журнал, Callable(log, 'info').bind('Программа в режиме \"Журнал\"')) signaller.conn(signaller.режим_контроль, Callable(log, 'info').bind('Программа в режиме \"Контроль\"')) + signaller.conn(signaller.режим_тренаж, Callable(self, 'on_mode_trenazh')) + + func _on_clear_button_down() -> void: diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 514b9d7b..988b240d 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -90,6 +90,7 @@ var cu: Dictionary ## Словарь воздействий для 5 var thrs_dict: Dictionary ## Ссылка на словарь целей var auto_enabled: bool = false ## Режим автомата var emit_enable: bool = true ## Разрешить излучение +var trenazh_mode: bool = false ## Переключение режима Тренаж ## Сеанс помехи. class Interfer: @@ -189,6 +190,7 @@ func _ready() -> void: 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)) + signaller.connect('режим_тренаж', on_trenazh_mode) threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps)) threats.connect('threats_resized', Callable(self, 'on_threats_resized')) threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms, unit_caps)) @@ -196,6 +198,9 @@ func _ready() -> void: unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps)) +func on_trenazh_mode(val: bool): trenazh_mode = val + + func on_nav_data_received(coords: Dictionary, unit_caps): var ship_time = Time.get_datetime_dict_from_system() var data_to_json = { @@ -238,7 +243,7 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v ecm.kni = thr.aoa send_ecm(ecm, unit_instance) signaller.emit_signal('fs_update_color', ecms) - prd.update_fs_state(ecms) + prd.update_fs_state(ecms, trenazh_mode) if not auto_enabled: return diff --git a/scripts/prd.gd b/scripts/prd.gd index 30cfe54f..0e8e807d 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -318,7 +318,7 @@ func find_fs_index(aoa: float, freq: int, fs_index_arr: Array): ## Обновление состояния модулей формирователя сигналов -func update_fs_state(ecms): +func update_fs_state(ecms, trenaz_mode: bool): for fs in fs_dict.values(): ## Запрет модуляции для всех ФС fs.set_modulation(false) for ecm in ecms.values(): ## Выставление состояния помехи в ФС @@ -330,7 +330,8 @@ func update_fs_state(ecms): for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД if prd_module.state != PrdState.WORK: continue if not prd_module.unit_yau07.online: continue - prd_module.cmd_array.append([prd_module.unit_yau07.CmdCode.WRITE_ISA, [prd_module.yemsg_board.base_addr_isa, 6666]]) + if not trenaz_mode: + prd_module.cmd_array.append([prd_module.unit_yau07.CmdCode.WRITE_ISA, [prd_module.yemsg_board.base_addr_isa, 6666]]) var um_data_array: Array = [] for fs in prd_module.fs_dic.values(): if not prd_module.ug_online: continue diff --git a/scripts/signaller.gd b/scripts/signaller.gd index d96201fd..82d8cf19 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -34,6 +34,9 @@ signal режим_эмс() ## Вызывается при переходе в режим [b]Настройка[/b]. signal режим_настройки() +## Вызывается при включении/отключении режима [b]Тренаж[/b].[br] +## [param val] - [b]true[/b] тренаж включён. +signal режим_тренаж(val: bool) ## Вызывается, когда оператор переводит программу в режим [b]Автомат выбора цели и помехи[/b]. signal full_auto()