Merge remote-tracking branch 'sasha/master'

This commit is contained in:
MaD_CaT
2025-12-24 14:53:34 +03:00
48 changed files with 1706 additions and 941 deletions

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwfdur4we51wo"
path="res://.godot/imported/2разъединение.png-a5736ca86ce553a4d764d6fc09130f8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/2разъединение.png"
dest_files=["res://.godot/imported/2разъединение.png-a5736ca86ce553a4d764d6fc09130f8a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bajrbvv7twq7m"
path="res://.godot/imported/2соединение.png-b014241f07700023165f09936094354c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/2соединение.png"
dest_files=["res://.godot/imported/2соединение.png-b014241f07700023165f09936094354c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c73tjrn8gr00o"
path="res://.godot/imported/Передатчик.png-a9919ed2f6d748be55f63a536bcda2ff.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/Передатчик.png"
dest_files=["res://.godot/imported/Передатчик.png-a9919ed2f6d748be55f63a536bcda2ff.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
data/Приёмник.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c6etralq2tvxg"
path="res://.godot/imported/Приёмник.png-37dec39ffb59b71e3909414fe8f5fd1e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/Приёмник.png"
dest_files=["res://.godot/imported/Приёмник.png-37dec39ffb59b71e3909414fe8f5fd1e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://6ar7sux3vcv1"
path="res://.godot/imported/Состояние РЭС 2.png-7acd4e8d9bd67ea07a3eadee4b22c22d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/Состояние РЭС 2.png"
dest_files=["res://.godot/imported/Состояние РЭС 2.png-7acd4e8d9bd67ea07a3eadee4b22c22d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b85f1ne2wrwhg"
path="res://.godot/imported/Состояние РЭС 4.png-d46f69e8c351fe747cf68bce4af4b8eb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/Состояние РЭС 4.png"
dest_files=["res://.godot/imported/Состояние РЭС 4.png-d46f69e8c351fe747cf68bce4af4b8eb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://docnrxrm2f022"
path="res://.godot/imported/Угловой квадрат3.png-7973b0c96861e98d72e8e1ea32d59204.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/Угловой квадрат3.png"
dest_files=["res://.godot/imported/Угловой квадрат3.png-7973b0c96861e98d72e8e1ea32d59204.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0wa068b6gl1y"
path="res://.godot/imported/разъединение.png-285b8ee2e2b500484829beae0ee4e16b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/разъединение.png"
dest_files=["res://.godot/imported/разъединение.png-285b8ee2e2b500484829beae0ee4e16b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
data/связь.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blx6c1o1nogks"
path="res://.godot/imported/связь.png-dc3eae4c11f71101d4ba94487cecfaaa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/связь.png"
dest_files=["res://.godot/imported/связь.png-dc3eae4c11f71101d4ba94487cecfaaa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bf1e2xlk3x1aw"
path="res://.godot/imported/соединение.png-aac09e55b0c5d57ef3c31c34daaf336b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/соединение.png"
dest_files=["res://.godot/imported/соединение.png-aac09e55b0c5d57ef3c31c34daaf336b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -37,6 +37,64 @@ config/settings_path="user://settings.json"
config/unit_bpo_request_period=20.0 config/unit_bpo_request_period=20.0
interfer/emit_color=Color(0.9, 0.1, 0.25, 0.5) interfer/emit_color=Color(0.9, 0.1, 0.25, 0.5)
interfer/closed_sectors=Color(0, 0, 0, 1) interfer/closed_sectors=Color(0, 0, 0, 1)
"config/Адрес АФСП левого борта"=""
"config/Адрес АФСП правого борта"=""
"config/Адрес БПО левого борта"=""
"config/Адрес БПО правого борта"=""
"config/Виртуальная клавиатура"=false
"config/Включить работу по своим целям"=true
"config/Внешнее указание Трасса"=false
"config/Внешнее управление"=false
"config/Кнопка «JTIDS»"=false
"config/Кнопка «К1»"=false
"config/Кнопка «КУПД»"=false
"config/Кнопка «ЛЧМ-1»"=false
"config/Кнопка «МЧМ-1»"=false
"config/Кнопка «ОЗП-1»"=false
"config/Кнопка «ОРН-И1»"=false
"config/Кнопка «ОРН-М2»"=false
"config/Кнопка «ОРН»"=false
"config/Кнопка «ПД-М2»"=false
"config/Кнопка «ПД-М4»"=false
"config/Кнопка «ПД-М4С»"=false
"config/Кнопка «ПД-ЧМ»"=false
"config/Кнопка «Подавление»"=false
"config/Кнопка «СВ-И1»"=false
"config/Кнопка «СВ-М2»"=false
"config/Ограниченный режим"=false
"config/Отладка контроля"=false
"config/Период опроса состояния АФСП, секунды"=""
"config/Период опроса состояния БПО, секунды"=""
"config/Скрыть вкладку ЭМС 2"=true
"config/Список своих протоколов"=""
"config/Текущая версия ПО УАРЭП"="master 3bff1cd Tue Nov 4 15:33:24 2025 +0300"
"config/Цвет кнопки \"Подавление\""="[0.972549021244049,0.0117647061124444,0.423529416322708,1.0]"
"config/Цвет схемы"="[0.972549021244049,0.0117647061124444,0.0274509806185961,1.0]"
"config/Цвет фона схемы"="[0.0941176488995552,0.149019613862038,1.0,1.0]"
"config/Шаблон адреса сервера карт"="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
"config/навигация"=["*", 60000, true, true]
"config/уарэп-5п28"=["127.0.0.1", 50777]
"config/уарэп-капсрпб"=["127.0.0.1", "127.0.0.1", 42023, 42022, false, true]
"config/уарэп-спт25-1"=["/home/user/tty0", 0, 19200, "N", 8, 1]
"config/уарэп-спт25-2"=["/home/user/tty1", 0, 19200, "N", 8, 1]
"config/уарэп-трасса"=["192.168.11.34", "192.168.11.105", 50200, 10004, false, true]
"config/уарэп-щ3"=["/home/user/tty3", 7, 19200, "N", 8, 1, 50000]
"config/уарэп-эмс"=["10.1.1.52", 50052, false, false]
"config/уарэп-яу07-1в"=["10.1.1.12", 50012, false, false]
"config/уарэп-яу07-1к"=["10.1.1.13", 50013, false, false]
"config/уарэп-яу07-1н"=["10.1.1.11", 50011, false, false]
"config/уарэп-яу07-2в"=["10.1.1.22", 50022, false, false]
"config/уарэп-яу07-2к"=["10.1.1.23", 50023, false, false]
"config/уарэп-яу07-2н"=["10.1.1.21", 50021, false, false]
"config/уарэп-яу07-3в"=["10.1.1.32", 50032, false, false]
"config/уарэп-яу07-3к"=["10.1.1.33", 50033, false, false]
"config/уарэп-яу07-3н"=["10.1.1.31", 50031, false, false]
"config/уарэп-яу07-4в"=["10.1.1.42", 50042, false, false]
"config/уарэп-яу07-4к"=["10.1.1.43", 50043, false, false]
"config/уарэп-яу07-4н"=["10.1.1.41", 50041, false, false]
"config/уарэп-яу07-общий"=["*", 50000, true, true]
"config/уарэп-яу07-частный"=["10.1.1.253", 50253, false, true]
config/="[0.215686276555061,0.976470589637756,1.0,1.0]"
[autoload] [autoload]
@@ -88,6 +146,7 @@ window/subwindows/embed_subwindows=false
window/frame_pacing/android/enable_frame_pacing=false window/frame_pacing/android/enable_frame_pacing=false
window/stretch/mode="canvas_items" window/stretch/mode="canvas_items"
window/dpi/allow_hidpi=false window/dpi/allow_hidpi=false
window/vsync/vsync_mode=0
[editor] [editor]
@@ -205,6 +264,8 @@ common/enable_object_picking=false
[rendering] [rendering]
shader_compiler/shader_cache/strip_debug=true shader_compiler/shader_cache/strip_debug=true
textures/default_filters/anisotropic_filtering_level=0
anti_aliasing/screen_space_roughness_limiter/enabled=false
quality/driver/fallback_to_gles2=true quality/driver/fallback_to_gles2=true
[shader_globals] [shader_globals]

View File

@@ -1,44 +1,53 @@
class_name Diagram extends Sprite2D class_name Diagram extends ColorRect
const NUM_OF_RANGE = 7 const NUM_OF_RANGE = 7
const NUM_OF_DIRECTIONS = 4 const NUM_OF_DIRECTIONS = 4
var fs_default_colors: Array[Color] ## Цвета по умолчанию для блоков ФС. const color0_default: Color = Color(0.38, 0.47, 0.51, 1.0)
const color1_default: Color = Color(0.39, 0.44, 0.50, 1.0)
var color0: Color = color0_default
var color1: Color = color1_default
var fs_default_colors: PackedColorArray ## Цвета по умолчанию для блоков ФС.
@export var SecZap: PackedScene @export var SecZap: PackedScene
@export var inner_radius_0: = 0.36 ## Внутренний радиус диаграммы в режиме РТО
@export var inner_radius_1: = 0.855 ## Внутренний радиус диаграммы в обзора
func _ready() -> void: func _ready() -> void:
signaller.connect('map_mode_changed', Callable(self, 'set_view_mode')) signaller.connect('map_mode_changed', Callable(self, 'set_view_mode'))
ProjectSettings.connect('settings_changed', _on_settings_changed)
_on_settings_changed()
set_def_colors() set_def_colors()
func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125 func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125
func set_canvas_rotation(val: float) -> void: material.set('shader_parameter/rotation', val) func set_band_colors(val: PackedColorArray): material.set('shader_parameter/ant_band_c', val)
func set_strob_visible(val: bool): $строб.visible = val func set_band_failures(val: PackedInt32Array): material.set('shader_parameter/ant_band_m', val)
func set_strob_center(val: Vector2): $строб.position = val func set_canvas_rotation(val: float): material.set('shader_parameter/rotation', val)
func set_strob_dir(val: float): $строб.set_instance_shader_parameter('dir', val) func set_radius_inner_frac(val: float): material.set('shader_parameter/inner_radius', val)
func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val) func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0)
func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0) func set_strob_center(val: Vector2): $строб.position = val
func set_strob_radius(val: float): $строб.set_instance_shader_parameter('radius', sv(val)) func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val)
func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val) func set_strob_dir(val: float): $строб.set_instance_shader_parameter('dir', val)
func set_strob_radius(val: float): $строб.set_instance_shader_parameter('radius', sv(val))
func set_strob_visible(val: bool): $строб.visible = val
func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val)
func get_strob_center() -> Vector2: return $строб.position func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c')
func get_strob_visible() -> bool: return $строб.visible func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m')
func get_strob_dir() -> float: return $строб.get_instance_shader_parameter('dir') func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation')
func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width') func get_radius_outter() -> float: return size.x / scale.x
func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0 func get_radius_inner_frac() -> float: return material.get('shader_parameter/inner_radius')
func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0
func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') func get_strob_center() -> Vector2: return $строб.position
func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color')
func get_strob_dir() -> float: return $строб.get_instance_shader_parameter('dir')
func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0
func get_strob_visible() -> bool: return $строб.visible
func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width')
func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation')
func get_radius_outter() -> float: return material.get('shader_parameter/radius_outter')
func get_radius_inner_0() -> float: return material.get('shader_parameter/radius_inner_0')
func get_radius_inner_1() -> float: return material.get('shader_parameter/radius_inner_1')
func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c')
func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m')
func set_band_colors(val: Array): material.set('shader_parameter/ant_band_c', val)
func set_band_failures(val: Array): material.set('shader_parameter/ant_band_m', val)
## Добавляет сектор запрета[br] ## Добавляет сектор запрета[br]
## [param id] - Индекс сектора запрета.[br] ## [param id] - Индекс сектора запрета.[br]
@@ -87,30 +96,32 @@ func clear_all_seczap():
child.queue_free() child.queue_free()
func set_seczap_color(id: int, color: Color): func set_seczap_color(id: int, c: Color):
var seczap: = get_node('SECZAP%d' % id) var seczap: = get_node('SECZAP%d' % id)
seczap.set_instance_shader_parameter('color', color) seczap.set_instance_shader_parameter('color', c)
func set_view_mode(val: int): func set_view_mode(val: int):
if val == 1: if val == 1:
material.set('shader_parameter/inner_radius', inner_radius_1)
$строб.hide() $строб.hide()
else: else:
material.set('shader_parameter/inner_radius', inner_radius_0)
$строб.show() $строб.show()
material.set('shader_parameter/mode', val)
func _on_settings_changed():
color0 = ProjectSettings.get_setting('application/interfer/default_color0', color0_default)
color1 = ProjectSettings.get_setting('application/interfer/default_color1', color1_default)
color0 *= Color(1.0, 1.0, 1.0, 0.0)
color1 *= Color(1.0, 1.0, 1.0, 0.0)
## Закрашивание по умолчанию блоков ФС цветами из настроек. ## Закрашивание по умолчанию блоков ФС цветами из настроек.
func set_def_colors(): func set_def_colors():
var color0: Color = ProjectSettings.get_setting('application/interfer/default_color0', Color(0.38, 0.47, 0.51, 1.0)) var col_arr: PackedColorArray = [color0, color1]
var color1: Color = ProjectSettings.get_setting('application/interfer/default_color1', Color(0.39, 0.44, 0.50, 1.0))
color0 *= Color(1.0, 1.0, 1.0, 0.0)
color1 *= Color(1.0, 1.0, 1.0, 0.0)
var col_arr: Array = [color0, color1]
var col = false
for i in NUM_OF_RANGE: for i in NUM_OF_RANGE:
for j in NUM_OF_DIRECTIONS: for j in NUM_OF_DIRECTIONS:
fs_default_colors.append(col_arr[int(col)]) fs_default_colors.append(col_arr[i & 1])
col = not col i += 1
col = not col
set_band_colors(fs_default_colors) set_band_colors(fs_default_colors)

View File

@@ -1,25 +1,39 @@
[gd_scene load_steps=7 format=3 uid="uid://b5kjdyxuwsot5"] [gd_scene load_steps=7 format=3 uid="uid://b5kjdyxuwsot5"]
[ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://shaders/antenas.tres" id="1_newdt"] [ext_resource type="Shader" uid="uid://dhipoo0ju5ebg" path="res://shaders/antenas.gdshader" id="1_8cjpq"]
[ext_resource type="Script" uid="uid://b85scuflwlqom" path="res://scenes/diagram/diagram.gd" id="2_8xjuy"] [ext_resource type="Script" uid="uid://b85scuflwlqom" path="res://scenes/diagram/diagram.gd" id="2_8xjuy"]
[ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/diagram/sector.tscn" id="3_tgnog"] [ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/diagram/sector.tscn" id="3_tgnog"]
[ext_resource type="Shader" uid="uid://k36g8tww5yo" path="res://shaders/sector.gdshader" id="4_obn6s"] [ext_resource type="Shader" uid="uid://k36g8tww5yo" path="res://shaders/sector.gdshader" id="4_obn6s"]
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_oqtdt"]
size = Vector2(1600, 1200) shader = ExtResource("1_8cjpq")
shader_parameter/grid_cells_angle = 4
shader_parameter/grid_layers_radius = 7
shader_parameter/alpha = 0.5
shader_parameter/inner_radius = 0.36
shader_parameter/outer_radius = 1.0
shader_parameter/grid_line_width = 0.0025
shader_parameter/rotation = 0.0
shader_parameter/ffr = 0.15
shader_parameter/sfr = 0.0
shader_parameter/pfr = 0.025
shader_parameter/ant_band_c = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"]
resource_local_to_scene = true resource_local_to_scene = true
shader = ExtResource("4_obn6s") shader = ExtResource("4_obn6s")
[node name="canvas" type="Sprite2D"] [node name="canvas" type="ColorRect"]
material = ExtResource("1_newdt") texture_filter = 1
texture = SubResource("PlaceholderTexture2D_2bft1") material = SubResource("ShaderMaterial_oqtdt")
centered = false offset_right = 560.0
offset_bottom = 560.0
scale = Vector2(2, 2)
script = ExtResource("2_8xjuy") script = ExtResource("2_8xjuy")
SecZap = ExtResource("3_tgnog") SecZap = ExtResource("3_tgnog")
[node name="строб" parent="." instance=ExtResource("3_tgnog")] [node name="строб" parent="." instance=ExtResource("3_tgnog")]
material = SubResource("ShaderMaterial_lniyv") material = SubResource("ShaderMaterial_lniyv")
position = Vector2(560, 560) position = Vector2(280, 280)
scale = Vector2(1100, 1100) scale = Vector2(550, 550)

View File

@@ -119,9 +119,8 @@ func on_interfer_new(ecm, table_index):
$table.set_row_editable(i_row, false) $table.set_row_editable(i_row, false)
$table.set_node_user_data(0, i_row, ecm) $table.set_node_user_data(0, i_row, ecm)
table_index[ecm.ispp] = i_row table_index[ecm.ispp] = i_row
# Будем надеяться, что отложенные вызовы производятся в том же порядке $table.clear_rows_selected()
$table.call_deferred('clear_rows_selected') $table.set_row_selected(i_row, true)
$table.call_deferred('set_row_selected', i_row, true)
if not interfer.auto_enabled: if not interfer.auto_enabled:
signaller.emit_signal('interfer_selected', ecm) signaller.emit_signal('interfer_selected', ecm)

View File

@@ -30,15 +30,12 @@ func _ready() -> void:
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
set_frame($input_0, unit_prd_k.ems_g_sock_dic.ems_input_1) $input_0.set_frame(unit_prd_k.ems_g_sock_dic.ems_input_1)
set_frame($input_1, unit_prd_k.ems_g_sock_dic.ems_input_2) $input_1.set_frame(unit_prd_k.ems_g_sock_dic.ems_input_2)
set_frame($input_2, unit_prd_k.ems_g_sock_dic.ems_input_lit_1) $input_2.set_frame(unit_prd_k.ems_g_sock_dic.ems_input_lit_1)
set_frame($output_0, unit_prd_k.ems_g_sock_dic.ems_output_1) $output_0.set_frame(unit_prd_k.ems_g_sock_dic.ems_output_1)
set_frame($output_1, unit_prd_k.ems_g_sock_dic.ems_output_2) $output_1.set_frame(unit_prd_k.ems_g_sock_dic.ems_output_2)
set_frame($output_2, unit_prd_k.ems_g_sock_dic.ems_output_lit_1) $output_2.set_frame(unit_prd_k.ems_g_sock_dic.ems_output_lit_1)
func set_frame(node_frame: Node, val: int): node_frame.set_frame(val)
func _on_start_control() -> void: func _on_start_control() -> void:
@@ -60,12 +57,6 @@ func _enter_tree() -> void:
_update_status_text(unit_prd_k.get_current_status()) _update_status_text(unit_prd_k.get_current_status())
func _exit_tree() -> void:
if Engine.is_editor_hint():
return
#prd_k_module.cmd_array.append([unit_prd_k.CmdCode.WRITE_ISA, [constants_k.ADDR_UG_LITERA_1, ug_work_1, constants_k.ADDR_UG_LITERA_2, ug_work_2, constants_k.ADDR_UG_LITERA_3, ug_work_3]])
static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void: static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void:
for i_node_temperature in temperature_arr_node: for i_node_temperature in temperature_arr_node:
var temperature_meta: String = i_node_temperature.get_meta('um') var temperature_meta: String = i_node_temperature.get_meta('um')
@@ -112,31 +103,18 @@ static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifi
func on_press_device(_name_davice: String) -> void: func on_press_device(_name_davice: String) -> 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_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 control_data: Dictionary = unit_prd_k.get_control_results() var control_data: Dictionary = unit_prd_k.get_control_results()
var for_control_result: Dictionary = { control_data['nodes_y5'] = get_tree().get_nodes_in_group('y-5')
'nodes_y5': nodes_y5, control_data['node_ip_power_arr'] = get_tree().get_nodes_in_group('power_supply')
'node_ip_power_arr': node_ip_power_arr, control_data['fs_nodes'] = get_tree().get_nodes_in_group('fs_group')
'fs_nodes': fs_nodes, control_data['power_amplifier'] = get_tree().get_nodes_in_group('power_amplifier')
'power_amplifier': power_amplifier, control_data['default_reset_array_node'] = get_tree().get_nodes_in_group('default_reset')
'default_reset_array_node': default_reset_array_node, control_data['module_fs_1'] = $kasseta_fs_kd/ref_A2
'module_fs_1': module_fs_1, control_data['module_fs_6'] = $kasseta_fs_kd/ref_A4
'module_fs_6': module_fs_6, control_data['dou_6'] = $dou6_A7
'dou_6': dou_6, control_data['module_fs_7'] = $kasseta_fs_kd/ref_A7
'module_fs_7': module_fs_7, control_data['dou_7'] = $dou7_A8
'dou_7': dou_7, on_control_result(control_data)
}
for_control_result.merge(control_data, true)
on_control_result(for_control_result)
static func on_control_result(for_result_dic: Dictionary) -> void: static func on_control_result(for_result_dic: Dictionary) -> void:
@@ -169,6 +147,7 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
set_default_state(for_result_dic.default_reset_array_node) set_default_state(for_result_dic.default_reset_array_node)
set_default_state(for_result_dic.power_amplifier) set_default_state(for_result_dic.power_amplifier)
return return
var result_dic: Dictionary = for_result_dic.result_dic var result_dic: Dictionary = for_result_dic.result_dic
for f in for_result_dic.fs_nodes: for f in for_result_dic.fs_nodes:
var fs_meta: String = f.get_meta('fs') var fs_meta: String = f.get_meta('fs')

View File

@@ -30,13 +30,10 @@ func _ready() -> void:
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
set_frame($input_0, unit_prd_n.ems_g_sock_dic.ems_input_1) $input_0.set_frame(unit_prd_n.ems_g_sock_dic.ems_input_1)
set_frame($input_1, unit_prd_n.ems_g_sock_dic.ems_input_2) $input_1.set_frame(unit_prd_n.ems_g_sock_dic.ems_input_2)
set_frame($output_0, unit_prd_n.ems_g_sock_dic.ems_output_1) $output_0.set_frame(unit_prd_n.ems_g_sock_dic.ems_output_1)
set_frame($output_1, unit_prd_n.ems_g_sock_dic.ems_output_2) $output_1.set_frame(unit_prd_n.ems_g_sock_dic.ems_output_2)
func set_frame(node_frame: Node, val: int): node_frame.set_frame(val)
func _on_start_control() -> void: func _on_start_control() -> void:
@@ -60,12 +57,6 @@ func _enter_tree() -> void:
_update_status_text(unit_prd_n.get_current_status()) _update_status_text(unit_prd_n.get_current_status())
func _exit_tree() -> void:
if Engine.is_editor_hint():
return
#prd_n_module.cmd_array.append([unit_prd_n.CmdCode.WRITE_ISA, [constants_n.ADDR_UG_LITERA_1, ug_work_1, constants_n.ADDR_UG_LITERA_2, ug_work_2]])
static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void: static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void:
for i_node_temperature in temperature_arr_node: for i_node_temperature in temperature_arr_node:
var temperature_meta: String = i_node_temperature.get_meta('um') var temperature_meta: String = i_node_temperature.get_meta('um')

View File

@@ -30,13 +30,10 @@ func _ready() -> void:
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
set_frame($input_0, unit_prd_v.ems_g_sock_dic.ems_input_1) $input_0.set_frame(unit_prd_v.ems_g_sock_dic.ems_input_1)
set_frame($input_1, unit_prd_v.ems_g_sock_dic.ems_input_2) $input_1.set_frame(unit_prd_v.ems_g_sock_dic.ems_input_2)
set_frame($output_0, unit_prd_v.ems_g_sock_dic.ems_output_1) $output_0.set_frame(unit_prd_v.ems_g_sock_dic.ems_output_1)
set_frame($output_1, unit_prd_v.ems_g_sock_dic.ems_output_2) $output_1.set_frame(unit_prd_v.ems_g_sock_dic.ems_output_2)
func set_frame(node_frame: Node, val: int): node_frame.set_frame(val)
func _on_start_control() -> void: func _on_start_control() -> void:
@@ -60,11 +57,6 @@ func _enter_tree() -> void:
_update_status_text(unit_prd_v.get_current_status()) _update_status_text(unit_prd_v.get_current_status())
func _exit_tree() -> void:
if Engine.is_editor_hint():
return
static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void: static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void:
for i_node_temperature in temperature_arr_node: for i_node_temperature in temperature_arr_node:
var temperature_meta: String = i_node_temperature.get_meta('um') var temperature_meta: String = i_node_temperature.get_meta('um')

View File

@@ -834,5 +834,4 @@ func draw_ship_radius() -> void:
var radius_point_world = Vector2(ship_world_pos.x + radius_world, ship_world_pos.y) var radius_point_world = Vector2(ship_world_pos.x + radius_world, ship_world_pos.y)
var radius_point_screen = world_to_screen(radius_point_world) var radius_point_screen = world_to_screen(radius_point_world)
var radius_screen = ship_screen_pos.distance_to(radius_point_screen) var radius_screen = ship_screen_pos.distance_to(radius_point_screen)
#draw_arc(ship_screen_pos, radius_screen, 0, TAU, 64, Color.ORANGE, 2.0) # отрисовка контура
draw_circle(ship_screen_pos, radius_screen, Color.ORANGE_RED * Color(1, 1, 1, 0.1)) # отрисовка заливки draw_circle(ship_screen_pos, radius_screen, Color.ORANGE_RED * Color(1, 1, 1, 0.1)) # отрисовка заливки

View File

@@ -3,5 +3,7 @@ extends AnimatedSprite2D
## Изменяет состояние значка "прибор на связи" ## Изменяет состояние значка "прибор на связи"
func set_val(val: bool): func set_val(val: bool):
set_frame(val) set_frame(val)
if val: modulate = Color(0.3, 1.0, 0.3, 1) if val:
else: modulate = Color(0.5, 0.5, 0.5, 1) modulate = Color(0.3, 1.0, 0.3, 1)
else:
modulate = Color(0.5, 0.5, 0.5, 1)

View File

@@ -0,0 +1,11 @@
extends PanelContainer
## Изменяет состояние значка "прибор на связи"
func set_val(val: bool):
$connect_pribor.set_frame(val)
if val:
$connect_pribor.modulate = Color(0.3, 1.0, 0.3, 1) # зелёный
set_tooltip_text("Есть связь")
else:
$connect_pribor.modulate = modulate # изначальный
set_tooltip_text("Нет связи")

View File

@@ -0,0 +1 @@
uid://j16hg3u2uvu5

View File

@@ -9,4 +9,4 @@ func _ready() -> void:
func on_line_changed(unit_instance: unit.Unit): func on_line_changed(unit_instance: unit.Unit):
$connect_pribor.set_val(unit_instance.online) $panel_pribor.set_val(unit_instance.online)

View File

@@ -10,6 +10,8 @@ func _ready():
focus_mode = Control.FOCUS_ALL focus_mode = Control.FOCUS_ALL
connect('focus_entered', _on_focus_entered) connect('focus_entered', _on_focus_entered)
connect('focus_exited', _on_focus_exited) connect('focus_exited', _on_focus_exited)
ProjectSettings.connect("settings_changed", Callable(self, "_on_settings_changed"))
_on_settings_changed()
func _enter_tree() -> void: func _enter_tree() -> void:
@@ -47,8 +49,17 @@ func enter_press():
func _on_settings_changed(): func _on_settings_changed():
if not is_inside_tree(): return if not is_inside_tree(): return
var white_color = ProjectSettings.get_setting('Схема прибора. Белый цвет', Color.LIGHT_GRAY)
var black_color = ProjectSettings.get_setting('Схема прибора. Чёрный цвет', Color.BLACK) var white_color = ProjectSettings.get_setting('application/config/%s' % 'Цвет фона схемы', Color.DIM_GRAY)
var json_col_w = ProjectSettings.get_setting('application/config/%s' % 'Цвет фона схемы', '[0.0, 0.0, 0.0, 0.0]')
var arr_col_w = JSON.parse_string(json_col_w)
white_color = Color(arr_col_w[0], arr_col_w[1], arr_col_w[2], arr_col_w[3]) if arr_col_w else Color.DIM_GRAY
var black_color = ProjectSettings.get_setting('application/config/%s' % 'Цвет схемы', Color.WHITE_SMOKE)
var json_col_b = ProjectSettings.get_setting('application/config/%s' % 'Цвет схемы', '[1.0, 1.0, 1.0, 1.0]')
var arr_col_b = JSON.parse_string(json_col_b)
black_color = Color(arr_col_b[0], arr_col_b[1], arr_col_b[2], arr_col_b[3]) if arr_col_b else Color.WHITE_SMOKE
$pic_functional.material.set('shader_parameter/white', white_color) $pic_functional.material.set('shader_parameter/white', white_color)
$pic_functional.material.set('shader_parameter/black', black_color) $pic_functional.material.set('shader_parameter/black', black_color)

View File

@@ -1,16 +1,15 @@
[gd_scene load_steps=33 format=3 uid="uid://lwmw4egynmd1"] [gd_scene load_steps=34 format=3 uid="uid://lwmw4egynmd1"]
[ext_resource type="Texture2D" uid="uid://bar8k5qef7kch" path="res://data/УФ.png" id="2_0nvm1"] [ext_resource type="Texture2D" uid="uid://bar8k5qef7kch" path="res://data/УФ.png" id="2_0nvm1"]
[ext_resource type="Script" uid="uid://q3gmpsqspjfp" path="res://scenes/контроль/внешний.gd" id="2_8r80x"] [ext_resource type="Script" uid="uid://q3gmpsqspjfp" path="res://scenes/контроль/внешний.gd" id="2_8r80x"]
[ext_resource type="Texture2D" uid="uid://bb80aigvv648i" path="res://data/кнопка-внешние-0.png" id="2_oysma"] [ext_resource type="Texture2D" uid="uid://bb80aigvv648i" path="res://data/кнопка-внешние-0.png" id="2_oysma"]
[ext_resource type="Script" uid="uid://bj4nndrurbunl" path="res://scenes/контроль/кнопка-прибора.gd" id="3_4pt7j"] [ext_resource type="Script" uid="uid://bj4nndrurbunl" path="res://scenes/контроль/кнопка-прибора.gd" id="3_4pt7j"]
[ext_resource type="Texture2D" uid="uid://blx6c1o1nogks" path="res://data/связь.png" id="3_8tygn"]
[ext_resource type="Texture2D" uid="uid://dkqlvd750pplc" path="res://data/СПТ.png" id="3_hhadv"] [ext_resource type="Texture2D" uid="uid://dkqlvd750pplc" path="res://data/СПТ.png" id="3_hhadv"]
[ext_resource type="Texture2D" uid="uid://b0o8jhb5jbrev" path="res://data/рамка-1.png" id="4_rasbe"] [ext_resource type="Texture2D" uid="uid://b0o8jhb5jbrev" path="res://data/рамка-1.png" id="4_rasbe"]
[ext_resource type="Texture2D" uid="uid://bdlbqs88bki8x" path="res://data/connect-a.png" id="5_c621m"]
[ext_resource type="Texture2D" uid="uid://d2jxmtd6n5jd1" path="res://data/Щ3.png" id="5_kvnex"] [ext_resource type="Texture2D" uid="uid://d2jxmtd6n5jd1" path="res://data/Щ3.png" id="5_kvnex"]
[ext_resource type="Texture2D" uid="uid://bos68thpqqvn" path="res://data/ПРД.png" id="6_i1yfn"] [ext_resource type="Texture2D" uid="uid://bos68thpqqvn" path="res://data/ПРД.png" id="6_i1yfn"]
[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="7_6j01w"] [ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="7_6j01w"]
[ext_resource type="Texture2D" uid="uid://u3tnejvpm8it" path="res://data/disconnect-a.png" id="8_gs2be"]
[ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="8_isjua"] [ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="8_isjua"]
[ext_resource type="Shader" uid="uid://83fx15q1xlid" path="res://shaders/two-color.gdshader" id="9_71ec4"] [ext_resource type="Shader" uid="uid://83fx15q1xlid" path="res://shaders/two-color.gdshader" id="9_71ec4"]
[ext_resource type="Texture2D" uid="uid://b4isaggma6q3" path="res://data/Грани22.png" id="9_iqgf5"] [ext_resource type="Texture2D" uid="uid://b4isaggma6q3" path="res://data/Грани22.png" id="9_iqgf5"]
@@ -25,6 +24,7 @@
[ext_resource type="Texture2D" uid="uid://c3cyog3gy24ft" path="res://data/У-ЭП.png" id="16_gjf0t"] [ext_resource type="Texture2D" uid="uid://c3cyog3gy24ft" path="res://data/У-ЭП.png" id="16_gjf0t"]
[ext_resource type="Script" uid="uid://xjs7owe2iexn" path="res://scenes/контроль/control_prd.gd" id="18_lbx5w"] [ext_resource type="Script" uid="uid://xjs7owe2iexn" path="res://scenes/контроль/control_prd.gd" id="18_lbx5w"]
[ext_resource type="Texture2D" uid="uid://b2vf7en1jj8dv" path="res://data/У-РЭП-РПД-В.png" id="20_l5wui"] [ext_resource type="Texture2D" uid="uid://b2vf7en1jj8dv" path="res://data/У-РЭП-РПД-В.png" id="20_l5wui"]
[ext_resource type="Script" uid="uid://j16hg3u2uvu5" path="res://scenes/контроль/panel_container.gd" id="21_l5wui"]
[ext_resource type="Texture2D" uid="uid://cllxcfa130vqu" path="res://data/УА-РЭП.png" id="22_1s34a"] [ext_resource type="Texture2D" uid="uid://cllxcfa130vqu" path="res://data/УА-РЭП.png" id="22_1s34a"]
[sub_resource type="GDScript" id="GDScript_iqgf5"] [sub_resource type="GDScript" id="GDScript_iqgf5"]
@@ -88,7 +88,7 @@ func _ready():
var header_text = PRIBORS_RES[k][1] var header_text = PRIBORS_RES[k][1]
pribor_node.set_button_group(group) pribor_node.set_button_group(group)
pribor_node.connect('button_down', Callable(self, 'on_pribor_press').bind(pribor_path, header_text, pribor_node)) pribor_node.connect('button_down', Callable(self, 'on_pribor_press').bind(pribor_path, header_text, pribor_node))
var conn_node = pribor_node.get_node('connect_pribor') var conn_node = pribor_node.get_node('panel_pribor')
var unit_names = pribor_node.get_meta('unit_name', []) var unit_names = pribor_node.get_meta('unit_name', [])
var pribor_proc = pribor_node.get_meta('online_proc', '') var pribor_proc = pribor_node.get_meta('online_proc', '')
if pribor_proc == '': if pribor_proc == '':
@@ -114,7 +114,7 @@ func _ready():
for pribor_node in get_tree().get_nodes_in_group('pribor_pics'): for pribor_node in get_tree().get_nodes_in_group('pribor_pics'):
var unit_name = pribor_node.get_meta('unit_name') var unit_name = pribor_node.get_meta('unit_name')
var unit_instance: = network.get_unit_instance(unit_name) var unit_instance: = network.get_unit_instance(unit_name)
var conn_node: = pribor_node.get_node('connect_pribor') var conn_node: = pribor_node.get_node('panel_pribor')
unit_instance.connect('line_changed', on_line_changed.bind(conn_node, unit_name)) unit_instance.connect('line_changed', on_line_changed.bind(conn_node, unit_name))
@@ -255,14 +255,17 @@ func _on_gui_input(event: InputEvent) -> void:
$frame_button/chk_show_functional.disabled = true $frame_button/chk_show_functional.disabled = true
" "
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4plr2"]
bg_color = Color(0.176471, 0.176471, 0.176471, 0)
[sub_resource type="SpriteFrames" id="SpriteFrames_foasq"] [sub_resource type="SpriteFrames" id="SpriteFrames_foasq"]
animations = [{ animations = [{
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": ExtResource("8_gs2be") "texture": ExtResource("3_8tygn")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": ExtResource("5_c621m") "texture": ExtResource("3_8tygn")
}], }],
"loop": true, "loop": true,
"name": &"default", "name": &"default",
@@ -271,8 +274,8 @@ animations = [{
[sub_resource type="ShaderMaterial" id="ShaderMaterial_71ec4"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_71ec4"]
shader = ExtResource("9_71ec4") shader = ExtResource("9_71ec4")
shader_parameter/white = Vector3(0, 0, 0) shader_parameter/white = Vector3(0.14, 0.13, 0.13)
shader_parameter/black = Vector3(1, 1, 1) shader_parameter/black = Vector3(0.95, 0.55, 0.05)
shader_parameter/gamma = 2.0 shader_parameter/gamma = 2.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6hcgs"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6hcgs"]
@@ -336,12 +339,24 @@ text = "КАПС РПБ"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="capsrpb"] [node name="panel_pribor" type="PanelContainer" parent="capsrpb"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 16.0
offset_top = -36.0
offset_right = 107.0
offset_bottom = 55.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="capsrpb/panel_pribor"]
light_mask = 3 light_mask = 3
position = Vector2(56, -4) position = Vector2(45.7142, 45.7143)
scale = Vector2(2.6, 2.6) scale = Vector2(2.113, 2.1)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
script = ExtResource("11_u7tym") frame_progress = 0.72355
[node name="5p28" type="TextureRect" parent="." groups=["pribor_pics"]] [node name="5p28" type="TextureRect" parent="." groups=["pribor_pics"]]
editor_description = "Кнопка для отображения внешних соединений." editor_description = "Кнопка для отображения внешних соединений."
@@ -370,13 +385,24 @@ text = "5П28"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="5p28"] [node name="panel_pribor" type="PanelContainer" parent="5p28"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 16.0
offset_top = -36.0
offset_right = 107.0
offset_bottom = 55.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="5p28/panel_pribor"]
light_mask = 3 light_mask = 3
position = Vector2(52, -4) position = Vector2(45.7142, 45.7143)
scale = Vector2(2.6, 2.6) scale = Vector2(2.113, 2.1)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355 frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="akng" type="TextureRect" parent="." groups=["pribor_pics"]] [node name="akng" type="TextureRect" parent="." groups=["pribor_pics"]]
editor_description = "Кнопка для отображения внешних соединений." editor_description = "Кнопка для отображения внешних соединений."
@@ -405,13 +431,24 @@ text = "АКНГ"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="akng"] [node name="panel_pribor" type="PanelContainer" parent="akng"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 16.0
offset_top = -36.0
offset_right = 107.0
offset_bottom = 55.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="akng/panel_pribor"]
light_mask = 3 light_mask = 3
position = Vector2(47.9999, -4) position = Vector2(45.7142, 45.7143)
scale = Vector2(2.6, 2.6) scale = Vector2(2.113, 2.1)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355 frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="maps" type="TextureRect" parent="." groups=["pribor_pics"]] [node name="maps" type="TextureRect" parent="." groups=["pribor_pics"]]
editor_description = "Кнопка для отображения внешних соединений." editor_description = "Кнопка для отображения внешних соединений."
@@ -440,13 +477,24 @@ text = "Карты"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="maps"] [node name="panel_pribor" type="PanelContainer" parent="maps"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 16.0
offset_top = -36.0
offset_right = 107.0
offset_bottom = 55.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="maps/panel_pribor"]
light_mask = 3 light_mask = 3
position = Vector2(47.9999, -4) position = Vector2(45.7142, 45.7143)
scale = Vector2(2.6, 2.6) scale = Vector2(2.113, 2.1)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355 frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="trassa" type="TextureRect" parent="." groups=["pribor_pics"]] [node name="trassa" type="TextureRect" parent="." groups=["pribor_pics"]]
editor_description = "Кнопка для отображения внешних соединений." editor_description = "Кнопка для отображения внешних соединений."
@@ -475,13 +523,24 @@ text = "Трасса"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="trassa"] [node name="panel_pribor" type="PanelContainer" parent="trassa"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 16.0
offset_top = -36.0
offset_right = 107.0
offset_bottom = 55.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="trassa/panel_pribor"]
light_mask = 3 light_mask = 3
position = Vector2(47.9999, -4) position = Vector2(45.7142, 45.7143)
scale = Vector2(2.6, 2.6) scale = Vector2(2.113, 2.1)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355 frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
@@ -527,14 +586,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1"]
light_mask = 3
position = Vector2(35, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_1"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_1"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -570,6 +621,25 @@ offset_bottom = 830.0
scale = Vector2(0.97094, 0.97094) scale = Vector2(0.97094, 0.97094)
texture = ExtResource("9_qe1go") texture = ExtResource("9_qe1go")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_1"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 27.0
offset_top = -19.0
offset_right = 50.0
offset_bottom = 5.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_uf" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_uf" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -613,14 +683,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uf"]
light_mask = 3
position = Vector2(52, -6)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_uf"] [node name="pic_functional" type="TextureRect" parent="pribor_uf"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -656,6 +718,25 @@ texture_progress = ExtResource("10_lbx5w")
tint_under = Color(1, 1, 1, 0.419608) tint_under = Color(1, 1, 1, 0.419608)
tint_progress = Color(0.890196, 0.486275, 0.196078, 1) tint_progress = Color(0.890196, 0.486275, 0.196078, 1)
[node name="panel_pribor" type="PanelContainer" parent="pribor_uf"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 44.0
offset_top = -22.0
offset_right = 67.0
offset_bottom = 2.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uf/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_rtr" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_rtr" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -710,14 +791,6 @@ text = "РТР"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_rtr"]
light_mask = 3
position = Vector2(53, -15)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_rtr"] [node name="pic_functional" type="TextureRect" parent="pribor_rtr"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -730,6 +803,25 @@ offset_bottom = 595.0
scale = Vector2(0.792688, 0.792688) scale = Vector2(0.792688, 0.792688)
texture = ExtResource("13_32yvq") texture = ExtResource("13_32yvq")
[node name="panel_pribor" type="PanelContainer" parent="pribor_rtr"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 44.0
offset_top = -26.0
offset_right = 67.0
offset_bottom = -2.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_rtr/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_afsp_1" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_afsp_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -788,14 +880,6 @@ text = "АФСП 1"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_1"]
light_mask = 3
position = Vector2(415, -40)
scale = Vector2(3, 3)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_afsp_1"] [node name="pic_functional" type="TextureRect" parent="pribor_afsp_1"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -808,6 +892,25 @@ offset_bottom = 93.9999
scale = Vector2(3.96323, 3.96323) scale = Vector2(3.96323, 3.96323)
texture = ExtResource("13_32yvq") texture = ExtResource("13_32yvq")
[node name="panel_pribor" type="PanelContainer" parent="pribor_afsp_1"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 375.0
offset_top = -105.0
offset_right = 490.0
offset_bottom = 9.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_1/panel_pribor"]
light_mask = 3
position = Vector2(57.1431, 57.1429)
scale = Vector2(3, 2.981)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_afsp_2" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_afsp_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -867,14 +970,6 @@ text = "АФСП 2"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_2"]
light_mask = 3
position = Vector2(415, -40)
scale = Vector2(3, 3)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_afsp_2"] [node name="pic_functional" type="TextureRect" parent="pribor_afsp_2"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -887,6 +982,25 @@ offset_bottom = 89.0001
scale = Vector2(3.96409, 4.54663) scale = Vector2(3.96409, 4.54663)
texture = ExtResource("13_32yvq") texture = ExtResource("13_32yvq")
[node name="panel_pribor" type="PanelContainer" parent="pribor_afsp_2"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 375.0
offset_top = -105.0
offset_right = 490.0
offset_bottom = 9.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_2/panel_pribor"]
light_mask = 3
position = Vector2(57.1431, 57.1429)
scale = Vector2(3, 2.981)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_uyep" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_uyep" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -930,14 +1044,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uyep"]
light_mask = 3
position = Vector2(45, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.872305
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_uyep"] [node name="pic_functional" type="TextureRect" parent="pribor_uyep"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -950,6 +1056,25 @@ offset_bottom = 764.0
scale = Vector2(0.736875, 0.814493) scale = Vector2(0.736875, 0.814493)
texture = ExtResource("16_gjf0t") texture = ExtResource("16_gjf0t")
[node name="panel_pribor" type="PanelContainer" parent="pribor_uyep"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 37.0
offset_top = -22.0
offset_right = 60.0
offset_bottom = 2.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uyep/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_v_2" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_v_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -994,14 +1119,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_2"]
light_mask = 3
position = Vector2(37, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_2"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_2"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1037,6 +1154,25 @@ offset_bottom = 328.0
scale = Vector2(0.977411, 0.977411) scale = Vector2(0.977411, 0.977411)
texture = ExtResource("20_l5wui") texture = ExtResource("20_l5wui")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_2"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 29.0
offset_top = -21.0
offset_right = 52.0
offset_bottom = 3.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_2/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_n_2" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_n_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1083,14 +1219,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_2"]
light_mask = 3
position = Vector2(37, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_prd_n_2"] [node name="pic_functional" type="TextureRect" parent="pribor_prd_n_2"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -1126,6 +1254,25 @@ texture_progress = ExtResource("10_lbx5w")
tint_under = Color(1, 1, 1, 0.419608) tint_under = Color(1, 1, 1, 0.419608)
tint_progress = Color(0.890196, 0.486275, 0.196078, 1) tint_progress = Color(0.890196, 0.486275, 0.196078, 1)
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_2"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 29.0
offset_top = -21.0
offset_right = 52.0
offset_bottom = 3.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_2/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_k_2" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_k_2" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1170,14 +1317,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_2"]
light_mask = 3
position = Vector2(37, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_prd_k_2"] [node name="pic_functional" type="TextureRect" parent="pribor_prd_k_2"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -1213,6 +1352,25 @@ texture_progress = ExtResource("10_lbx5w")
tint_under = Color(1, 1, 1, 0.419608) tint_under = Color(1, 1, 1, 0.419608)
tint_progress = Color(0.890196, 0.486275, 0.196078, 1) tint_progress = Color(0.890196, 0.486275, 0.196078, 1)
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_2"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 29.0
offset_top = -21.0
offset_right = 52.0
offset_bottom = 3.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_2/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_v_3" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_v_3" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1257,14 +1415,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_3"]
light_mask = 3
position = Vector2(35, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_3"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_3"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1300,6 +1450,25 @@ offset_bottom = 207.0
scale = Vector2(0.975409, 0.975409) scale = Vector2(0.975409, 0.975409)
texture = ExtResource("20_l5wui") texture = ExtResource("20_l5wui")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_3"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 27.0
offset_top = -20.0
offset_right = 50.0
offset_bottom = 4.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_3/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_n_3" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_n_3" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1344,14 +1513,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_3"]
light_mask = 3
position = Vector2(33, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_3"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_3"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1387,6 +1548,25 @@ offset_bottom = 219.0
scale = Vector2(0.969291, 0.969291) scale = Vector2(0.969291, 0.969291)
texture = ExtResource("9_qe1go") texture = ExtResource("9_qe1go")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_3"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 25.0
offset_top = -21.0
offset_right = 48.0
offset_bottom = 3.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_3/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_k_3" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_k_3" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1431,14 +1611,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_3"]
light_mask = 3
position = Vector2(35, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_3"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_3"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1474,6 +1646,25 @@ offset_bottom = 361.0
scale = Vector2(0.882165, 0.896739) scale = Vector2(0.882165, 0.896739)
texture = ExtResource("16_32yvq") texture = ExtResource("16_32yvq")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_3"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 27.0
offset_top = -20.0
offset_right = 50.0
offset_bottom = 4.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_3/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_v_1" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_v_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1518,14 +1709,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_1"]
light_mask = 3
position = Vector2(34, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pic_functional" type="TextureRect" parent="pribor_prd_v_1"] [node name="pic_functional" type="TextureRect" parent="pribor_prd_v_1"]
visible = false visible = false
z_index = 1 z_index = 1
@@ -1561,6 +1744,24 @@ texture_progress = ExtResource("10_lbx5w")
tint_under = Color(1, 1, 1, 0.419608) tint_under = Color(1, 1, 1, 0.419608)
tint_progress = Color(0.890196, 0.486275, 0.196078, 1) tint_progress = Color(0.890196, 0.486275, 0.196078, 1)
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_1"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 26.0
offset_top = -20.0
offset_right = 42.0
offset_bottom = -4.0
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_1/panel_pribor"]
light_mask = 3
position = Vector2(8, 8)
scale = Vector2(0.4, 0.4)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_k_1" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_k_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1605,14 +1806,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_1"]
light_mask = 3
position = Vector2(35, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_1"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_1"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1648,6 +1841,25 @@ offset_bottom = 973.0
scale = Vector2(0.883479, 0.883479) scale = Vector2(0.883479, 0.883479)
texture = ExtResource("16_32yvq") texture = ExtResource("16_32yvq")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_1"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 27.0
offset_top = -21.0
offset_right = 50.0
offset_bottom = 3.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_1/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_v_4" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_v_4" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1691,14 +1903,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_4"]
light_mask = 3
position = Vector2(41, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_4"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_4"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1734,6 +1938,25 @@ offset_bottom = 664.0
scale = Vector2(0.976707, 0.976707) scale = Vector2(0.976707, 0.976707)
texture = ExtResource("20_l5wui") texture = ExtResource("20_l5wui")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_4"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 33.0
offset_top = -21.0
offset_right = 56.0
offset_bottom = 3.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_4/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_n_4" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_n_4" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1777,14 +2000,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_4"]
light_mask = 3
position = Vector2(40, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_4"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_4"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1820,6 +2035,25 @@ offset_bottom = 336.0
scale = Vector2(0.968111, 0.968111) scale = Vector2(0.968111, 0.968111)
texture = ExtResource("9_qe1go") texture = ExtResource("9_qe1go")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_4"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 32.0
offset_top = -20.0
offset_right = 55.0
offset_bottom = 4.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_4/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="pribor_prd_k_4" type="TextureButton" parent="." groups=["pribor_buttons"]] [node name="pribor_prd_k_4" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора." editor_description = "Кнопка для выбора прибора."
layout_mode = 0 layout_mode = 0
@@ -1863,14 +2097,6 @@ patch_margin_top = 16
patch_margin_right = 16 patch_margin_right = 16
patch_margin_bottom = 16 patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_4"]
light_mask = 3
position = Vector2(39, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_4"] [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_4"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
@@ -1906,6 +2132,25 @@ offset_bottom = 648.0
scale = Vector2(0.879295, 0.879295) scale = Vector2(0.879295, 0.879295)
texture = ExtResource("16_32yvq") texture = ExtResource("16_32yvq")
[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_4"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 0
offset_left = 31.0
offset_top = -20.0
offset_right = 54.0
offset_bottom = 4.0
scale = Vector2(0.7, 0.7)
tooltip_text = "Нет связи"
theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2")
script = ExtResource("21_l5wui")
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_4/panel_pribor"]
light_mask = 3
position = Vector2(11.4285, 12.8571)
scale = Vector2(0.6, 0.596)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
[node name="txr_legend0" type="TextureRect" parent="."] [node name="txr_legend0" type="TextureRect" parent="."]
layout_mode = 0 layout_mode = 0
offset_left = 316.0 offset_left = 316.0
@@ -1998,17 +2243,17 @@ alignment = 1
[node name="connect_legend0" type="AnimatedSprite2D" parent="."] [node name="connect_legend0" type="AnimatedSprite2D" parent="."]
light_mask = 3 light_mask = 3
position = Vector2(1219, 1151) position = Vector2(1312, 1151)
scale = Vector2(0.65, 0.65) scale = Vector2(0.65, 0.65)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355 frame_progress = 0.72355
script = ExtResource("11_u7tym") script = ExtResource("11_u7tym")
[node name="Label" type="Label" parent="connect_legend0"] [node name="Label" type="Label" parent="connect_legend0"]
offset_left = 36.9231 offset_left = 27.6924
offset_top = -15.3846 offset_top = -16.923
offset_right = 103.923 offset_right = 94.6923
offset_bottom = 3.61538 offset_bottom = 2.07697
scale = Vector2(1.54, 1.54) scale = Vector2(1.54, 1.54)
text = "Отключен" text = "Отключен"
metadata/_edit_use_anchors_ = true metadata/_edit_use_anchors_ = true
@@ -2016,17 +2261,17 @@ metadata/_edit_use_anchors_ = true
[node name="connect_legend1" type="AnimatedSprite2D" parent="."] [node name="connect_legend1" type="AnimatedSprite2D" parent="."]
self_modulate = Color(0, 1, 0, 1) self_modulate = Color(0, 1, 0, 1)
light_mask = 3 light_mask = 3
position = Vector2(975, 1152) position = Vector2(1072, 1151)
scale = Vector2(0.65, 0.65) scale = Vector2(0.65, 0.65)
sprite_frames = SubResource("SpriteFrames_foasq") sprite_frames = SubResource("SpriteFrames_foasq")
frame = 1 frame = 1
script = ExtResource("11_u7tym") script = ExtResource("11_u7tym")
[node name="Label" type="Label" parent="connect_legend1"] [node name="Label" type="Label" parent="connect_legend1"]
offset_left = 36.9231 offset_left = 27.6923
offset_top = -13.8462 offset_top = -16.9231
offset_right = 99.9231 offset_right = 90.6923
offset_bottom = 5.15385 offset_bottom = 2.0769
scale = Vector2(1.54, 1.54) scale = Vector2(1.54, 1.54)
text = "На связи" text = "На связи"
metadata/_edit_use_anchors_ = true metadata/_edit_use_anchors_ = true

View File

@@ -64,8 +64,11 @@ const SETTING_TABLE = [
['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'],
['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ],
['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ],
['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ],
['Время повторной отправки помехи', TableEdit, TableEdit, 'Время повторной отправки помехи, с'], ] ['Цвет фона схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет фона'],
['Цвет схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет схемы '],
['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'] ]
## TODO: Придумать как избавиться от индексов ## TODO: Придумать как избавиться от индексов
## Индексы строк таблицы. ## Индексы строк таблицы.
@@ -78,6 +81,8 @@ const DEBAG_CONTROL = 21 ## Строка - Отладка контроля
const COMMIT = 22 ## Строка - Версия УАРЭП const COMMIT = 22 ## Строка - Версия УАРЭП
const GOS_BTN = 52 ## Разрешить работу по своим целям const GOS_BTN = 52 ## Разрешить работу по своим целям
const COLOR_BTN_ACT = 54 ## Цвет кнопки "Подавление" const COLOR_BTN_ACT = 54 ## Цвет кнопки "Подавление"
const COLOR_WHITE = 55 ## Цвет фона схемы
const COLOR_BLACK = 56 ## Цвет схемы
var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки
@@ -251,6 +256,37 @@ func button_settings():
var arr_col = JSON.parse_string(json_col) var arr_col = JSON.parse_string(json_col)
color_btn_act.color = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3]) if arr_col else Color.WHITE color_btn_act.color = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3]) if arr_col else Color.WHITE
color_btn_act.text = JSON.stringify(arr_col) color_btn_act.text = JSON.stringify(arr_col)
var color_white = $scroll_set/table.get_node2(1, COLOR_WHITE)
color_white.connect('popup_closed', on_color_closed_w.bind(color_white))
var json_col_w = ProjectSettings.get_setting('application/config/%s' % 'Цвет фона схемы', '[0.0, 0.0, 0.0, 0.0]')
var arr_col_w = JSON.parse_string(json_col_w)
color_white.color = Color(arr_col_w[0], arr_col_w[1], arr_col_w[2], arr_col_w[3]) if arr_col_w else Color.DIM_GRAY
color_white.text = JSON.stringify(arr_col_w)
var color_black = $scroll_set/table.get_node2(1, COLOR_BLACK)
color_black.connect('popup_closed', on_color_closed_b.bind(color_black))
var json_col_b = ProjectSettings.get_setting('application/config/%s' % 'Цвет схемы', '[1.0, 1.0, 1.0, 1.0]')
var arr_col_b = JSON.parse_string(json_col_b)
color_black.color = Color(arr_col_b[0], arr_col_b[1], arr_col_b[2], arr_col_b[3]) if arr_col_b else Color.WHITE_SMOKE
color_black.text = JSON.stringify(arr_col_b)
func _update_theme_colors():
var color_white = $scroll_set/table.get_node2(1, COLOR_WHITE)
var color_black = $scroll_set/table.get_node2(1, COLOR_BLACK)
on_color_closed_w(color_white)
on_color_closed_b(color_black)
func on_color_closed_w(color_white: ColorPickerButton):
var col_w = [color_white.color.r, color_white.color.g, color_white.color.b, color_white.color.a]
color_white.text = JSON.stringify(col_w)
ProjectSettings.set_setting('application/config/%s' % 'Цвет фона схемы', color_white.text)
func on_color_closed_b(color_black: ColorPickerButton):
var col_b = [color_black.color.r, color_black.color.g, color_black.color.b, color_black.color.a]
color_black.text = JSON.stringify(col_b)
ProjectSettings.set_setting('application/config/%s' % 'Цвет схемы', color_black.text)
func on_color_closed(color_btn_act: ColorPickerButton): func on_color_closed(color_btn_act: ColorPickerButton):

View File

@@ -467,7 +467,7 @@ func get_strob_band(pos: Vector2, prev: float) -> float:
## Устанавливает центр строба по частоте и направлению. ## Устанавливает центр строба по частоте и направлению.
func set_strob(pos: Vector2) -> void: func set_strob(pos: Vector2) -> void:
var radp: Vector2 = tools.map_dec_to_rad(radius_center, pos) var radp: Vector2 = tools.map_dec_to_rad(radius_center, pos / 2.0)
if radp.y < $canvas.get_radius_outter(): if radp.y < $canvas.get_radius_outter():
$canvas.set_strob_dir(radp.x) $canvas.set_strob_dir(radp.x)
$canvas.set_strob_radius(radp.y) $canvas.set_strob_radius(radp.y)

View File

@@ -74,18 +74,24 @@ strob_min_band = 0.1
strob_min_width = 5.0 strob_min_width = 5.0
metadata/_edit_vertical_guides_ = [] metadata/_edit_vertical_guides_ = []
[node name="btn_view" type="CheckBox" parent="."] [node name="canvas" parent="." instance=ExtResource("11_b6su4")]
layout_mode = 0 layout_mode = 0
offset_left = 835.0 offset_left = 280.0
offset_top = 5.0 offset_top = 280.0
offset_right = 994.0 offset_right = 840.0
offset_bottom = 32.0 offset_bottom = 840.0
pivot_offset = Vector2(280, 280)
[node name="btn_view" type="CheckBox" parent="canvas"]
layout_mode = 0
offset_left = 417.5
offset_top = 2.5
offset_right = 576.5
offset_bottom = 29.5
scale = Vector2(0.5, 0.5)
action_mode = 0 action_mode = 0
text = "Обзорная карта" text = "Обзорная карта"
[node name="canvas" parent="." instance=ExtResource("11_b6su4")]
metadata/_edit_lock_ = true
[node name="tilemap" parent="." instance=ExtResource("10_gtwyg")] [node name="tilemap" parent="." instance=ExtResource("10_gtwyg")]
self_modulate = Color(1, 1, 1, 0.415686) self_modulate = Color(1, 1, 1, 0.415686)
position = Vector2(360, 360) position = Vector2(360, 360)
@@ -378,7 +384,7 @@ texture_normal = ExtResource("14_ggrwd")
[connection signal="drag_begin" from="." to="." method="_on_drag_begin"] [connection signal="drag_begin" from="." to="." method="_on_drag_begin"]
[connection signal="drag_continue" from="." to="." method="_on_drag_continue"] [connection signal="drag_continue" from="." to="." method="_on_drag_continue"]
[connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"] [connection signal="toggled" from="canvas/btn_view" to="." method="on_button_view_toggled"]
[connection signal="toggled" from="chk_auto" to="." method="on_value_changed"] [connection signal="toggled" from="chk_auto" to="." method="on_value_changed"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [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="toggled" from="btn_center" to="." method="on_btn_center_toggled"]

View File

@@ -4,8 +4,8 @@
[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat/button-flat.tscn" id="2_eju8r"] [ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat/button-flat.tscn" id="2_eju8r"]
[ext_resource type="Texture2D" uid="uid://csnts8f155sf7" path="res://data/save1.png" id="3_onafb"] [ext_resource type="Texture2D" uid="uid://csnts8f155sf7" path="res://data/save1.png" id="3_onafb"]
[ext_resource type="Texture2D" uid="uid://o8mam0a060d8" path="res://data/load1.png" id="4_afjfs"] [ext_resource type="Texture2D" uid="uid://o8mam0a060d8" path="res://data/load1.png" id="4_afjfs"]
[ext_resource type="Texture2D" uid="uid://bdlbqs88bki8x" path="res://data/connect-a.png" id="5_2nrut"] [ext_resource type="Texture2D" uid="uid://bdlbqs88bki8x" path="res://data/connect-a.png" id="5_wk8og"]
[ext_resource type="Texture2D" uid="uid://u3tnejvpm8it" path="res://data/disconnect-a.png" id="6_g3q7m"] [ext_resource type="Texture2D" uid="uid://u3tnejvpm8it" path="res://data/disconnect-a.png" id="6_1fbmy"]
[ext_resource type="Script" uid="uid://c5pq0hbrij34d" path="res://table/table.gd" id="8_qcl30"] [ext_resource type="Script" uid="uid://c5pq0hbrij34d" path="res://table/table.gd" id="8_qcl30"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mu34x"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mu34x"]
@@ -35,30 +35,30 @@ modulate_color = Color(0.8, 0.533333, 0.27451, 1)
texture = ExtResource("4_afjfs") texture = ExtResource("4_afjfs")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o7qii"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o7qii"]
texture = ExtResource("5_2nrut") texture = ExtResource("5_wk8og")
modulate_color = Color(0.8, 0.533333, 0.27451, 1) modulate_color = Color(0.8, 0.533333, 0.27451, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mgr7r"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mgr7r"]
texture = ExtResource("5_2nrut") texture = ExtResource("5_wk8og")
expand_margin_left = 3.0 expand_margin_left = 3.0
expand_margin_top = 3.0 expand_margin_top = 3.0
modulate_color = Color(0.8, 0.533333, 0.27451, 1) modulate_color = Color(0.8, 0.533333, 0.27451, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hxhyh"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hxhyh"]
texture = ExtResource("5_2nrut") texture = ExtResource("5_wk8og")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tnihm"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tnihm"]
texture = ExtResource("6_g3q7m") texture = ExtResource("6_1fbmy")
modulate_color = Color(0.8, 0.533333, 0.27451, 1) modulate_color = Color(0.8, 0.533333, 0.27451, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_k1qbi"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_k1qbi"]
texture = ExtResource("6_g3q7m") texture = ExtResource("6_1fbmy")
expand_margin_left = 3.0 expand_margin_left = 3.0
expand_margin_top = 3.0 expand_margin_top = 3.0
modulate_color = Color(0.8, 0.533333, 0.27451, 1) modulate_color = Color(0.8, 0.533333, 0.27451, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pe5pe"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pe5pe"]
texture = ExtResource("6_g3q7m") texture = ExtResource("6_1fbmy")
[node name="ЭМС" type="Panel"] [node name="ЭМС" type="Panel"]
offset_right = 1598.0 offset_right = 1598.0
@@ -126,10 +126,10 @@ theme_override_styles/normal = SubResource("StyleBoxTexture_3ytmi")
[node name="btn_connect" type="Button" parent="."] [node name="btn_connect" type="Button" parent="."]
layout_mode = 0 layout_mode = 0
offset_left = 627.0 offset_left = 716.0
offset_top = 55.0 offset_top = 40.0
offset_right = 679.0 offset_right = 763.0
offset_bottom = 87.0 offset_bottom = 73.0
focus_mode = 0 focus_mode = 0
theme_override_colors/icon_normal_color = Color(1, 1, 1, 1) theme_override_colors/icon_normal_color = Color(1, 1, 1, 1)
theme_override_styles/focus = SubResource("StyleBoxTexture_o7qii") theme_override_styles/focus = SubResource("StyleBoxTexture_o7qii")
@@ -141,10 +141,10 @@ theme_override_styles/normal = SubResource("StyleBoxTexture_hxhyh")
[node name="btn_disconnect" type="Button" parent="."] [node name="btn_disconnect" type="Button" parent="."]
layout_mode = 0 layout_mode = 0
offset_left = 714.0 offset_left = 718.0
offset_top = 741.0 offset_top = 735.0
offset_right = 766.0 offset_right = 764.0
offset_bottom = 775.0 offset_bottom = 764.0
focus_mode = 0 focus_mode = 0
theme_override_colors/icon_normal_color = Color(1, 1, 1, 1) theme_override_colors/icon_normal_color = Color(1, 1, 1, 1)
theme_override_styles/focus = SubResource("StyleBoxTexture_tnihm") theme_override_styles/focus = SubResource("StyleBoxTexture_tnihm")

View File

@@ -8,31 +8,8 @@ func _ready() -> void:
func on_trassa_line_changed(unit_trassa): func on_trassa_line_changed(unit_trassa):
if unit_trassa.online: pass
$'454/СостояниеРэс3'.self_modulate = Color.WEB_GREEN
$'СкруглённыйПрямоугольникБелый/Label3'.text = 'Трасса'
$'СкруглённыйПрямоугольникБелый/Label4'.text = 'Трасса'
$'СкруглённыйПрямоугольникБелый/Label5'.text = 'Активный'
$'СкруглённыйПрямоугольникБелый/Label6'.text = str(unit_trassa.daa)
$'СкруглённыйПрямоугольникБелый/Label7'.text = str(unit_trassa.dap)
$'СкруглённыйПрямоугольникБелый/Label8'.text = '1'
$'СкруглённыйПрямоугольникБелый/Label9'.text = str(unit_trassa.lfb)
$'СкруглённыйПрямоугольникБелый/Label10'.text = str(unit_trassa.lfb)
else:
$'454/СостояниеРэс3'.self_modulate = Color.WHITE
$'СкруглённыйПрямоугольникБелый/Label3'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label4'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label5'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label6'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label7'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label8'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label9'.text = '-'
$'СкруглённыйПрямоугольникБелый/Label10'.text = '-'
func on_sector_klaster(_data, unit_trassa): func on_sector_klaster(_data, unit_trassa):
$'СкруглённыйПрямоугольникБелый/Label6'.text = str(unit_trassa.dap) pass
$'СкруглённыйПрямоугольникБелый/Label7'.text = str(unit_trassa.daa)
$'СкруглённыйПрямоугольникБелый/Label8'.text = '1'
$'СкруглённыйПрямоугольникБелый/Label9'.text = str(unit_trassa.lfb)
$'СкруглённыйПрямоугольникБелый/Label10'.text = str(unit_trassa.hfb)

File diff suppressed because it is too large Load Diff

View File

@@ -30,12 +30,15 @@ signal режим_журнал()
## Вызывается при переходе в режим [b]ЭМС[/b]. ## Вызывается при переходе в режим [b]ЭМС[/b].
signal режим_эмс() signal режим_эмс()
## Вызывается при переходе в режим [b]ЭМС ТГ[/b]. ## Вызывается при переходе в режим [b]ЭМС ТГ[/b].
signal режим_эмс2() signal режим_эмс2()
## Вызывается при переходе в режим [b]Настройка[/b]. ## Вызывается при переходе в режим [b]Настройка[/b].
signal режимастройки() signal режимастройки()
## Вызывается при включении/отключении режима [b]Тренаж[/b].[br] ## Вызывается при включении/отключении режима [b]Тренаж[/b].[br]
## [param val] - [b]true[/b] тренаж включён. ## [param val] - [b]true[/b] тренаж включён.
signal режимренаж(val: bool) signal режимренаж(val: bool)
@@ -215,10 +218,10 @@ signal tool_tip(new_ctrl_pos)
signal update_fs_closed(fs_closed: Dictionary) signal update_fs_closed(fs_closed: Dictionary)
signal sector_klaster (new_sector_data) signal sector_klaster(new_sector_data)
signal clear_klaster () signal clear_klaster()
## Вызывается при нажатии на кнопку "Запуск контроля".[br] ## Вызывается при нажатии на кнопку "Запуск контроля".[br]

View File

@@ -160,7 +160,7 @@ class TCP5P28 extends unit.Unit:
flags |= 0 << 8 # Флаг рекомендуемой помехи flags |= 0 << 8 # Флаг рекомендуемой помехи
flags |= int(th.fflags['aoa']) << 9 # Флаг доставерности пеленга flags |= int(th.fflags['aoa']) << 9 # Флаг доставерности пеленга
flags |= int(th.fflags['alt']) << 10 # Флаг доставерности высоты flags |= int(th.fflags['alt']) << 10 # Флаг доставерности высоты
flags |= int(th.fflags['power']) << 11 # Флаг доставерности мощности flags |= int(th.fflags['pow']) << 11 # Флаг доставерности мощности
flags |= int(th.fflags['baud']) << 12 # Флаг доставерности ск. мод. flags |= int(th.fflags['baud']) << 12 # Флаг доставерности ск. мод.
flags |= int(th.fflags['slon']) << 13 # Флаг доставерности долготы ст. позиции flags |= int(th.fflags['slon']) << 13 # Флаг доставерности долготы ст. позиции
flags |= int(th.fflags['slat']) << 14 # Флаг доставерности широты ст. позиции flags |= int(th.fflags['slat']) << 14 # Флаг доставерности широты ст. позиции
@@ -174,7 +174,7 @@ class TCP5P28 extends unit.Unit:
th_data.encode_u16(16, int(th.alt)) # Высота объекта th_data.encode_u16(16, int(th.alt)) # Высота объекта
th_data.encode_u16(18, int(th.freq)) # Частота объекта th_data.encode_u16(18, int(th.freq)) # Частота объекта
th_data.encode_u16(20, int(th.width)) # Ширина частотной полосы объекта th_data.encode_u16(20, int(th.width)) # Ширина частотной полосы объекта
th_data.encode_u8(22, int(th.power)) # Мощность излучения объекта th_data.encode_u8(22, int(th.pow)) # Мощность излучения объекта
var mod = MOD_TYPES.find(th.tmod) var mod = MOD_TYPES.find(th.tmod)
if mod == -1: mod = 0 if mod == -1: mod = 0
th_data.encode_u8(23, int(mod)) # Тип модуляции th_data.encode_u8(23, int(mod)) # Тип модуляции

View File

@@ -80,14 +80,14 @@ class YaU07 extends unit.Unit:
rc = Error.FAILED rc = Error.FAILED
return rc return rc
func send_flash(cmd_code: int, fl_data: Array, num_byte_rd: int, id_sector: int = 0) -> bool: func send_flash(cmd_code: CmdCode, fl_data: Array, num_byte_rd: int, id_sector: int = 0) -> bool:
if (cmd_state == CmdState.WAIT) \ if (cmd_state == CmdState.WAIT) \
or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.SEND) \
or (cmd_state == CmdState.UNCK): or (cmd_state == CmdState.UNCK):
return false return false
if not ((cmd_code == CmdCode.ERASE_FLASH) or (cmd_code == CmdCode.WRITE_FLASH) \ if not cmd_code in [CmdCode.ERASE_FLASH,
or (cmd_code == CmdCode.READ_FLASH) or (cmd_code == CmdCode.LOAD_FLASH) CmdCode.WRITE_FLASH, CmdCode.READ_FLASH, CmdCode.LOAD_FLASH,
or (cmd_code == CmdCode.READ_FLASH_MP550) or (cmd_code == CmdCode.WRITE_FLASH_MP550)): CmdCode.READ_FLASH_MP550, CmdCode.WRITE_FLASH_MP550]:
return false return false
cmd_num_tx = (cmd_num_rx + 1) % 0xffff cmd_num_tx = (cmd_num_rx + 1) % 0xffff
tx_data.encode_u16(0, cmd_retry) tx_data.encode_u16(0, cmd_retry)
@@ -122,7 +122,7 @@ class YaU07 extends unit.Unit:
cmd_code_tx = cmd_code cmd_code_tx = cmd_code
return true return true
func send_isa(cmd_code: int, ports_data: Array) -> bool: func send_isa(cmd_code: CmdCode, ports_data: Array) -> bool:
if (cmd_state == CmdState.WAIT) \ if (cmd_state == CmdState.WAIT) \
or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.SEND) \
or (cmd_state == CmdState.UNCK): or (cmd_state == CmdState.UNCK):
@@ -150,7 +150,7 @@ class YaU07 extends unit.Unit:
cmd_code_tx = cmd_code cmd_code_tx = cmd_code
return true return true
func send_block(cmd_code: int, block_len: int, port: Array) -> bool: func send_block(cmd_code: CmdCode, block_len: int, port: Array) -> bool:
if (cmd_state == CmdState.WAIT) \ if (cmd_state == CmdState.WAIT) \
or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.SEND) \
or (cmd_state == CmdState.UNCK): or (cmd_state == CmdState.UNCK):
@@ -173,7 +173,7 @@ class YaU07 extends unit.Unit:
cmd_code_tx = cmd_code cmd_code_tx = cmd_code
return true return true
func send_load_ems_done(cmd_code: int) -> bool: func send_load_ems_done(cmd_code: CmdCode) -> bool:
if (cmd_state == CmdState.WAIT) \ if (cmd_state == CmdState.WAIT) \
or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.SEND) \
or (cmd_state == CmdState.UNCK): or (cmd_state == CmdState.UNCK):

101
shaders/antenas.gdshader Normal file
View File

@@ -0,0 +1,101 @@
shader_type canvas_item;
#include "tools.gdshaderinc"
#define ANT_BAND_READY 1U /* Антенна (модуль ФС) готова или исправна */
#define ANT_BAND_FAILED 0U /* Антенна (модуль ФС) не исправно */
// Конфигурация сетки
uniform int grid_cells_angle = 4; /* Количество секторов (90° каждый) */
uniform int grid_layers_radius = 7; /* Количество слоёв по радиусу */
uniform float alpha: hint_range(0.0, 1.0) = 0.5;
uniform float inner_radius = 0.36; /* Внутренняя незакрашенная окружность. Относительное значение */
uniform float outer_radius = 1.0; /* Внешний радиус. Относительное значение */
uniform float grid_line_width = 0.0025; /* Сетка, ширина линий. Относительное значение */
uniform float rotation: hint_range(0, 360) = 0.0;
uniform float ffr: hint_range(0.0, 1.0) = 0.15; /* Индикация неисправности модулей ФС. Заметность штриховки. Индикация неисправности модулей ФС */
uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */
uniform float pfr: hint_range(0.01, 1.0) = 0.025; /* Индикация неисправности модулей ФС. Частота штриховки */
// Вариант 1: Массив цветов для каждой ячейки (4×7 = 28)
uniform vec4 ant_band_c[28]: source_color;
uniform uint ant_band_m[28];
varying vec2 centered_uv;
void vertex()
{
// 1. Переводим UV в координаты относительно центра (-1..1)
centered_uv = (UV - 0.5) * 2.0;
rotate_vec2(centered_uv, radians(rotation + 315.0), vec2(0, 0));
}
void fragment()
{
float dist = length(centered_uv);
// 2. Отсекаем за пределами внешнего радиуса
if (dist > outer_radius) {
COLOR = vec4(0.0);
discard;
}
// 3. Отсекаем внутри внутреннего радиуса
if (dist < inner_radius) {
COLOR = vec4(0.0);
discard;
}
// 4. Вычисляем полярные координаты
float angle = 6.28318530718 - atan(centered_uv.y, centered_uv.x);
// Приводим к диапазону 0..2π
angle = mod(angle + 6.28318530718, 6.28318530718);
// 5. Определяем индексы ячейки
// Сектор (0..3)
float sector_width = 6.28318530718 / float(grid_cells_angle);
int sector_idx = int(angle / sector_width);
// Слой (0..6)
float available_radius = outer_radius - inner_radius;
float normalized_radius = (dist - inner_radius) / available_radius;
float layer_height = 1.0 / float(grid_layers_radius);
int layer_idx = int(normalized_radius / layer_height);
// 6. Проверяем границы (чтобы не выйти за пределы)
if (layer_idx >= grid_layers_radius) {
COLOR = vec4(0.0);
discard;
}
// 7. Рассчитываем глобальный индекс ячейки (0..27)
int cell_index = layer_idx * grid_cells_angle + sector_idx;
// 8. Получаем цвет ячейки (два варианта) из массива цветов
vec4 cell_color = ant_band_c[cell_index];
// Границы по углу
float angle_in_sector = mod(angle, sector_width);
if (angle_in_sector < grid_line_width ||
sector_width - angle_in_sector < grid_line_width) {
cell_color.rgb *= 0.7; // Затемняем границы
}
// Границы по радиусу
float radius_in_layer = mod(normalized_radius, layer_height);
if (radius_in_layer < grid_line_width ||
layer_height - radius_in_layer < grid_line_width) {
cell_color.rgb *= 0.7; // Затемняем границы
}
// Подмешивание шума для включённых
cell_color.a = alpha + random_timed(centered_uv) * cell_color.a;
// Индикация не исправности
if (ant_band_m[cell_index] == ANT_BAND_FAILED)
{
cell_color.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * centered_uv.x / pfr)) * ffr;
}
COLOR = cell_color;
}

View File

@@ -0,0 +1 @@
uid://dhipoo0ju5ebg

View File

@@ -1,142 +0,0 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=4 uid="uid://s6xe8igevnv2"]
[sub_resource type="Shader" id="1"]
code = "shader_type canvas_item;
#include \"tools.gdshaderinc\"
#define RADIUS_INNER_0 200.0 /* Радиус внутренний для режима приоритет РТО */
#define RADIUS_INNER_1 480.0 /* Радиус внутренний для режима приоритет РЛС */
#define ANTENAS_COUNT 28 /* Количество антенн */
#define ANT_BAND_READY 1U /* Антенна (модуль ФС) готова или исправна */
#define ANT_BAND_FAILED 0U /* Антенна (модуль ФС) не исправно */
uniform vec2 pc0 = vec2(560, 560); /* Центр сетки антенн */
uniform float rotation: hint_range(0.0, 360.0) = 0.0; /* */
uniform vec4 color0: source_color = vec4(0.38, 0.47, 0.51, 0.4);
uniform vec4 color1: source_color = vec4(0.39, 0.44, 0.50, 0.4);
uniform float radius_inner_0 = RADIUS_INNER_0;
uniform float radius_inner_1 = RADIUS_INNER_1;
uniform float radius_outter = 550.0; /* Радиус внешний. Должно быть равно ant_band_r1_6 */
uniform float alpha: hint_range(0.0, 1.0) = 0.5;
uniform int mode = 0; /* Режим отображения. Приоритет РТО - 0, приоритет РЛС - 1 */
uniform float ffr: hint_range(0.0, 1.0) = 0.2; /* Индикация неисправности модулей ФС. Заметность штриховки. */
uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */
uniform float afr: hint_range(0.0, 180.0) = 0.0; /* Индикация неисправности модулей ФС. Наклон штрховки */
uniform float pfr: hint_range(1.0, 20.0) = 10.0; /* Индикация неисправности модулей ФС. Частота штриховки */
const int ant_band_count_0 = 2;
const int ant_band_count_1 = 2;
const int ant_band_count_2 = 2;
const int ant_band_count_3 = 2;
const int ant_band_count_4 = 2;
const int ant_band_count_5 = 2;
const int ant_band_count_6 = 2;
const float ant_band_r0_0[] = {RADIUS_INNER_0, RADIUS_INNER_1};
const float ant_band_r0_1[] = {250.0, 490.0};
const float ant_band_r0_2[] = {300.0, 500.0};
const float ant_band_r0_3[] = {350.0, 510.0};
const float ant_band_r0_4[] = {400.0, 520.0};
const float ant_band_r0_5[] = {450.0, 530.0};
const float ant_band_r0_6[] = {500.0, 540.0};
const float ant_band_r1_0[] = {250.0, 490.0};
const float ant_band_r1_1[] = {300.0, 500.0};
const float ant_band_r1_2[] = {350.0, 510.0};
const float ant_band_r1_3[] = {400.0, 520.0};
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};
uniform vec4 ant_band_c[ANTENAS_COUNT];
uniform uint ant_band_m[ANTENAS_COUNT];
const float d4 = 90.0;
const float ds = 1.0;
void sector(inout vec4 c, vec2 uv, vec2 center, float a, float da, float r0, float r1, vec4 color)
{
float l = distance(center, uv);
vec2 d = uv - center;
float sf = 500.0;
float theta = atan(d.x, d.y) * sf;
da /= 2.0;
float a0 = radians(a - da);
float a1 = radians(a + da);
float va = smooth_px(a0 * sf, theta, ds) - smooth_px(a1 * sf, theta, ds);
float vr = smooth_px(r0, l, ds) - smooth_px(r1, l, ds);
float rgb = sqrt(va * vr);
c.rgb += color.rgb * rgb * color.a;
c.a += rgb * color.a;
}
void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, inout int index)
{
float da = 180.0 / float(cnt);
for (int i = -cnt; i <= cnt; i ++)
{
vec4 col;
int j = index;
if (i == 2)
{
index--;
j = index - 3;
}
col.rgb = ant_band_c[j].rgb;
index++;
col.a = alpha + (random_timed(uv) - 0.5f) * ant_band_c[j].a;
if (ant_band_m[j] == ANT_BAND_FAILED)
{
vec2 uvr = uv;
rotate_vec2(uvr, radians(afr), pc0);
col.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * uvr.x / pfr)) * ffr;
}
float v = float(i & 1);
vec4 color = v * col + (1.0f - v) * col;
sector(c, uv, p0, float(i) * da, da, r0, r1, color);
}
}
void vertex()
{
rotate_vec2(VERTEX, radians(360.0 - rotation), pc0);
}
void fragment()
{
ivec2 isz = textureSize(TEXTURE, 0);
vec2 uv = UV * vec2(float(isz.x), float(isz.y)); // координаты текущей точки в пикселях
COLOR = vec4(0, 0, 0, 0);
int index = 0;
// Сетка антенн
antenas(COLOR, uv, pc0, ant_band_count_0, ant_band_r0_0[mode], ant_band_r1_0[mode], index);
antenas(COLOR, uv, pc0, ant_band_count_1, ant_band_r0_1[mode], ant_band_r1_1[mode], index);
antenas(COLOR, uv, pc0, ant_band_count_2, ant_band_r0_2[mode], ant_band_r1_2[mode], index);
antenas(COLOR, uv, pc0, ant_band_count_3, ant_band_r0_3[mode], ant_band_r1_3[mode], index);
antenas(COLOR, uv, pc0, ant_band_count_4, ant_band_r0_4[mode], ant_band_r1_4[mode], index);
antenas(COLOR, uv, pc0, ant_band_count_5, ant_band_r0_5[mode], ant_band_r1_5[mode], index);
antenas(COLOR, uv, pc0, ant_band_count_6, ant_band_r0_6[mode], ant_band_r1_6[mode], index);
}
"
[resource]
shader = SubResource("1")
shader_parameter/pc0 = Vector2(560, 560)
shader_parameter/rotation = 0.0
shader_parameter/color0 = Color(0.380392, 0.470588, 0.509804, 0.537255)
shader_parameter/color1 = Color(0.3315, 0.45645, 0.51, 0.537255)
shader_parameter/radius_inner_0 = 200.0
shader_parameter/radius_inner_1 = 480.0
shader_parameter/radius_outter = 550.0
shader_parameter/alpha = 0.5
shader_parameter/mode = 0
shader_parameter/ffr = 0.2
shader_parameter/sfr = 0.0
shader_parameter/afr = 0.0
shader_parameter/pfr = 10.0
shader_parameter/ant_band_c = PackedVector4Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
shader_parameter/ant_band_m = PackedInt32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

View File

@@ -2,5 +2,5 @@ shader_type canvas_item;
void fragment() void fragment()
{ {
COLOR.rgb = vec3(1.0, 1.0, 1.0) - log(COLOR.rgb); COLOR.rgb = vec3(1.0, 1.0, 1.0) - log(COLOR.rgb);
} }

View File

@@ -16,42 +16,40 @@ uniform float ant_band_r1_0 = 0.4;
float smooth_px(float r, float R, float dss) float smooth_px(float r, float R, float dss)
{ {
return 1.0 - smoothstep(R - dss, R + dss, r); return 1.0 - smoothstep(R - dss, R + dss, r);
} }
void sector(inout vec4 c, vec2 uv, vec2 cnt, float a, float da, float r0, float r1, vec4 col) void sector(inout vec4 c, vec2 uv, vec2 cnt, float a, float da, float r0, float r1, vec4 col)
{ {
float l = distance(cnt, uv); float l = distance(cnt, uv);
vec2 d = uv - cnt; vec2 d = uv - cnt;
float sf = 500.0; float sf = 500.0;
float theta = atan(d.x, d.y) * sf; float theta = atan(d.x, d.y) * sf;
da /= 2.0; da /= 2.0;
float a0 = radians(a - da); float a0 = radians(a - da);
float a1 = radians(a + da); float a1 = radians(a + da);
float va = smooth_px(a0 * sf, theta, dsr) - smooth_px(a1 * sf, theta, dsr); float va = smooth_px(a0 * sf, theta, dsr) - smooth_px(a1 * sf, theta, dsr);
float vr = smooth_px(r0, l, ds) - smooth_px(r1, l, ds); float vr = smooth_px(r0, l, ds) - smooth_px(r1, l, ds);
float rgb = sqrt(va * vr); float rgb = sqrt(va * vr);
c.rgb += col.rgb * rgb * col.a; c.rgb += col.rgb * rgb * col.a;
c.a += rgb * col.a; c.a += rgb * col.a;
} }
void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, vec4 c0, vec4 c1) void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, vec4 c0, vec4 c1)
{ {
float da = 180.0f / float(cnt); float da = 180.0f / float(cnt);
for (int i = -cnt; i <= cnt; i ++) for (int i = -cnt; i <= cnt; i ++)
{ {
float v = float(i & 1); float v = float(i & 1);
vec4 col = v * c0 + (1.0f - v) * c1; vec4 col = v * c0 + (1.0f - v) * c1;
sector(c, uv, p0, float(i) * da, da, r0, r1, col); sector(c, uv, p0, float(i) * da, da, r0, r1, col);
} }
} }
vec2 rotateUVmatrinx(vec2 uv, vec2 pivot, float rotation) vec2 rotateUVmatrinx(vec2 uv, vec2 pivot, float rotation)
{ {
mat2 rotation_matrix=mat2( vec2(sin(rotation),-cos(rotation)), mat2 rotation_matrix=mat2(vec2(sin(rotation), -cos(rotation)), vec2(cos(rotation),sin(rotation)));
vec2(cos(rotation),sin(rotation))
);
uv -= pivot; uv -= pivot;
uv *= rotation_matrix; uv *= rotation_matrix;
uv += pivot; uv += pivot;

View File

@@ -21,7 +21,7 @@ void vertex()
void fragment() void fragment()
{ {
COLOR = color; COLOR = color;
if (disabled) if (disabled)
{ {
float ds = 1.0 / sharpness; float ds = 1.0 / sharpness;

View File

@@ -8,16 +8,16 @@ float random_timed(vec2 uv)
float smooth_px(float r, float R, float ds) float smooth_px(float r, float R, float ds)
{ {
return 1.0 - smoothstep(R - ds, R + ds, r); return smoothstep(R + ds, R - ds, r);
} }
void circle_thin(inout vec3 color, vec2 uv, vec2 p, float r, float w, vec3 c, float a) void circle_thin(inout vec3 color, vec2 uv, vec2 p, float r, float w, vec3 c, float a)
{ {
float d = distance(uv, p); float d = distance(uv, p);
float v0 = r - w; float v0 = r - w;
float v1 = r + w; float v1 = r + w;
color += a * sqrt(smoothstep(v1, v0, d) * smoothstep(v0, v1, d) * c); color += a * sqrt(smoothstep(v1, v0, d) * smoothstep(v0, v1, d) * c);
} }

View File

@@ -19,9 +19,9 @@ uniform float speed: hint_range(0.0, 1024.0) = 0.0;
float line(vec2 p1, vec2 p2, float width, vec2 uv) float line(vec2 p1, vec2 p2, float width, vec2 uv)
{ {
float dist = distance(p1, p2); // Дистанция между точками float dist = distance(p1, p2); // Дистанция между точками
float dist_uv = distance(p1, uv); // Дистанция между точкой и текущим пикселем float dist_uv = distance(p1, uv); // Дистанция между точкой и текущим пикселем
return 1.0 - floor(1.0 - (0.001 * width) + distance (mix(p1, p2, clamp(dist_uv / dist, 0.0, 1.0)), uv)); return 1.0 - floor(1.0 - (0.001 * width) + distance (mix(p1, p2, clamp(dist_uv / dist, 0.0, 1.0)), uv));
} }
@@ -65,12 +65,12 @@ void fragment()
float px1 = 0.0; float px1 = 0.0;
float py0 = 0.0; float py0 = 0.0;
float py1 = 0.0; float py1 = 0.0;
COLOR = vec4(1.0, 0.0, 0.0, 0.0); //texture(TEXTURE, UV); // Цвет текущей точки COLOR = vec4(1.0, 0.0, 0.0, 0.0); // Цвет текущей точки
get_line_points(px0, px1, py0, py1, 330.0); get_line_points(px0, px1, py0, py1, 330.0);
COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV); COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV);
get_line_points(px0, px1, py0, py1, 90.0); get_line_points(px0, px1, py0, py1, 90.0);
COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV); COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV);
get_line_points(px0, px1, py0, py1, 210.0); get_line_points(px0, px1, py0, py1, 210.0);
COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV); COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV);
COLOR *= smooth_px(length(UV-center), radius, DSS); COLOR *= smooth_px(length(UV - center), radius, DSS);
} }

View File

@@ -13,5 +13,5 @@ vec3 bw_to_2color(vec3 c, vec3 dark, vec3 light)
void fragment() void fragment()
{ {
COLOR.rgb = bw_to_2color(texture(TEXTURE, UV).rgb, white, black); COLOR.rgb = bw_to_2color(texture(TEXTURE, UV).rgb, white, black);
} }