Регрессия. Неверный символ отступа, должен быть "пробел".
This commit is contained in:
@@ -14,36 +14,36 @@ const LOGGER_OUTPUT_ICON = "res://addons/godot-logger/icons/logger.svg"
|
||||
|
||||
|
||||
func _def_settings(pname: String, default: Variant) -> void:
|
||||
if not ProjectSettings.has_setting(pname):
|
||||
ProjectSettings.set_setting(pname, default)
|
||||
if not ProjectSettings.has_setting(pname):
|
||||
ProjectSettings.set_setting(pname, default)
|
||||
|
||||
ProjectSettings.set_initial_value(pname, default)
|
||||
ProjectSettings.set_initial_value(pname, default)
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
_def_settings("plugins/logger/log_enabled", true)
|
||||
_def_settings("plugins/logger/default_output", false)
|
||||
_def_settings("plugins/logger/log_enabled", true)
|
||||
_def_settings("plugins/logger/default_output", false)
|
||||
|
||||
_def_settings("plugins/logger/level", 31) # The magic number is - INFO | DEBUG | WARNING | ERROR | FATAL
|
||||
ProjectSettings.add_property_info(
|
||||
{
|
||||
"name": "plugins/logger/level",
|
||||
"type": TYPE_INT,
|
||||
"hint": PROPERTY_HINT_FLAGS,
|
||||
"hint_string": "Info,Debug,Warning,Error,Fatal",
|
||||
}
|
||||
)
|
||||
_def_settings("plugins/logger/level", 31) # The magic number is - INFO | DEBUG | WARNING | ERROR | FATAL
|
||||
ProjectSettings.add_property_info(
|
||||
{
|
||||
"name": "plugins/logger/level",
|
||||
"type": TYPE_INT,
|
||||
"hint": PROPERTY_HINT_FLAGS,
|
||||
"hint_string": "Info,Debug,Warning,Error,Fatal",
|
||||
}
|
||||
)
|
||||
|
||||
_def_settings("plugins/logger/file/file_path", "user://uarep-ctl.log")
|
||||
_def_settings("plugins/logger/file/log_file_write", true)
|
||||
_def_settings("plugins/logger/file/file_path", "user://uarep-ctl.log")
|
||||
_def_settings("plugins/logger/file/log_file_write", true)
|
||||
|
||||
_def_settings("plugins/logger/default_output_format", "[{year}-{month}-{day} {hour}:{minute}:{second}][{level}]{text}")
|
||||
_def_settings("plugins/logger/file_format", "[{year}-{month}-{day} {hour}:{minute}:{second}][{level}]{text}")
|
||||
_def_settings("plugins/logger/default_output_format", "[{year}-{month}-{day} {hour}:{minute}:{second}][{level}]{text}")
|
||||
_def_settings("plugins/logger/file_format", "[{year}-{month}-{day} {hour}:{minute}:{second}][{level}]{text}")
|
||||
|
||||
add_autoload_singleton(AUTOLOAD_NAME, AUTOLOAD_PATH)
|
||||
add_custom_type(LOGGER_OUTPUT, "RichTextLabel", load(LOGGER_OUTPUT_SCRIPT), load(LOGGER_OUTPUT_ICON))
|
||||
add_autoload_singleton(AUTOLOAD_NAME, AUTOLOAD_PATH)
|
||||
add_custom_type(LOGGER_OUTPUT, "RichTextLabel", load(LOGGER_OUTPUT_SCRIPT), load(LOGGER_OUTPUT_ICON))
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
remove_custom_type(LOGGER_OUTPUT)
|
||||
remove_autoload_singleton(AUTOLOAD_NAME)
|
||||
remove_custom_type(LOGGER_OUTPUT)
|
||||
remove_autoload_singleton(AUTOLOAD_NAME)
|
||||
|
||||
@@ -4,8 +4,8 @@ var selected: bool
|
||||
|
||||
## Функция присваивает заданое значение видимости селектору.
|
||||
func set_sel_visible(value: bool):
|
||||
selected = value
|
||||
$selector.visible = value
|
||||
selected = value
|
||||
$selector.visible = value
|
||||
|
||||
|
||||
## Функция присваивает заданое значение видимости селектору.
|
||||
@@ -15,11 +15,11 @@ func set_ecm_visible(value: bool): $ecm_done.visible = value
|
||||
|
||||
|
||||
func _on_bip_gui_input(event):
|
||||
if event is InputEventMouseButton and event.pressed:
|
||||
match event.button_index:
|
||||
MOUSE_BUTTON_LEFT:
|
||||
signaller.emit_signal('bip_pressed', name.to_int())
|
||||
MOUSE_BUTTON_RIGHT:
|
||||
if selected:
|
||||
signaller.emit_signal('rto_threat_unsel', name.to_int())
|
||||
if event is InputEventMouseButton and event.pressed:
|
||||
match event.button_index:
|
||||
MOUSE_BUTTON_LEFT:
|
||||
signaller.emit_signal('bip_pressed', name.to_int())
|
||||
MOUSE_BUTTON_RIGHT:
|
||||
if selected:
|
||||
signaller.emit_signal('rto_threat_unsel', name.to_int())
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
extends Control
|
||||
|
||||
@export var text: String = '':
|
||||
set(val): $label.set_text(val)
|
||||
get: return $label.get_text()
|
||||
set(val): $label.set_text(val)
|
||||
get: return $label.get_text()
|
||||
|
||||
@@ -84,7 +84,6 @@ func _ready():
|
||||
interfer.connect('interfer_update', Callable(self, 'on_interfer_update').bind(table_index))
|
||||
$table.connect('row_pressed', Callable(self, 'on_row_pressed'))
|
||||
call_deferred('init_table')
|
||||
#$btn_cancel.button_connect('pressed', Callable(self, 'on_btn_cancel_pressed').bind($btn_cancel))
|
||||
|
||||
|
||||
func init_table():
|
||||
|
||||
@@ -11,82 +11,82 @@ const TABLE_HEADERS_TEXT = ['Параметр', 'Значение' ] ##
|
||||
const TABLE_COLUMN_SIZE = [ 370, 85 ] ## Ширины колонок.
|
||||
|
||||
const TABLE_PARAMS = {
|
||||
'kni': [0, 'Курсовой угол, гр.', false, 0.0, 360.0],
|
||||
'powp': [1, 'Мощность, %', true, 0.0, 100.0],
|
||||
'freq': [2, 'Частота, МГц', true, 400.0, 6000.0],
|
||||
'width': [3, 'Занимая полоса частот, МГц', true, 0.0, 120.0],
|
||||
'dur': [4, 'Длительность импульса, мкс', true, 0.0, 1000000.0],
|
||||
'period': [5, 'Период повтора, мкс', true, 0.0, 1000000.0] }
|
||||
'kni': [0, 'Курсовой угол, гр.', false, 0.0, 360.0],
|
||||
'powp': [1, 'Мощность, %', true, 0.0, 100.0],
|
||||
'freq': [2, 'Частота, МГц', true, 400.0, 6000.0],
|
||||
'width': [3, 'Занимая полоса частот, МГц', true, 0.0, 120.0],
|
||||
'dur': [4, 'Длительность импульса, мкс', true, 0.0, 1000000.0],
|
||||
'period': [5, 'Период повтора, мкс', true, 0.0, 1000000.0] }
|
||||
|
||||
|
||||
func init_table():
|
||||
for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW)
|
||||
for key in TABLE_PARAMS.keys():
|
||||
var p = TABLE_PARAMS[key]
|
||||
$table.set_node_text(0, p[0], p[1])
|
||||
$table.set_node_alligment(0, p[0], HORIZONTAL_ALIGNMENT_LEFT)
|
||||
$table.set_node_editable(0, p[0], false)
|
||||
$table.set_node_editable(1, p[0], false)
|
||||
$table.set_node_user_data(1, p[0], key)
|
||||
$table.connect_columns(self, 'text_submitted', 'on_edit_entry', [1], [])
|
||||
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
|
||||
$table.set_meta('id', 0)
|
||||
for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW)
|
||||
for key in TABLE_PARAMS.keys():
|
||||
var p = TABLE_PARAMS[key]
|
||||
$table.set_node_text(0, p[0], p[1])
|
||||
$table.set_node_alligment(0, p[0], HORIZONTAL_ALIGNMENT_LEFT)
|
||||
$table.set_node_editable(0, p[0], false)
|
||||
$table.set_node_editable(1, p[0], false)
|
||||
$table.set_node_user_data(1, p[0], key)
|
||||
$table.connect_columns(self, 'text_submitted', 'on_edit_entry', [1], [])
|
||||
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
|
||||
$table.set_meta('id', 0)
|
||||
|
||||
|
||||
## Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected'))
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
call_deferred('init_table')
|
||||
signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected'))
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
call_deferred('init_table')
|
||||
|
||||
|
||||
func on_edit_entry(text : String, entry):
|
||||
var ecm = $table.get_meta('ecm')
|
||||
if $table.has_meta('ecm') == false: return
|
||||
var indexis = $table.get_key_indexes(entry[0].name)
|
||||
var row_i = indexis[1]
|
||||
var param = $table.get_node_user_data(1, row_i)
|
||||
var p = TABLE_PARAMS[param]
|
||||
var old_val = ecm.get_value(param)
|
||||
var val = check_value(text, p[3], p[4], old_val)
|
||||
ecm.set_value(val, param)
|
||||
signaller.emit_signal('interfer_new', ecm)
|
||||
var ecm = $table.get_meta('ecm')
|
||||
if $table.has_meta('ecm') == false: return
|
||||
var indexis = $table.get_key_indexes(entry[0].name)
|
||||
var row_i = indexis[1]
|
||||
var param = $table.get_node_user_data(1, row_i)
|
||||
var p = TABLE_PARAMS[param]
|
||||
var old_val = ecm.get_value(param)
|
||||
var val = check_value(text, p[3], p[4], old_val)
|
||||
ecm.set_value(val, param)
|
||||
signaller.emit_signal('interfer_new', ecm)
|
||||
|
||||
|
||||
func check_value(val, min_val, max_val, old_val):
|
||||
if val.is_valid_float():
|
||||
if float(val) < min_val: return min_val
|
||||
if float(val) > max_val: return max_val
|
||||
return float(val)
|
||||
else: return old_val
|
||||
if val.is_valid_float():
|
||||
if float(val) < min_val: return min_val
|
||||
if float(val) > max_val: return max_val
|
||||
return float(val)
|
||||
else: return old_val
|
||||
|
||||
|
||||
func on_interfer_selected(ecm):
|
||||
if ecm != null:
|
||||
$table.set_meta('ecm', ecm)
|
||||
else:
|
||||
$table.set_meta('ecm', null)
|
||||
on_ecm_update()
|
||||
if ecm != null:
|
||||
$table.set_meta('ecm', ecm)
|
||||
else:
|
||||
$table.set_meta('ecm', null)
|
||||
on_ecm_update()
|
||||
|
||||
|
||||
func on_ecm_update():
|
||||
for item in len(TABLE_PARAMS):
|
||||
$table.set_node_text(1, item, '')
|
||||
$table.set_node_editable(1, item, false)
|
||||
if $table.has_meta('ecm') == false: return
|
||||
var ecm: interfer.Interfer = $table.get_meta('ecm')
|
||||
var mnms = tools.get_members_names(ecm)
|
||||
for item in ecm['params'].keys():
|
||||
mnms.append(item)
|
||||
for member_name in mnms:
|
||||
if not TABLE_PARAMS.has(member_name): continue
|
||||
var p = TABLE_PARAMS[member_name]
|
||||
var val = ecm.get_value(member_name)
|
||||
$table.set_node_text(1, p[0], '%s' % val)
|
||||
$table.set_node_editable(1, p[0], p[2])
|
||||
for item in len(TABLE_PARAMS):
|
||||
$table.set_node_text(1, item, '')
|
||||
$table.set_node_editable(1, item, false)
|
||||
if $table.has_meta('ecm') == false: return
|
||||
var ecm: interfer.Interfer = $table.get_meta('ecm')
|
||||
var mnms = tools.get_members_names(ecm)
|
||||
for item in ecm['params'].keys():
|
||||
mnms.append(item)
|
||||
for member_name in mnms:
|
||||
if not TABLE_PARAMS.has(member_name): continue
|
||||
var p = TABLE_PARAMS[member_name]
|
||||
var val = ecm.get_value(member_name)
|
||||
$table.set_node_text(1, p[0], '%s' % val)
|
||||
$table.set_node_editable(1, p[0], p[2])
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
$table.set_node_editable(1, item, false)
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
$table.set_node_editable(1, item, false)
|
||||
|
||||
@@ -15,51 +15,51 @@ const TABLE_COLUMN_SIZE = [ 370, 85 ] ## Ширины к
|
||||
## Параметры цели для отображения в таблице.[br]
|
||||
## [b]val[0][/b] - Индекс строки.[br][b]val[1][/b] - Содержание.
|
||||
const TABLE_PARAMS = {
|
||||
'baud': [0, 'Модуляционная скорость, бод'],
|
||||
'freqm': [1, 'Режим смены частоты.'],
|
||||
'power': [2, 'Уровень сигнала, дБм.'],
|
||||
'tmod': [3, 'Тип модуляции'],
|
||||
'width': [4, 'Занимая полоса частот, МГц.'],
|
||||
'rkrp': [5, 'Рекомендуемая помеха'] }
|
||||
'baud': [0, 'Модуляционная скорость, бод'],
|
||||
'freqm': [1, 'Режим смены частоты.'],
|
||||
'power': [2, 'Уровень сигнала, дБм.'],
|
||||
'tmod': [3, 'Тип модуляции'],
|
||||
'width': [4, 'Занимая полоса частот, МГц.'],
|
||||
'rkrp': [5, 'Рекомендуемая помеха'] }
|
||||
|
||||
|
||||
## Обрабатывает сигнал [signal threats.threat_selected].
|
||||
func on_threat_selected(th):
|
||||
$table.set_meta('id', th.id)
|
||||
on_threat_update(th)
|
||||
$table.set_meta('id', th.id)
|
||||
on_threat_update(th)
|
||||
|
||||
|
||||
func init_table():
|
||||
for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW)
|
||||
for p in TABLE_PARAMS.values():
|
||||
$table.set_node_text(0, p[0], p[1])
|
||||
$table.set_node_alligment(0, p[0], HORIZONTAL_ALIGNMENT_LEFT)
|
||||
$table.set_node_editable(0, p[0], false)
|
||||
$table.set_node_editable(1, p[0], false)
|
||||
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
|
||||
$table.set_meta('id', 0)
|
||||
for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW)
|
||||
for p in TABLE_PARAMS.values():
|
||||
$table.set_node_text(0, p[0], p[1])
|
||||
$table.set_node_alligment(0, p[0], HORIZONTAL_ALIGNMENT_LEFT)
|
||||
$table.set_node_editable(0, p[0], false)
|
||||
$table.set_node_editable(1, p[0], false)
|
||||
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
|
||||
$table.set_meta('id', 0)
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
signaller.connect('threat_selected', Callable(self, 'on_threat_selected'))
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
threats.connect('threat_update', Callable(self, 'on_threat_update'))
|
||||
call_deferred('init_table')
|
||||
signaller.connect('threat_selected', Callable(self, 'on_threat_selected'))
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
threats.connect('threat_update', Callable(self, 'on_threat_update'))
|
||||
call_deferred('init_table')
|
||||
|
||||
|
||||
## Обрабатывает сигнал [signal threats.threat_update].
|
||||
## Обновляет отображение только для выбранной цели.
|
||||
func on_threat_update(th):
|
||||
if th.selected == false: return
|
||||
if th.id != $table.get_meta('id'): return
|
||||
var mnms = tools.get_members_names(th)
|
||||
for member_name in mnms:
|
||||
if not TABLE_PARAMS.has(member_name): continue
|
||||
var p = TABLE_PARAMS[member_name]
|
||||
var val = th.get(member_name)
|
||||
$table.set_node_text(1, p[0], '%s' % val)
|
||||
if th.selected == false: return
|
||||
if th.id != $table.get_meta('id'): return
|
||||
var mnms = tools.get_members_names(th)
|
||||
for member_name in mnms:
|
||||
if not TABLE_PARAMS.has(member_name): continue
|
||||
var p = TABLE_PARAMS[member_name]
|
||||
var val = th.get(member_name)
|
||||
$table.set_node_text(1, p[0], '%s' % val)
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
|
||||
@@ -73,7 +73,6 @@ func _ready():
|
||||
log.info('Модуль географической карты готов')
|
||||
|
||||
|
||||
|
||||
func _on_map_mode_changed(mode: int) -> void:
|
||||
var map_image_size = ProjectSettings.get_setting(MAP_MODES[mode])
|
||||
material.set('shader_parameter/radius', MAP_RELATIVE_RADIUSES[mode])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bbq6nklh36yij"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bbq6nklh36yij"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/tilemap/tilemap.gd" id="1_mkfgj"]
|
||||
[ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="1_tsdui"]
|
||||
@@ -8,32 +8,7 @@ resource_local_to_scene = true
|
||||
shader = ExtResource("1_tsdui")
|
||||
shader_parameter/radius = 0.39
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ys5v4"]
|
||||
|
||||
[node name="tilemap" type="Sprite2D"]
|
||||
material = SubResource("ShaderMaterial_pmqvj")
|
||||
position = Vector2(560, 560)
|
||||
script = ExtResource("1_mkfgj")
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
offset_left = -563.0
|
||||
offset_top = -557.0
|
||||
offset_right = 1022.0
|
||||
offset_bottom = 641.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxEmpty_ys5v4")
|
||||
|
||||
[node name="Node2D" type="Node2D" parent="."]
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="Node2D"]
|
||||
offset_left = -490.0
|
||||
offset_top = 518.0
|
||||
offset_right = -244.0
|
||||
offset_bottom = 565.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Node2D"]
|
||||
offset_left = -499.0
|
||||
offset_top = 200.0
|
||||
offset_right = -239.0
|
||||
offset_bottom = 430.0
|
||||
|
||||
[connection signal="gui_input" from="Panel" to="." method="_on_panel_gui_input"]
|
||||
|
||||
@@ -45,9 +45,8 @@ class Tile:
|
||||
func _bound_index(index: int) -> int:
|
||||
var mi: int = 2 ** z
|
||||
if index < 0:
|
||||
index *= -1
|
||||
index %= mi
|
||||
index = mi - index
|
||||
index = -index - 1;
|
||||
index = int(mi - 1) - (index % int(mi))
|
||||
else:
|
||||
index %= mi
|
||||
return index
|
||||
|
||||
Reference in New Issue
Block a user