diff --git a/scenes/canvas.tscn b/scenes/canvas.tscn index 112ec0b..ea06dbd 100644 --- a/scenes/canvas.tscn +++ b/scenes/canvas.tscn @@ -8,7 +8,7 @@ [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"] size = Vector2(1600, 1200) -[sub_resource type="ShaderMaterial" id="ShaderMaterial_51ay6"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"] resource_local_to_scene = true shader = ExtResource("4_q0nxn") shader_parameter/color = Color(1, 1, 1, 0.168627) @@ -26,6 +26,6 @@ centered = false script = ExtResource("2_clpjo") [node name="строб" parent="." instance=ExtResource("3_kddns")] -material = SubResource("ShaderMaterial_51ay6") +material = SubResource("ShaderMaterial_lniyv") position = Vector2(560, 560) scale = Vector2(1100, 1100) diff --git a/scenes/scroll-ecm-list.gd b/scenes/scroll-ecm-list.gd index 94086e6..1b4e4f5 100644 --- a/scenes/scroll-ecm-list.gd +++ b/scenes/scroll-ecm-list.gd @@ -19,6 +19,24 @@ const INTERFER_STATE = { 4: 'Неисправность', 5: 'Передача' } + +## Состояние выполнения сеанса помехи +const INTERFER_NAMES = { + 'off': 'Откл', + 'mchm1': 'МЧМ-1', + 'srni1': 'СРН-И1', + 'srnm2': 'СРН-М2', + 'pdm4': 'ПД-М4', + 'pdm2': 'ПД-М2', + 'lchm1': 'ЛЧМ-1', + 'pdm4s': 'ПД-М4С', + 'pdchm': 'ПД-ЧМ', + 'svi1': 'СВ-И1', + 'k1': 'K1', + 'svm2': 'СВ-М2', + 'ozp1': 'ОЗП-1'} + + ## Индексы колонок const COLUMN_NUMBER = 0 const COLUMN_NAME = 1 @@ -41,7 +59,33 @@ func init_table(): func on_interfer_new(ecm, table_index): - print_debug() + var row = map_th_to_row(ecm) + if table_index.has(ecm.ispp): + var i_row = table_index[ecm.ispp] + $table.set_row_text(i_row, row) + else: + var i_row = $table.get_rows_count() + $table.add_row(TABLE_ROW) + $table.set_row_text(i_row, row) + $table.set_row_editable(i_row, false) + $table.set_node_user_data(0, i_row, ecm) + table_index[ecm.ispp] = i_row + + +## Преобразует цель в строку таблицы +func map_th_to_row(ecm) -> Array: + var row: = Array() + row.resize(TABLE_ROW.size()) + row[COLUMN_NUMBER] = '%s' % ecm.ispp + row[COLUMN_NAME] = '' + if INTERFER_NAMES.has(ecm.krp): + row[COLUMN_NAME] = '%s' % ecm.krp + row[COLUMN_FREQ] = '%s' % ecm.params['freq'] + row[COLUMN_AOA] = '%s' % ecm.kni + row[COLUMN_STATE] = '' + if INTERFER_STATE.has(ecm.svk): + row[COLUMN_STATE] = '%s' % INTERFER_STATE[ecm.svk] + return row # Called every frame. 'delta' is the elapsed time since the previous frame. diff --git a/scenes/работа.tscn b/scenes/работа.tscn index 42dbe7c..dfa09c0 100644 --- a/scenes/работа.tscn +++ b/scenes/работа.tscn @@ -12,7 +12,7 @@ [ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap.tscn" id="10_gtwyg"] [ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_ekapd"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_jobxp"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mds64"] resource_local_to_scene = true shader = ExtResource("11_ekapd") shader_parameter/radius = 0.39 @@ -45,7 +45,7 @@ offset_bottom = 1170.0 metadata/_edit_lock_ = true [node name="tilemap" parent="." instance=ExtResource("10_gtwyg")] -material = SubResource("ShaderMaterial_jobxp") +material = SubResource("ShaderMaterial_mds64") [node name="canvas" parent="." instance=ExtResource("4_lryxs")] metadata/_edit_lock_ = true diff --git a/scripts/interfer.gd b/scripts/interfer.gd index ac5a85f..3d49b65 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -19,6 +19,7 @@ const ITERFER_MODE = { 'ozp1': ['ОЗП-1', ['freq', 'width']] } const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей +const INTERFER_OFF = 'off' var msg_ss: int = 0 ## счётчик сообщений var id_array: Array ## Массив id воздействий var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия @@ -43,7 +44,7 @@ class Interfer: data_to_json['ss'] = ss data_to_json['ispp'] = ispp data_to_json['krp'] = krp - if krp != 'off': + if krp != INTERFER_OFF: data_to_json['kni'] = kni data_to_json['powp'] = powp # Необходимо добавить управление мощностью data_to_json['get'] = [] @@ -70,17 +71,17 @@ func _ready(): id_array.append(i+1) var unit_key = repsettings.get_unit_key('уарэп-капсрпб-отп') var unit = repnetwork.units[unit_key] + unit.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms)) signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit, ecms)) ## Производит приём состояния помех. [param unit] -> [param ecms] func on_data_capsrpb_received(unit: capsrpb.CapsRpb, ecms: Dictionary): - if not unit.json_dic.has('ts'): return - if not (unit.json_dic['ts'] is int): return - if unit.json_dic['ts'] != 5: return - if not unit.json_dic.has('msvk'): return + if not unit.json_dic.has('ts'): return + if not (unit.json_dic['ts'] is float): return + if unit.json_dic['ts'] != 5: return + if not unit.json_dic.has('msvk'): return if not (unit.json_dic['msvk'] is Array): return - var msvk = unit.json_dic['msvk'] var sz: = ecms.size() for dic_msvk in msvk: @@ -95,7 +96,9 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, ecms: Dictionary): else: var ecm = Interfer.new() ecm.set_from_dic(dic_msvk) - ecms[ispp] = ecm + ecm.krp = INTERFER_OFF + var json_data = ecm.get_msg6_data() + unit.tx_stack.append(json_data) ecm.tick_rx = unit.tick if sz != ecms.size(): call_deferred('emit_signal', 'interfer_resized', ecms) @@ -125,7 +128,9 @@ func on_interfer_create(btn, sel_threats, unit, ecms): ecm = ecms[ispp] else: ecm = Interfer.new() + ecm.svk = 5 # Подготовка к передаче сообщения ecm.ispp = ispp + ecms[ispp] = ecm ecm.ss = msg_ss ecm.kni = kni ecm.krp = interfer_name