From f4a6a4d465e6f7bee2ffd1a9767c240d9a81082c Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 12 Jan 2026 15:56:35 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=20wa?= =?UTF-8?q?rning=20=D0=BF=D1=80=D0=B8=20=D1=80=D0=B0=D1=81=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=BA=D0=B8=20=D1=81=D0=BE=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D1=8F=20=D0=91=D0=9F=D0=9E=20=D0=BE=D1=82=20?= =?UTF-8?q?=D0=9A=D0=90=D0=9F=D0=A1=20=D0=A0=D0=9F=D0=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.tscn | 2 +- scripts/threats.gd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 8d9c5f26..0759e92e 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -389,8 +389,8 @@ texture_normal = ExtResource("14_ggrwd") [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] [connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"] -[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] [connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] +[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] [connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"] [connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"] [connection signal="pressed" from="btn_all_work" to="." method="_on_btn_all_work_pressed"] diff --git a/scripts/threats.gd b/scripts/threats.gd index f4d34d5e..0805975d 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -152,7 +152,7 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary): if not unit.json_dic.has('sa'): return var mis = unit.json_dic['mis'] - bpo_mode_rx = int(unit.json_dic['sa']) + bpo_mode_rx = int(unit.json_dic['sa']) as AFSP_BPO_MODE var sz: = threats.size() for dic_th in mis: if dic_th is not Dictionary: From 2919b0174f898600c8e7f59d1d3f6d1a2e7ea570 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 14 Jan 2026 14:00:35 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 40 ++++++++++++----------------- scenes/pribor-prd-k/pribor-prd-k.gd | 2 +- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 63db951a..ab7590ee 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -1,26 +1,22 @@ class_name Diagram extends ColorRect -const NUM_OF_RANGE = 7 -const NUM_OF_DIRECTIONS = 4 -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 ## Цвета по умолчанию для блоков ФС -var image: Image +const ANTS_COUNT: = 28 +const ANT_COLOR: = Color(0.38, 0.47, 0.51, 1.0) +@export var ant_color: Color = ANT_COLOR @export var SecZap: PackedScene @export var inner_radius_0: = 0.36 ## Внутренний радиус диаграммы в режиме РТО @export var inner_radius_1: = 0.855 ## Внутренний радиус диаграммы в обзора +var fs_default_colors: PackedColorArray ## Цвета по умолчанию для блоков ФС + func _ready() -> void: - image = Image.create(NUM_OF_RANGE * NUM_OF_DIRECTIONS, 1, false, Image.FORMAT_RGBA8) signaller.connect('map_mode_changed', Callable(self, 'set_view_mode')) ProjectSettings.connect('settings_changed', _on_settings_changed) _on_settings_changed() - set_def_colors() + _init_def_colors() + set_band_colors(fs_default_colors) func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125 @@ -52,9 +48,10 @@ func get_strob_width() -> float: return $строб.get_instance_shader_pa ## Выставляет цвета для секторов func set_band_colors(val: PackedColorArray): + var image: = Image.create(val.size(), 1, false, Image.FORMAT_RGBA8) for x in val.size(): image.set_pixel(x, 0, val[x]) - var tex = ImageTexture.create_from_image(image) + var tex: = ImageTexture.create_from_image(image) material.set('shader_parameter/sec_colors', tex) @@ -100,7 +97,7 @@ func set_seczap(id: int, szv: Vector4): func clear_all_seczap(): for child in get_children(): - if child.name.begins_with("SECZAP"): + if child.name.begins_with('SECZAP'): remove_child(child) child.queue_free() @@ -116,17 +113,12 @@ func set_view_mode(val: int): 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) + ant_color = ProjectSettings.get_setting('application/interfer/ant_color', ANT_COLOR) + ant_color *= Color(1.0, 1.0, 1.0, 0.0) ## Закрашивание по умолчанию блоков ФС цветами из настроек. -func set_def_colors(): - var col_arr: PackedColorArray = [color0, color1] - for i in NUM_OF_RANGE: - for j in NUM_OF_DIRECTIONS: - fs_default_colors.append(col_arr[i & 1]) - i += 1 - set_band_colors(fs_default_colors) +func _init_def_colors(): + fs_default_colors.clear() + for i in ANTS_COUNT: + fs_default_colors.append(ant_color) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index e28fbbe9..e59e3bcf 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -138,7 +138,7 @@ static func on_control_result(for_result_dic: Dictionary) -> void: if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug and block_kasseta_y5_prd_config_k.yau07: power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR else: - power_supply.state = STATE_VAL.NONE + power_supply.state = STATE_VAL.NONE # Проверяем состояние после установки if power_supply.state == STATE_VAL.ERROR: all_y5_good = false From a06df2b83235e1e7ee363d672e9694a93870619f Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 15 Jan 2026 09:55:39 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{lbl_ready.gd => lbl-ready.gd} | 62 +++++++++---------- .../{lbl_ready.gd.uid => lbl-ready.gd.uid} | 0 scenes/tabs-switch/tab-switch.tscn | 2 +- scripts/pribor-prd.gd | 23 +++---- 4 files changed, 40 insertions(+), 47 deletions(-) rename scenes/tabs-switch/{lbl_ready.gd => lbl-ready.gd} (82%) rename scenes/tabs-switch/{lbl_ready.gd.uid => lbl-ready.gd.uid} (100%) diff --git a/scenes/tabs-switch/lbl_ready.gd b/scenes/tabs-switch/lbl-ready.gd similarity index 82% rename from scenes/tabs-switch/lbl_ready.gd rename to scenes/tabs-switch/lbl-ready.gd index e924e135..584b0d57 100644 --- a/scenes/tabs-switch/lbl_ready.gd +++ b/scenes/tabs-switch/lbl-ready.gd @@ -13,9 +13,9 @@ enum DEVICE_STATUS { } const STATUS_CONFIG := { - DEVICE_STATE.NONE: {"text": "Нет связи", "color": Color.WHITE, "font_color": Color.BLACK}, - DEVICE_STATE.GOOD: {"text": "Исправно", "color": Color.GREEN, "font_color": Color.BLACK}, - DEVICE_STATE.ERR: {"text": "Отказ", "color": Color.RED, "font_color": Color.WHITE} + DEVICE_STATE.NONE: {'text': 'Нет связи', 'color': Color.WHITE, 'font_color': Color.BLACK}, + DEVICE_STATE.GOOD: {'text': 'Исправно', 'color': Color.GREEN, 'font_color': Color.BLACK}, + DEVICE_STATE.ERR: {'text': 'Отказ', 'color': Color.RED, 'font_color': Color.WHITE} } class DeviceObserver: @@ -161,15 +161,15 @@ func _recalculate_overall_state() -> void: func _update_display() -> void: - var config: Dictionary + var config: Dictionary = STATUS_CONFIG[overall_prd_state] text = config.text modulate = config.color - add_theme_color_override("font_color", config.font_color) + add_theme_color_override('font_color', config.font_color) tooltip_text = _get_tooltip_text() func _get_tooltip_text() -> String: - var tooltip := "" + var tooltip := '' # Получаем статистику по ПРД var prd_summary = _get_prd_summary() @@ -177,17 +177,17 @@ func _get_tooltip_text() -> String: match overall_prd_state: DEVICE_STATE.NONE: - tooltip = "Нет исправных систем в комплексе" + tooltip = 'Нет исправных систем в комплексе' DEVICE_STATE.GOOD: - tooltip = "Комплекс исправен" + tooltip = 'Комплекс исправен' DEVICE_STATE.ERR: - tooltip = "Обнаружены неисправности в комплексе" + tooltip = 'Обнаружены неисправности в комплексе' - tooltip += "\n\nСтатус ПРД систем: " + prd_summary - tooltip += "\nСтатус УФ: " + uf_status_str + tooltip += '\n\nСтатус ПРД систем: ' + prd_summary + tooltip += '\nСтатус УФ: ' + uf_status_str # Детализация по источникам статуса - tooltip += "\n\nСостояние систем:" + tooltip += '\n\nСостояние систем:' # ПРД системы var prd_ok_count = 0 @@ -198,10 +198,10 @@ func _get_tooltip_text() -> String: if observer.status[DEVICE_STATUS.STATUS]: prd_ok_count += 1 - tooltip += "\nПРД: %d/%d исправно" % [prd_ok_count, prd_total] + tooltip += '\nПРД: %d/%d исправно' % [prd_ok_count, prd_total] # УФ система - tooltip += "\nУФ: " + _get_uf_status_text() + tooltip += '\nУФ: ' + _get_uf_status_text() return tooltip @@ -217,21 +217,21 @@ func _get_prd_summary() -> String: operational_count += 1 if online_count == 0: - return "Нет связи" + return 'Нет связи' else: - return "%d/%d исправно" % [operational_count, online_count] + return '%d/%d исправно' % [operational_count, online_count] func _get_uf_status_text() -> String: match status_uf: DEVICE_STATE.NONE: - return "Нет данных" + return 'Нет данных' DEVICE_STATE.GOOD: - return "Исправен" + return 'Исправен' DEVICE_STATE.ERR: - return "Неисправен" + return 'Неисправен' _: - return "Неизвестно" + return 'Неизвестно' func _has_prd_errors() -> bool: @@ -253,11 +253,11 @@ func get_device_status(device_name: String) -> Dictionary: var observer: DeviceObserver = device_observers.get(device_name) if observer: return { - "online": observer.status[DEVICE_STATUS.ONLINE], - "operational": observer.status[DEVICE_STATUS.STATUS], - "control_complete": observer.status[DEVICE_STATUS.CONTROL], - "last_results": observer.last_results, - "status_uf": status_uf + 'online': observer.status[DEVICE_STATUS.ONLINE], + 'operational': observer.status[DEVICE_STATUS.STATUS], + 'control_complete': observer.status[DEVICE_STATUS.CONTROL], + 'last_results': observer.last_results, + 'status_uf': status_uf } return {} @@ -276,10 +276,10 @@ func get_overall_status() -> Dictionary: control_complete_count += 1 return { - "overall_state": overall_prd_state, - "online_devices": online_count, - "operational_devices": operational_count, - "total_devices": device_observers.size(), - "control_complete_devices": control_complete_count, - "uf_status": status_uf + 'overall_state': overall_prd_state, + 'online_devices': online_count, + 'operational_devices': operational_count, + 'total_devices': device_observers.size(), + 'control_complete_devices': control_complete_count, + 'uf_status': status_uf } diff --git a/scenes/tabs-switch/lbl_ready.gd.uid b/scenes/tabs-switch/lbl-ready.gd.uid similarity index 100% rename from scenes/tabs-switch/lbl_ready.gd.uid rename to scenes/tabs-switch/lbl-ready.gd.uid diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index 618318ed..01780db4 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -7,7 +7,7 @@ [ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/эмс/эмс.tscn" id="5_u71bh"] [ext_resource type="PackedScene" uid="uid://musb21x2u0xs" path="res://scenes/эмс2/эмс2.tscn" id="6_41d34"] [ext_resource type="PackedScene" uid="uid://bnptm4rlp60dq" path="res://scenes/настройки/настройки.tscn" id="6_i8iv3"] -[ext_resource type="Script" uid="uid://b5ykwyk5vpi6" path="res://scenes/tabs-switch/lbl_ready.gd" id="8_tidwt"] +[ext_resource type="Script" uid="uid://b5ykwyk5vpi6" path="res://scenes/tabs-switch/lbl-ready.gd" id="8_tidwt"] [ext_resource type="Script" uid="uid://roajn6c6wvc1" path="res://scenes/tabs-switch/тренаж_режим.gd" id="9_41d34"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tidwt"] diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 1097ddde..39577c58 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -208,7 +208,7 @@ func _initialize_default_states() -> void: 'ems_g_sock_dic': ems_g_sock_dic.duplicate(true), # Структуры данных (глубокое копирование) - 'power_for_litera': _deep_copy_power_structure(), + 'power_for_litera': power_for_litera.duplicate(true), 'control_results': control_results.duplicate(true), 'power_result': power_result.duplicate(true), 'temperature_um': temperature_um.duplicate(true), @@ -1140,16 +1140,15 @@ static func _create_fs_mapping(s_name: String) -> Dictionary: ## Получение статуса ФС static func on_fs_state(packet_type_7: Dictionary, fs_mapping: Dictionary, fs_results: Dictionary, fs_rules_config: Array) -> Dictionary: - var updated_results := fs_results for fs_num in packet_type_7: if not (fs_num in fs_mapping and fs_mapping[fs_num]['condition']): continue var fs_data = packet_type_7[fs_num] for rule in fs_rules_config: - if _should_apply_rule(fs_num, rule, updated_results): - updated_results[rule.key] = fs_data.isg + if _should_apply_rule(fs_num, rule, fs_results): + fs_results[rule.key] = fs_data.isg break - return updated_results + return fs_results ## Вспомогательная функция для проверки применения правила @@ -1288,7 +1287,7 @@ static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pri var ray_dic: Dictionary = power_dic[litera] # Проверка наличия данных - if ray_dic[RAY_m5].size() == 0 or \ + if ray_dic[RAY_m5].size() == 0 or \ ray_dic[RAY_5 ].size() == 0 or \ ray_dic[RAY_15].size() == 0 or \ ray_dic[RAY_25].size() == 0 or \ @@ -1301,7 +1300,7 @@ static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pri var low_power_by_position: Array = [0, 0, 0, 0, 0, 0] # Счетчики для 6 позиций for ray_key in [RAY_m5, RAY_5, RAY_15, RAY_25, RAY_35, RAY_45]: var power_array: Array = ray_dic[ray_key] - for i in range(power_array.size()): + for i in power_array.size(): if power_array[i] < cnst.POWER_THRESHOLD: low_power_by_position[i] += 1 @@ -1316,14 +1315,7 @@ static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pri #endregion #region DEFAULT_STATES -## Глубокое копирование структуры мощностей -func _deep_copy_power_structure() -> Dictionary: - var copy = {} - for litera in power_for_litera: - copy[litera] = {} - for ray_type in power_for_litera[litera]: - copy[litera][ray_type] = power_for_litera[litera][ray_type] - return copy + ## Восстановление состояний по умолчанию func restore_default_states() -> void: @@ -1358,6 +1350,7 @@ func restore_default_states() -> void: _set_status('Состояния сброшены к значениям по умолчанию') + ## Получение текущих состояний для отладки func get_current_states() -> Dictionary: return { From e261ada3cdc75e37aff0eca75fa7ff8f1fc744cf Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 15 Jan 2026 12:59:39 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f2eb032..e577d935 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ # Сборка исполняемого файла из консоли -- Запустить скрипт `build.sh` +- Запустить скрипт [`build.sh`](build.sh) # Взаимодействие с 5П-28 From d2f4c8017c1968cc35d8e9b80b5511f10c7cef2e Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 15 Jan 2026 13:01:59 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e577d935..1ae13f24 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Разработка -- После клонирования запустить скрипт `git-hooks-config.sh` - - В среде **Windows** запуск скрипта `git-hooks-config.sh` производить из оболочки `git bash` -- При необходимости обновить `settings.json` +- После клонирования запустить скрипт [`git-hooks-config.sh`](git-hooks-config.sh) + - В среде **Windows** запуск скрипта [`git-hooks-config.sh`](git-hooks-config.sh) производить из оболочки `git bash` +- При необходимости обновить [`settings.json`](settings.json) - Использовать выражения вида `ProjectSettings.set_setting('application/config/%s' % key_name` и `ProjectSettings.get_setting('application/config/%s % key_name)` для доступа к настройкам. - `key_name` брать из таблицы `res://scenes/настройки/настройки.gd/SETTING_TABLE`