diff --git a/project.godot b/project.godot index df907a51..ba405654 100644 --- a/project.godot +++ b/project.godot @@ -27,6 +27,7 @@ config/map_server_addr="https://b.tile.openstreetmap.org" interfer/resend_timeout=1000.0 config/map_image_size_rto=Vector2i(512, 512) config/map_image_size_rls=Vector2i(1024, 1024) +interfer/center_offset=Vector2(0, 25) [autoload] @@ -80,6 +81,7 @@ enabled=PackedStringArray() [global] map_server_addr=false +center_offset=Vector2(0, 0) [gui] diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index c932ed73..2aa82382 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -23,3 +23,4 @@ func get_radius_inner_0() -> float: return material.get('shader_parameter/radiu func get_radius_inner_1() -> float: return material.get('shader_parameter/radius_inner_1') func set_view_mode(val: int): material.set('shader_parameter/mode', val); +func set_band_colors(val: Array): material.set('shader_parameter/ant_band_c', val) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index db6548e8..246bb65e 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -36,7 +36,34 @@ signal drag_begin ## Вызывается в момент начала пе signal drag_continue ## Вызывается во время продолжения перетаскивания signal drag_end ## Вызывается в момент завершения перетаскивания +const fs_sectors: Dictionary = { + 0: [0.0, 90.0], + 1: [90.0, 180.0], + 2: [180.0, 270.0], + 3: [270.0, 360.0] +} +const fs_band_rto: Dictionary = { + 0: [200.0, 250.0], + 1: [250.0, 300.0], + 2: [300.0, 350.0], + 3: [350.0, 400.0], + 4: [400.0, 450.0], + 5: [450.0, 500.0], + 6: [500.0, 550.0], +} + +const fs_band_rls: Dictionary = { + 0: [480.0, 490.0], + 1: [490.0, 500.0], + 2: [500.0, 510.0], + 3: [510.0, 520.0], + 4: [520.0, 530.0], + 5: [530.0, 540.0], + 6: [540.0, 550.0], +} + +var fs_band = fs_band_rto ## Состояние перетаскивания enum DragFSM { DRAG, ## В процессе @@ -52,7 +79,12 @@ func on_threats_resized(threats: Dictionary): $count_all_pad/count_all.text = '% func on_threat_selected(th, ecm_btns): on_rto_threat_sel(th.id, ecm_btns) -func on_button_view_toggled(toggled: bool): signaller.emit_signal('map_mode_changed', int(toggled)) +func on_button_view_toggled(toggled: bool): + signaller.emit_signal('map_mode_changed', int(toggled)) + if toggled: + fs_band = fs_band_rls + else: + fs_band = fs_band_rto ## @@ -292,4 +324,26 @@ func _on_zoom_complete(zoom: int) -> void: # Обработчик нажатия по сектору формирователя сигналов func sel_fs_sector(event): - print_debug(event.position) + 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 + if angle < 0: + angle +=360 + var distance: float = event.position.distance_to(center + center_offset) + var sector: int + var band: int + for sec in fs_sectors.values(): + if angle >= sec[0] and angle <= sec[1]: + sector = fs_sectors.find_key(sec) + for diap in fs_band.values(): + if distance >= diap[0] and distance <= diap[1]: + band = fs_band.find_key(diap) + var colors: Array = [] + var color0 = Vector3(0.38, 0.47, 0.51) + var color1 = Vector3(0.39, 0.44, 0.50) + for i in range(14): + colors.append(color0) + colors.append(color1) + $canvas.set_band_colors(colors) + print_debug(sector, band) + diff --git a/shaders/antenas.tres b/shaders/antenas.tres index 600570f0..4b51e8fd 100644 --- a/shaders/antenas.tres +++ b/shaders/antenas.tres @@ -41,6 +41,8 @@ const float ant_band_r1_4[] = {450.0, 530.0}; const float ant_band_r1_5[] = {500.0, 540.0}; const float ant_band_r1_6[] = {550.0, 550.0}; +const vec4 ant_band_colors[] = {vec4(0.38, 0.47, 0.51, 0.4),vec4(0.38, 0.47, 0.51, 0.4), vec4(0.38, 0.47, 0.51, 0.4), vec4(0.38, 0.47, 0.51, 0.4)}; +uniform vec3 ant_band_c[28]; const float d4 = 90.0; const float ds = 1.0; @@ -108,3 +110,4 @@ shader_parameter/radius_inner_0 = 200.0 shader_parameter/radius_inner_1 = 480.0 shader_parameter/radius_outter = 550.0 shader_parameter/mode = 0 +shader_parameter/ant_band_c = PackedVector3Array(0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5, 0.38, 0.47, 0.51, 0.39, 0.44, 0.5)