From 04021d307ee56907742710e0912a33ee98bf934f Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 22 Apr 2025 14:34:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=A6=D0=B5=D0=BD=D1=82=D1=80=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B0=D1=80=D1=82?= =?UTF-8?q?=D1=8B=20=D0=BF=D0=BE=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B8?= =?UTF-8?q?=D0=BC=20=D0=BA=D0=BE=D0=BE=D1=80=D0=B4=D0=B8=D0=BD=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/tilemap/tilemap.gd | 12 ++++++++++++ scenes/работа/работа.gd | 8 +++++++- scripts/signaller.gd | 12 +++++++++--- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index 8e1f1e79..89f10057 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -23,6 +23,8 @@ class_name MercatorTileMap @export_color_no_alpha() var back_color: = Color.BLACK @export var animation_time: float = 1.0 const default_size: = 400.0 +var is_centered: = false + @export var size: Vector2i = Vector2i(default_size, default_size): set(v): @@ -105,9 +107,17 @@ func _ready(): var key = settings.get_unit_key('навигация') var unit_nav = network.units[key] unit_nav.connect('data_received', on_data_received) + signaller.conn(signaller.map_centered, on_map_centered) + + +func on_map_centered(toggle_centered: bool): + is_centered = toggle_centered + print_debug(is_centered) func on_data_received(coords: Dictionary): + if not is_centered: + return if coords.has_all(['latitude', 'longitude']): set_coordinates(coords['longitude'], coords['latitude']) @@ -197,6 +207,8 @@ func _input(e): _xyz.x += diff.x _xyz.y += diff.y queue_redraw() + if diff.length() > 0: + signaller.emmit(signaller.map_user_panning) ## Возвращает true, если видна область за краем карты diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index c127a890..41ee00bc 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -131,10 +131,15 @@ func _ready(): interfer.connect('interfer_update', Callable(self, 'on_interfer_new')) signaller.connect('interfer_prinuditelno', Callable(self, 'on_chk_interfer_prinuditelno')) signaller.connect('fs_update_state', Callable(self, 'on_fs_update_state')) - on_btn_center_toggled(false) + signaller.connect('map_user_panning', Callable(self, 'on_user_panning')) + on_btn_center_toggled(true) on_btn_activate_toggled(false) +func on_user_panning(): + $btn_center.button_pressed = false + + func on_chk_interfer_prinuditelno(_interfer_sectors): $chk_auto.set_pressed_no_signal(false) on_value_changed(false) @@ -517,6 +522,7 @@ func on_fs_update_state(_fs_dict: Dictionary): func on_btn_center_toggled(toggled_on: bool) -> void: $btn_center.tooltip_text = 'Центрирует карту на текущие координаты (%s)' % ('включено' if toggled_on else 'отключено') + signaller.emit_signal('map_centered', toggled_on) func on_btn_activate_toggled(toggled_on: bool) -> void: diff --git a/scripts/signaller.gd b/scripts/signaller.gd index 447a12e9..b3a65979 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -133,13 +133,19 @@ signal interfer_selected(ecm: interfer.Interfer) signal fs_selected(ecm: interfer.Interfer) -## Вызывается при изменении координат карты.[br] +## Вызывается при смещении карты пользователем.[br] ## [param lan], [param lat] - Вновь установленные координаты. -signal map_coords_changed(lan: float, lat: float) +signal map_user_panning() + + +## Вызывается при изменении режима центрирования карты.[br] +## [param is_centered] - Карта центрирована по текущим координатам ([b]true[/b] +## - да, [b]false[/b] - нет) +signal map_centered(is_centered: bool) ## Вызывается при изменении размера изображения для отображения карты.[br] -## [param mode] - Вновь установленный режим. +## [param mode] - Вновь установленный режим/ signal map_mode_changed(mode: int)