Доработка. Включение/Выключение помех. В процессе.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user