WIP Исправление. Рассинхрон данных во время работы контроля.
This commit is contained in:
@@ -31,7 +31,6 @@ class DeviceObserver:
|
||||
|
||||
func update_control_results(results: Dictionary) -> bool:
|
||||
var changed := false
|
||||
last_results = results.duplicate()
|
||||
|
||||
if results.get('is_over_control', false):
|
||||
# Контроль завершен - проверяем все результаты
|
||||
@@ -162,8 +161,7 @@ func _recalculate_overall_state() -> void:
|
||||
|
||||
|
||||
func _update_display() -> void:
|
||||
var config: Dictionary = STATUS_CONFIG[overall_prd_state].duplicate()
|
||||
|
||||
var config: Dictionary
|
||||
text = config.text
|
||||
modulate = config.color
|
||||
add_theme_color_override("font_color", config.font_color)
|
||||
@@ -258,7 +256,7 @@ func get_device_status(device_name: String) -> Dictionary:
|
||||
"online": observer.status[DEVICE_STATUS.ONLINE],
|
||||
"operational": observer.status[DEVICE_STATUS.STATUS],
|
||||
"control_complete": observer.status[DEVICE_STATUS.CONTROL],
|
||||
"last_results": observer.last_results.duplicate(),
|
||||
"last_results": observer.last_results,
|
||||
"status_uf": status_uf
|
||||
}
|
||||
return {}
|
||||
|
||||
@@ -560,7 +560,7 @@ func set_fs_color(ecms):
|
||||
|
||||
|
||||
func update_fs_colors():
|
||||
var fs_colors = $canvas.fs_default_colors.duplicate()
|
||||
var fs_colors = $canvas.fs_default_colors
|
||||
for key in fs_active.keys():
|
||||
fs_colors[key] = color_ecm
|
||||
for key in fs_emit.keys():
|
||||
|
||||
@@ -1140,7 +1140,7 @@ 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.duplicate()
|
||||
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
|
||||
@@ -1209,19 +1209,19 @@ static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array
|
||||
static func update_max_power_values(power_data: Array, max_power_values: Array) -> Array:
|
||||
if power_data.size() != 6:
|
||||
if max_power_values.is_empty():
|
||||
max_power_values = power_data.duplicate()
|
||||
max_power_values = power_data
|
||||
elif power_data[0] > max_power_values[0]:
|
||||
max_power_values = power_data.duplicate()
|
||||
max_power_values = power_data
|
||||
return max_power_values
|
||||
|
||||
if max_power_values.is_empty():
|
||||
max_power_values = power_data.duplicate()
|
||||
max_power_values = power_data
|
||||
else:
|
||||
for i in 6:
|
||||
if power_data[i] > max_power_values[i]:
|
||||
max_power_values[i] = power_data[i]
|
||||
|
||||
return max_power_values.duplicate()
|
||||
return max_power_values
|
||||
|
||||
|
||||
## Подготовка принятых данных по контролю для передачи в сцену
|
||||
@@ -1322,7 +1322,7 @@ func _deep_copy_power_structure() -> Dictionary:
|
||||
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].duplicate()
|
||||
copy[litera][ray_type] = power_for_litera[litera][ray_type]
|
||||
return copy
|
||||
|
||||
## Восстановление состояний по умолчанию
|
||||
|
||||
Reference in New Issue
Block a user