Доработка. Включение/Выключение помех. В процессе.

This commit is contained in:
MaD_CaT
2023-11-20 13:51:26 +03:00
parent d37b56c132
commit 5ab6ce9e34
4 changed files with 61 additions and 12 deletions

View File

@@ -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)

View File

@@ -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.

View File

@@ -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

View File

@@ -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