Доработка. Теперь пути загрузки сцен управляются редактором
This commit is contained in:
@@ -1,14 +1,42 @@
|
|||||||
class_name configure extends Panel
|
class_name configure extends Panel
|
||||||
|
|
||||||
const TableHeader = preload('res://table/header.tscn')
|
@export var TableHeader: PackedScene
|
||||||
const TableToggle = preload('res://table/settings-toggle.tscn')
|
@export var TableToggle: PackedScene
|
||||||
const TableEdit = preload('res://table/ячейка-2.tscn')
|
@export var TableEdit: PackedScene
|
||||||
const TableColorPick = preload('res://table/ячейка-цвет.tscn')
|
@export var TableColorPick: PackedScene
|
||||||
|
|
||||||
const ALIGNMENT = [HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
|
const ALIGNMENT = [HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
|
||||||
const HEADER_ROW = [TableHeader, TableHeader]
|
const HEADER_ROW_TEXT: = ['Параметр', 'Значение']
|
||||||
const HEADER_ROW_TEXT = ['Параметр', 'Значение']
|
|
||||||
const SETTING_TABLE = [
|
var HEADER_ROW: Array
|
||||||
|
|
||||||
|
## TODO: Придумать как избавиться от индексов
|
||||||
|
## Индексы строк таблицы.
|
||||||
|
const EXTERNAL_CU = 16 ## Внешнее целеуказание
|
||||||
|
const TRASSA = 17 ## Строка - Трасса
|
||||||
|
const SUPPRESS = 18 ## Строка - Подавление
|
||||||
|
const KEYBOARD = 19 ## Строка - Виртуальная клавиатура
|
||||||
|
const HIDE_EMS2 = 20 ## Строка - Скрыть вкладку ЭМС 2
|
||||||
|
const DEBAG_CONTROL = 21 ## Строка - Отладка контроля
|
||||||
|
const COMMIT = 22 ## Строка - Версия УАРЭП
|
||||||
|
const GOS_BTN = 52 ## Разрешить работу по своим целям
|
||||||
|
const COLOR_BTN_ACT = 54 ## Цвет кнопки "Подавление"
|
||||||
|
const COLOR_WHITE = 55 ## Цвет фона схемы
|
||||||
|
const COLOR_BLACK = 56 ## Цвет схемы
|
||||||
|
const COLOR_THEME = 57 ## Цвет темы
|
||||||
|
|
||||||
|
var SETTING_TABLE: Array
|
||||||
|
|
||||||
|
var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки
|
||||||
|
var table_color_instance: Node ## Нода цвета кнопки подавления
|
||||||
|
|
||||||
|
func on_checkbutton_pressed(i_row: int):
|
||||||
|
on_row_pressed(i_row)
|
||||||
|
|
||||||
|
|
||||||
|
func _init_scene_arrays():
|
||||||
|
HEADER_ROW = [TableHeader, TableHeader]
|
||||||
|
SETTING_TABLE = [
|
||||||
['Ограниченный режим', TableEdit, TableToggle, 'Ограничть возможности по постановке помех'], # 0
|
['Ограниченный режим', TableEdit, TableToggle, 'Ограничть возможности по постановке помех'], # 0
|
||||||
['Кнопка «ПД-М4»', TableEdit, TableToggle, 'Разрешить отображение кнопки'], # 1
|
['Кнопка «ПД-М4»', TableEdit, TableToggle, 'Разрешить отображение кнопки'], # 1
|
||||||
['Кнопка «ПД-М2»', TableEdit, TableToggle, 'Разрешить отображение кнопки'], # 2
|
['Кнопка «ПД-М2»', TableEdit, TableToggle, 'Разрешить отображение кнопки'], # 2
|
||||||
@@ -71,29 +99,6 @@ const SETTING_TABLE = [
|
|||||||
['Время повторной отправки помехи', TableEdit, TableEdit, 'Изменение времени повторной отправки помехи'] ] # 59
|
['Время повторной отправки помехи', TableEdit, TableEdit, 'Изменение времени повторной отправки помехи'] ] # 59
|
||||||
|
|
||||||
|
|
||||||
## TODO: Придумать как избавиться от индексов
|
|
||||||
## Индексы строк таблицы.
|
|
||||||
const EXTERNAL_CU = 16 ## Внешнее целеуказание
|
|
||||||
const TRASSA = 17 ## Строка - Трасса
|
|
||||||
const SUPPRESS = 18 ## Строка - Подавление
|
|
||||||
const KEYBOARD = 19 ## Строка - Виртуальная клавиатура
|
|
||||||
const HIDE_EMS2 = 20 ## Строка - Скрыть вкладку ЭМС 2
|
|
||||||
const DEBAG_CONTROL = 21 ## Строка - Отладка контроля
|
|
||||||
const COMMIT = 22 ## Строка - Версия УАРЭП
|
|
||||||
const GOS_BTN = 52 ## Разрешить работу по своим целям
|
|
||||||
const COLOR_BTN_ACT = 54 ## Цвет кнопки "Подавление"
|
|
||||||
const COLOR_WHITE = 55 ## Цвет фона схемы
|
|
||||||
const COLOR_BLACK = 56 ## Цвет схемы
|
|
||||||
const COLOR_THEME = 57 ## Цвет темы
|
|
||||||
|
|
||||||
|
|
||||||
var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки
|
|
||||||
var table_color_instance: Node ## Нода цвета кнопки подавления
|
|
||||||
|
|
||||||
func on_checkbutton_pressed(i_row: int):
|
|
||||||
on_row_pressed(i_row)
|
|
||||||
|
|
||||||
|
|
||||||
## Вызывается, когда узел впервые попадает в дерево сцены.
|
## Вызывается, когда узел впервые попадает в дерево сцены.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
setting_tab()
|
setting_tab()
|
||||||
@@ -105,14 +110,14 @@ func _ready() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func on_external_cu_btn_pressed(btn) -> void:
|
func on_external_cu_btn_pressed(btn) -> void:
|
||||||
ProjectSettings.set_setting('application/config/Внешнее управление', btn.button_pressed)
|
ProjectSettings.set_setting('application/config/%s' % 'Внешнее управление', btn.button_pressed)
|
||||||
if btn.button_pressed:
|
if btn.button_pressed:
|
||||||
signaller.emit_signal('interfer_off_all')
|
signaller.emit_signal('interfer_off_all')
|
||||||
_autosave_now()
|
_autosave_now()
|
||||||
|
|
||||||
|
|
||||||
func on_trassa_btn_pressed(btn) -> void:
|
func on_trassa_btn_pressed(btn) -> void:
|
||||||
ProjectSettings.set_setting('application/config/Внешнее указание Трасса', btn.button_pressed)
|
ProjectSettings.set_setting('application/config/%s' % 'Внешнее указание Трасса', btn.button_pressed)
|
||||||
_autosave_now()
|
_autosave_now()
|
||||||
|
|
||||||
|
|
||||||
@@ -180,6 +185,7 @@ func parse_cmd_line_args(settings_data: Dictionary):
|
|||||||
|
|
||||||
|
|
||||||
func setting_tab():
|
func setting_tab():
|
||||||
|
_init_scene_arrays()
|
||||||
$heard_table.set_header(HEADER_ROW)
|
$heard_table.set_header(HEADER_ROW)
|
||||||
$heard_table.set_header_text(HEADER_ROW_TEXT)
|
$heard_table.set_header_text(HEADER_ROW_TEXT)
|
||||||
$heard_table.set_columns_min_size([600, 950])
|
$heard_table.set_columns_min_size([600, 950])
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://bnptm4rlp60dq"]
|
[gd_scene load_steps=7 format=3 uid="uid://bnptm4rlp60dq"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dabpum5iqxc7y" path="res://scenes/настройки/настройки.gd" id="1_60bya"]
|
[ext_resource type="Script" uid="uid://dabpum5iqxc7y" path="res://scenes/настройки/настройки.gd" id="1_60bya"]
|
||||||
[ext_resource type="Script" uid="uid://c5pq0hbrij34d" path="res://table/table.gd" id="2_6sx73"]
|
[ext_resource type="Script" uid="uid://c5pq0hbrij34d" path="res://table/table.gd" id="2_6sx73"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://ch14g46swx74h" path="res://table/header.tscn" id="2_l8r7w"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://5rw652cmnybi" path="res://table/settings-toggle.tscn" id="3_6e5sv"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dspa16ufrpanp" path="res://table/ячейка-2.tscn" id="4_i0f0r"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cug5xjbfdm7x7" path="res://table/ячейка-цвет.tscn" id="5_h2mq4"]
|
||||||
|
|
||||||
[node name="Настройки" type="Panel"]
|
[node name="Настройки" type="Panel"]
|
||||||
script = ExtResource("1_60bya")
|
script = ExtResource("1_60bya")
|
||||||
|
TableHeader = ExtResource("2_l8r7w")
|
||||||
|
TableToggle = ExtResource("3_6e5sv")
|
||||||
|
TableEdit = ExtResource("4_i0f0r")
|
||||||
|
TableColorPick = ExtResource("5_h2mq4")
|
||||||
|
|
||||||
[node name="heard_table" type="GridContainer" parent="."]
|
[node name="heard_table" type="GridContainer" parent="."]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ text = "Обзорная карта"
|
|||||||
self_modulate = Color(1, 1, 1, 0.415686)
|
self_modulate = Color(1, 1, 1, 0.415686)
|
||||||
position = Vector2(360, 360)
|
position = Vector2(360, 360)
|
||||||
min_zoom_level = 3
|
min_zoom_level = 3
|
||||||
max_zoom_level_server = 11
|
|
||||||
ship_radius_km = 3.0
|
ship_radius_km = 3.0
|
||||||
az = 3.0
|
az = 3.0
|
||||||
|
|
||||||
|
|||||||
@@ -3,21 +3,33 @@
|
|||||||
extends PanelContainer
|
extends PanelContainer
|
||||||
|
|
||||||
|
|
||||||
@export var texture_state0: Texture2D = preload('res://data/кнопка-эмс-1.png'):
|
@export var texture_state0: Texture2D:
|
||||||
set(val): $state.set_texture(val)
|
set(val):
|
||||||
|
texture_state0 = val
|
||||||
|
if is_inside_tree():
|
||||||
|
$state.set_texture(val)
|
||||||
|
|
||||||
|
|
||||||
@export var texture_state1: Texture2D = preload('res://data/кнопка-эмс-0.png'):
|
@export var texture_state1: Texture2D:
|
||||||
set(val): $state.set_texture(val)
|
set(val):
|
||||||
|
texture_state1 = val
|
||||||
|
if is_inside_tree():
|
||||||
|
$state.set_texture(val)
|
||||||
|
|
||||||
|
|
||||||
@export var text: String = '':
|
@export var text: String = '':
|
||||||
set(val): $button.set_text(val)
|
set(val):
|
||||||
|
text = val
|
||||||
|
if is_inside_tree():
|
||||||
|
$button.set_text(val)
|
||||||
get: return $button.get_text()
|
get: return $button.get_text()
|
||||||
|
|
||||||
|
|
||||||
@export var pressed: bool = false:
|
@export var pressed: bool = false:
|
||||||
set(val): $button.set_pressed(val)
|
set(val):
|
||||||
|
pressed = val
|
||||||
|
if is_inside_tree():
|
||||||
|
$button.set_pressed(val)
|
||||||
get: return $button.is_pressed()
|
get: return $button.is_pressed()
|
||||||
|
|
||||||
|
|
||||||
@@ -28,6 +40,14 @@ extends PanelContainer
|
|||||||
get: return $button.is_toggle_mode()
|
get: return $button.is_toggle_mode()
|
||||||
|
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
var tst = texture_state1 if $button.pressed else texture_state0
|
||||||
|
$state.set_texture(tst)
|
||||||
|
$button.set_text(text)
|
||||||
|
$button.set_pressed(pressed)
|
||||||
|
$button.set_toggle_mode(toggle_mode)
|
||||||
|
|
||||||
|
|
||||||
func set_text (val: String): $button.set_text(val)
|
func set_text (val: String): $button.set_text(val)
|
||||||
func set_pressed (val: bool): $button.set_pressed(val)
|
func set_pressed (val: bool): $button.set_pressed(val)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://gh3wqymu7cub"]
|
[gd_scene load_steps=10 format=3 uid="uid://gh3wqymu7cub"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dhqqyf2pd1scs" path="res://scenes/эмс/кнопка-эмс.gd" id="1_pmsh3"]
|
[ext_resource type="Script" uid="uid://dhqqyf2pd1scs" path="res://scenes/эмс/кнопка-эмс.gd" id="1_pmsh3"]
|
||||||
[ext_resource type="Texture2D" uid="uid://nfpish471rjj" path="res://data/кнопка-эмс-1.png" id="2_0o537"]
|
[ext_resource type="Texture2D" uid="uid://nfpish471rjj" path="res://data/кнопка-эмс-1.png" id="2_0o537"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bvxv33noium2h" path="res://data/кнопка-эмс-0.png" id="3_okiyh"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="1"]
|
[sub_resource type="StyleBoxEmpty" id="1"]
|
||||||
|
|
||||||
@@ -20,12 +21,14 @@ offset_right = 30.0
|
|||||||
offset_bottom = 30.0
|
offset_bottom = 30.0
|
||||||
theme_override_styles/panel = SubResource("1")
|
theme_override_styles/panel = SubResource("1")
|
||||||
script = ExtResource("1_pmsh3")
|
script = ExtResource("1_pmsh3")
|
||||||
|
texture_state0 = ExtResource("2_0o537")
|
||||||
|
texture_state1 = ExtResource("3_okiyh")
|
||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
|
|
||||||
[node name="state" type="NinePatchRect" parent="."]
|
[node name="state" type="NinePatchRect" parent="."]
|
||||||
show_behind_parent = true
|
show_behind_parent = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
texture = ExtResource("2_0o537")
|
texture = ExtResource("3_okiyh")
|
||||||
region_rect = Rect2(-1.60803, -1.94625, 31.9305, 25.9868)
|
region_rect = Rect2(-1.60803, -1.94625, 31.9305, 25.9868)
|
||||||
patch_margin_left = 6
|
patch_margin_left = 6
|
||||||
patch_margin_top = 5
|
patch_margin_top = 5
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
class_name PRDConfigManager
|
class_name PRDConfigManager
|
||||||
extends RefCounted
|
extends RefCounted
|
||||||
|
|
||||||
## Менеджер конфигурации для системы контроля ПРД
|
## Менеджер конфигурации для системы контроля ПРД.
|
||||||
## Загружает и управляет настройками из JSON-конфигурации
|
## Загружает и управляет настройками из JSON-конфигурации.
|
||||||
|
|
||||||
#region CONSTANTS
|
#region CONSTANTS
|
||||||
const CONFIG_PATH = "user://config/setting_prd_control.json"
|
const CONFIG_PATH = 'user://config/setting_prd_control.json'
|
||||||
const DEFAULT_CONFIG_PATH = "res://config/setting_prd_control.json"
|
const DEFAULT_CONFIG_PATH = 'res://config/setting_prd_control.json'
|
||||||
const CONFIG_VERSION = "1.0.0" # Версия конфигурации - увеличивать при изменениях
|
const CONFIG_VERSION = '1.0.0' # Версия конфигурации - увеличивать при изменениях
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region PRIVATE_VARIABLES
|
#region PRIVATE_VARIABLES
|
||||||
var _config_data: Dictionary # Все данные конфигурации
|
var _config_data: Dictionary ## Все данные конфигурации
|
||||||
var _device_constants: Dictionary # Константы устройств
|
var _device_constants: Dictionary ## Константы устройств
|
||||||
var _base_configs: Dictionary # Базовые конфигурации
|
var _base_configs: Dictionary ## Базовые конфигурации
|
||||||
var _device_configs: Dictionary # Конфигурации устройств
|
var _device_configs: Dictionary ## Конфигурации устройств
|
||||||
var _data_indices: Dictionary # Индексы данных
|
var _data_indices: Dictionary ## Индексы данных
|
||||||
var _fs_keys: Dictionary # Ключи ФС (функциональных систем)
|
var _fs_keys: Dictionary ## Ключи ФС (функциональных систем)
|
||||||
var _temperature_constants: Dictionary # Константы температуры
|
var _temperature_constants: Dictionary ## Константы температуры
|
||||||
var _ems_input_bits_config: Dictionary # Конфигурация битов ввода ЭМС
|
var _ems_input_bits_config: Dictionary ## Конфигурация битов ввода ЭМС
|
||||||
var _fs_rules: Array # Правила ФС
|
var _fs_rules: Array ## Правила ФС
|
||||||
|
|
||||||
var _is_loaded: bool = false # Флаг успешной загрузки
|
var _is_loaded: bool = false ## Флаг успешной загрузки
|
||||||
var _current_version: String = "" # Текущая версия загруженной конфигурации
|
var _current_version: String ## Текущая версия загруженной конфигурации
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region INITIALIZATION
|
#region INITIALIZATION
|
||||||
@@ -101,27 +101,27 @@ func _load_configuration() -> void:
|
|||||||
var parse_result = json.parse(json_text)
|
var parse_result = json.parse(json_text)
|
||||||
if parse_result == OK:
|
if parse_result == OK:
|
||||||
_config_data = json.data
|
_config_data = json.data
|
||||||
_current_version = _config_data.get("config_version", "0.0.0")
|
_current_version = _config_data.get('config_version', '0.0.0')
|
||||||
_parse_config_data()
|
_parse_config_data()
|
||||||
_is_loaded = true
|
_is_loaded = true
|
||||||
else:
|
else:
|
||||||
push_error("Ошибка разбора JSON конфигурации: " + json.get_error_message())
|
push_error('Ошибка разбора JSON конфигурации: ' + json.get_error_message())
|
||||||
_is_loaded = false
|
_is_loaded = false
|
||||||
else:
|
else:
|
||||||
push_error("Ошибка загрузки файла конфигурации: " + CONFIG_PATH)
|
push_error('Ошибка загрузки файла конфигурации: ' + CONFIG_PATH)
|
||||||
_is_loaded = false
|
_is_loaded = false
|
||||||
|
|
||||||
|
|
||||||
## Парсит данные конфигурации по секциям
|
## Парсит данные конфигурации по секциям
|
||||||
func _parse_config_data() -> void:
|
func _parse_config_data() -> void:
|
||||||
_device_constants = _convert_numbers(_config_data.get("device_constants", {}))
|
_device_constants = _convert_numbers(_config_data.get('device_constants', {}))
|
||||||
_base_configs = _convert_numbers(_config_data.get("base_configs", {}))
|
_base_configs = _convert_numbers(_config_data.get('base_configs', {}))
|
||||||
_device_configs = _convert_numbers(_config_data.get("device_configs", {}))
|
_device_configs = _convert_numbers(_config_data.get('device_configs', {}))
|
||||||
_data_indices = _convert_numbers(_config_data.get("data_indices", {}))
|
_data_indices = _convert_numbers(_config_data.get('data_indices', {}))
|
||||||
_fs_keys = _convert_numbers(_config_data.get("fs_keys", {}))
|
_fs_keys = _convert_numbers(_config_data.get('fs_keys', {}))
|
||||||
_temperature_constants = _convert_numbers(_config_data.get("temperature_constants", {}))
|
_temperature_constants = _convert_numbers(_config_data.get('temperature_constants', {}))
|
||||||
_ems_input_bits_config = _convert_numbers(_config_data.get("ems_input_bits_config", {}))
|
_ems_input_bits_config = _convert_numbers(_config_data.get('ems_input_bits_config', {}))
|
||||||
_fs_rules = _convert_numbers(_config_data.get("fs_rules", []))
|
_fs_rules = _convert_numbers(_config_data.get('fs_rules', []))
|
||||||
|
|
||||||
|
|
||||||
## Конвертирует числовые значения в правильные типы (float -> int если возможно)
|
## Конвертирует числовые значения в правильные типы (float -> int если возможно)
|
||||||
@@ -149,7 +149,7 @@ static func _convert_numbers(value):
|
|||||||
## Создает папку и копирует дефолтный файл если нужно
|
## Создает папку и копирует дефолтный файл если нужно
|
||||||
func _ensure_config_exists() -> bool:
|
func _ensure_config_exists() -> bool:
|
||||||
# Создаем папку конфигурации если не существует
|
# Создаем папку конфигурации если не существует
|
||||||
DirAccess.make_dir_recursive_absolute("user://config")
|
DirAccess.make_dir_recursive_absolute('user://config')
|
||||||
|
|
||||||
# Проверяем, нужно ли обновить конфигурацию
|
# Проверяем, нужно ли обновить конфигурацию
|
||||||
if _should_update_config():
|
if _should_update_config():
|
||||||
@@ -181,7 +181,7 @@ func _should_update_config() -> bool:
|
|||||||
|
|
||||||
var json = JSON.new()
|
var json = JSON.new()
|
||||||
if json.parse(json_text) == OK:
|
if json.parse(json_text) == OK:
|
||||||
var existing_version = json.data.get("config_version", "0.0.0")
|
var existing_version = json.data.get('config_version', '0.0.0')
|
||||||
# Сравниваем версии
|
# Сравниваем версии
|
||||||
return _compare_versions(existing_version, CONFIG_VERSION) < 0
|
return _compare_versions(existing_version, CONFIG_VERSION) < 0
|
||||||
else:
|
else:
|
||||||
@@ -194,8 +194,8 @@ func _should_update_config() -> bool:
|
|||||||
## Сравнивает две версии (semantic versioning)
|
## Сравнивает две версии (semantic versioning)
|
||||||
## Возвращает -1 если version1 < version2, 0 если равны, 1 если version1 > version2
|
## Возвращает -1 если version1 < version2, 0 если равны, 1 если version1 > version2
|
||||||
static func _compare_versions(version1: String, version2: String) -> int:
|
static func _compare_versions(version1: String, version2: String) -> int:
|
||||||
var v1_parts = version1.split(".")
|
var v1_parts = version1.split('.')
|
||||||
var v2_parts = version2.split(".")
|
var v2_parts = version2.split('.')
|
||||||
|
|
||||||
for i in range(max(v1_parts.size(), v2_parts.size())):
|
for i in range(max(v1_parts.size(), v2_parts.size())):
|
||||||
var v1_part = int(v1_parts[i]) if i < v1_parts.size() else 0
|
var v1_part = int(v1_parts[i]) if i < v1_parts.size() else 0
|
||||||
@@ -213,9 +213,8 @@ static func _compare_versions(version1: String, version2: String) -> int:
|
|||||||
func _update_config() -> bool:
|
func _update_config() -> bool:
|
||||||
# Создаем резервную копию старой конфигурации
|
# Создаем резервную копию старой конфигурации
|
||||||
if FileAccess.file_exists(CONFIG_PATH):
|
if FileAccess.file_exists(CONFIG_PATH):
|
||||||
var backup_path = CONFIG_PATH + ".backup_v" + _current_version
|
var backup_path = CONFIG_PATH + '.backup_v' + _current_version
|
||||||
DirAccess.copy_absolute(CONFIG_PATH, backup_path)
|
DirAccess.copy_absolute(CONFIG_PATH, backup_path)
|
||||||
print("Создана резервная копия: ", backup_path)
|
|
||||||
|
|
||||||
# Копируем актуальную конфигурацию
|
# Копируем актуальную конфигурацию
|
||||||
return _copy_default_config()
|
return _copy_default_config()
|
||||||
@@ -224,13 +223,13 @@ func _update_config() -> bool:
|
|||||||
## Копирует дефолтную конфигурацию в user директорию
|
## Копирует дефолтную конфигурацию в user директорию
|
||||||
func _copy_default_config() -> bool:
|
func _copy_default_config() -> bool:
|
||||||
if not FileAccess.file_exists(DEFAULT_CONFIG_PATH):
|
if not FileAccess.file_exists(DEFAULT_CONFIG_PATH):
|
||||||
push_error("Дефолтный файл конфигурации не найден: " + DEFAULT_CONFIG_PATH)
|
push_error('Файл конфигурации не найден: ' + DEFAULT_CONFIG_PATH)
|
||||||
return false
|
return false
|
||||||
|
|
||||||
var src := FileAccess.open(DEFAULT_CONFIG_PATH, FileAccess.READ)
|
var src := FileAccess.open(DEFAULT_CONFIG_PATH, FileAccess.READ)
|
||||||
var dst := FileAccess.open(CONFIG_PATH, FileAccess.WRITE)
|
var dst := FileAccess.open(CONFIG_PATH, FileAccess.WRITE)
|
||||||
if src == null or dst == null:
|
if src == null or dst == null:
|
||||||
push_error("Ошибка копирования конфигурации")
|
push_error('Ошибка копирования конфигурации')
|
||||||
return false
|
return false
|
||||||
|
|
||||||
dst.store_string(src.get_as_text())
|
dst.store_string(src.get_as_text())
|
||||||
|
|||||||
Reference in New Issue
Block a user