Исправление логики переключений лучей во время контроля
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user