Доработка. Отключение помехи если 5 секунд нет команд на подавление.

This commit is contained in:
MaD_CaT
2025-12-26 11:12:57 +03:00
parent 78fcb79e00
commit cb4c3eceaf
3 changed files with 31 additions and 20 deletions

View File

@@ -1,11 +1,5 @@
extends Node
var id_array: Array # Массив id целей
var interfers : Dictionary # Словарь целей
var msg_counter : int = 0 # Счётчик отправленных пакетов
var g_table # таблица с помехами
const TableCellType1 = preload('res://ячейка-1.tscn')
const TableCellType2 = preload('res://кнопка-3.tscn')
const TableCellType3 = preload('res://кнопка-4.tscn')
@@ -83,6 +77,14 @@ const INTERFER_NAMES: Dictionary = {
'SRNI1_LIT4.pcm',
'SRNI1_LIT5.pcm'] }
const INTERFER_OFF_TIMEOUT = 5.0 # Интервал выключения помехи
var id_array: Array # Массив id целей
var interfers : Dictionary # Словарь целей
var msg_counter : int = 0 # Счётчик отправленных пакетов
var g_table # таблица с помехами
var now = 0.0 # Время с момента запуска приложения
# Помеха
class Interfer:
var get_data: Dictionary = {
@@ -105,6 +107,7 @@ class Interfer:
var svk: int = 0
var row_id: int
var active_fs: fs.Fs
var rx_tick: = 0
func _init(data: Dictionary):
options.merge(data, true)
@@ -142,6 +145,7 @@ func set_interfer(data):
on_row_add(g_table, interfers[data['ispp']])
var cmd_state: int = fs.set_fs(interfers[data['ispp']])
interfers[data['ispp']].svk = cmd_state
interfers[data['ispp']].rx_tick = now;
var cell = g_table.get_node2(COLUMN_SVK, interfers[data['ispp']].row_id)
cell.select(cmd_state)
@@ -221,14 +225,14 @@ func on_row_pressed(i_row: int, table):
pass
func off_interfer(json_data):
if not interfers.has(json_data['ispp']): return
var row_id = interfers[json_data['ispp']].row_id
if interfers[json_data['ispp']] != null:
if interfers[json_data['ispp']].active_fs != null:
fs.fs_off(interfers[json_data['ispp']].active_fs)
func off_interfer(interfer_id):
if not interfers.has(interfer_id): return
var row_id = interfers[interfer_id].row_id
if interfers[interfer_id] != null:
if interfers[interfer_id].active_fs != null:
fs.fs_off(interfers[interfer_id].active_fs)
if g_table.get_rows_count() > row_id:
interfers.erase(json_data['ispp'])
interfers.erase(interfer_id)
g_table.remove_row(row_id)
for i in g_table.get_rows_count():
var interfer = g_table.get_node_user_data(0, i)
@@ -245,3 +249,10 @@ func check_interfers_state():
interfer.svk = cmd_state
var cell = g_table.get_node2(COLUMN_SVK, interfer.row_id)
cell.select(cmd_state)
func _process(delta):
now += delta
for key in interfers:
if (now - interfers[key].rx_tick) > INTERFER_OFF_TIMEOUT:
off_interfer(key)