diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index b1a72d9..733550e 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -46,6 +46,7 @@ const COLUMN_NAME = 1 const COLUMN_AOA = 2 const COLUMN_STATE = 3 +var course = 0.0 ## Курс корабля func on_rto_threat_unsel(_th_id): $table.clear_rows_selected() @@ -88,6 +89,8 @@ func _ready(): interfer.connect('interfer_recommendate', Callable(self, 'on_interfer_recommendate')) $table.connect('row_pressed', Callable(self, 'on_row_pressed')) call_deferred('init_table') + var unit_nav = network.get_unit_instance('навигация') + unit_nav.connect('data_received', on_navi_data_received) func init_table(): @@ -148,7 +151,7 @@ func map_th_to_row(ecm) -> Array: row[COLUMN_NAME] = '' if INTERFER_NAMES.has(ecm.krp): row[COLUMN_NAME] = '%s' % INTERFER_NAMES[ecm.krp] - row[COLUMN_AOA] = '%s' % ecm.kni + row[COLUMN_AOA] = '%s' % (ecm.kni + course) row[COLUMN_STATE] = '' if INTERFER_STATE.has(ecm.svk): row[COLUMN_STATE] = '%s' % INTERFER_STATE[ecm.svk] @@ -162,3 +165,7 @@ func on_interfer_recommendate(ecm): var sel_ecm = $table.get_node_user_data(0, sel_rows[0]) if ecm == sel_ecm: signaller.emit_signal('interfer_selected', ecm) + + +func on_navi_data_received(data: Dictionary): + course = data.get('k', 0.0) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 94ec263..86c3cdb 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -33,6 +33,8 @@ var view_mode: MapViewMode ## Режим отображения к var color_ecm: Color var color_select: Color +var course = 0.0 ## Курс корабля + signal drag_begin ## Вызывается в момент начала перетаскивания. signal drag_continue ## Вызывается во время продолжения перетаскивания. signal drag_end ## Вызывается в момент завершения перетаскивания. @@ -165,7 +167,8 @@ func _ready(): func on_navi_data_received(data: Dictionary): - $canvas.set_canvas_rotation(data.get('k', 0.0)) + $canvas.set_canvas_rotation(data.get('k', 0.0)) + course = data.get('k', 0.0) func on_user_panning(): @@ -417,7 +420,7 @@ func sel_fs_sector(event): if (event.button_index == MOUSE_BUTTON_LEFT) or (event.button_index == MOUSE_BUTTON_RIGHT): var center: Vector2 = $tilemap.position var center_offset: Vector2 = ProjectSettings.get_setting('application/interfer/center_offset', Vector2i(0, 25)) - var angle: float = event.position.angle_to_point(center + center_offset) * 180/PI - 45.0 + var angle: float = event.position.angle_to_point(center + center_offset) * 180/PI - 45.0 - course if angle < 0: angle += 360 var distance: float = event.position.distance_to(center + center_offset) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index bbb9f01..dca53d6 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -53,6 +53,7 @@ colors = PackedColorArray(1, 1, 1, 0.352941, 1, 1, 1, 0) [sub_resource type="SystemFont" id="SystemFont_5ffal"] generate_mipmaps = true +subpixel_positioning = 0 [node name="Работа" type="Panel"] script = ExtResource("1_niok4") @@ -345,7 +346,7 @@ text = "−" [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] [connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"] -[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] [connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] +[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] [connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"] [connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"] diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 988b240..e8c08f0 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -308,7 +308,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v var id = item.id param['freq'] = item.freq param['width'] = item.width - if (item.rkrp != '') and item.fflags.rkrp: + if (item.rkrp != '') and item.fflags.rkrp and auto_enabled: var krp = get_krp(item) if krp != '': interfer_name = krp @@ -324,12 +324,15 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v var kni: float = item[0] var id = item[3] var th = null - if not interfer_name in EXCLUDE_INTERFER: - th = find_threat(item[1], kni) + th = find_threat(item[1], kni) if th != null: - param['freq'] = th.freq - param['width'] = th.width - if (th.rkrp != '') and th.fflags.rkrp: + if not interfer_name in EXCLUDE_INTERFER: + param['freq'] = th.freq + param['width'] = th.width + else: + param['freq'] = item[1] + param['width'] = item[2] + if (th.rkrp != '') and th.fflags.rkrp and auto_enabled: var krp = get_krp(th) if krp != '': interfer_name = krp @@ -518,7 +521,7 @@ func on_threats_update(threat, ecms, unit_caps): ecm = ecms[ecm_i] ecm.params['freq'] = threat.freq ecm.params['width'] = threat.width - if (threat.rkrp != '') and threat.fflags.rkrp: + if (threat.rkrp != '') and threat.fflags.rkrp and auto_enabled: var krp = get_krp(threat) if krp != '': ecm.krp = krp diff --git a/scripts/prd.gd b/scripts/prd.gd index 567156a..91f78de 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -86,7 +86,7 @@ const FS_PRD: Dictionary = { var fs_dict: Dictionary ## Словарь с модулями ФС var prd_dict: Dictionary ## Словарь с приборами ПРД - +var course = 0.0 ## Курс корабля var fs_caps_id: Dictionary ## Словарь соответствия номеров ФС от КАПС РПБ внутрипрограммной нумерации @@ -185,6 +185,7 @@ class PRD: unit_yau07.connect('command_done', Callable(self, 'on_command_done')) unit_yau07.connect('line_changed', Callable(self, 'on_line_changed')) + func on_command_done(u): if yemsg_board.state_board != yemsg_board.WAIT or yemsg_board.state_cmd != yemsg_board.WAIT: yemsg_board.on_command_done(u) @@ -284,6 +285,8 @@ func _ready() -> void: unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received')) signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(PrdState.CONTROL)) signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(PrdState.WORK)) + var unit_nav = network.get_unit_instance('навигация') + unit_nav.connect('data_received', on_navi_data_received) func get_fs_param(index: int) -> Array: @@ -388,3 +391,7 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb): func on_mode_changed(changed_mode: int) -> void: for pdr in prd.prd_dict.values(): pdr.state = changed_mode + + +func on_navi_data_received(data: Dictionary): + course = data.get('k', 0.0)