Исправление логики переключений лучей во время контроля

This commit is contained in:
TotMaxim
2025-11-26 14:08:49 +03:00
parent 20eec6e8be
commit e6ea873294
2 changed files with 19 additions and 20 deletions

View File

@@ -14,6 +14,7 @@ const PROGRESS_RAY_STATES: float = 50.0
const PROGRESS_COMPLETE: float = 100.0
## Константы для работы с лучами управления
const COUNT_PACK_POWER_RECIEVE = 5
const RAY_MASK = 0x07
const SPECIAL_LITERAS = [3, 5, 7]
const RAY_m5: String = 'RAY_m5'
@@ -257,13 +258,13 @@ func _ready() -> void:
## Инициализация маппинга состояний лучей
func _initialize_ray_mapping() -> void:
_ray_state_mapping = {
STATE_MACHINE.UG_SET_RAY_0: 'RAY_CTRL',
STATE_MACHINE.UG_SET_RAY_1: 'RAY_m5',
STATE_MACHINE.UG_SET_RAY_2: 'RAY_5',
STATE_MACHINE.UG_SET_RAY_3: 'RAY_15',
STATE_MACHINE.UG_SET_RAY_4: 'RAY_25',
STATE_MACHINE.UG_SET_RAY_5: 'RAY_35',
STATE_MACHINE.UG_SET_RAY_CTRL: 'RAY_45',
STATE_MACHINE.UG_SET_RAY_0: 'RAY_m5',
STATE_MACHINE.UG_SET_RAY_1: 'RAY_5',
STATE_MACHINE.UG_SET_RAY_2: 'RAY_15',
STATE_MACHINE.UG_SET_RAY_3: 'RAY_25',
STATE_MACHINE.UG_SET_RAY_4: 'RAY_35',
STATE_MACHINE.UG_SET_RAY_5: 'RAY_45',
STATE_MACHINE.UG_SET_RAY_CTRL: 'RAY_CTRL',
}
@@ -550,17 +551,18 @@ func _handle_ray_write_mode(ray_num: int) -> void:
if not _can_write_ray():
return
# Особые условия для луча 0
if ray_num == 0:
# Особые условия для луча 0 и 5 на 1 литере
if ray_num == 0 and current_litera != 1 and not control_timer.is_stopped():
control_timer.stop()
elif ray_num == 5 and not control_timer.is_stopped():
control_timer.stop()
# Ожидание пяти пакетов от ЯУ-07
if ray_num == 6:
if count_packets_power < 20: return
elif count_packets_power < 10: return
# Установка луча
_handle_ug_set_state(ray_num)
flags.write_isa = true
if not flags.write_isa:
_handle_ug_set_state(ray_num)
flags.write_isa = true
# Ожидание COUNT_PACK_POWER_RECIEVE пакетов от ЯУ-07
if count_packets_power < COUNT_PACK_POWER_RECIEVE: return
state = STATE_MACHINE.READ_ISA
@@ -586,9 +588,6 @@ func _can_process_ray_state(addr: int) -> bool:
## Проверка возможности записи луча
func _can_write_ray() -> bool:
if flags.write_isa:
return false
if not flags.si_fs_input:
_set_status('Ожидание сигнала излучения от ФС-%s' % current_litera )
return false
@@ -1384,7 +1383,6 @@ func _set_control_result(key: String, status: bool)-> void:
if key == 'is_over_control' or old_value != status:
control_results[key] = status
emit_signal('control_results_updated', control_results)
print_debug('control_results_updated: ',[key, status])
func _get_control_result(key: String) -> bool: