extends Node2D var sock = PacketPeerUDP.new() # Адрес имитатора var main_addr = [ '127.0.0.1', 42022 ] var dst_addr = [ '127.0.0.1', 42023 ] @onready var table_threats = get_node('ColorRect/tabs/threats/scroll_thr/table_t') @onready var btn_add_threats = get_node('ColorRect/tabs/threats/btn_add') @onready var btn_del_threats = get_node('ColorRect/tabs/threats/btn_del') @onready var btn_save_threats = get_node('ColorRect/tabs/threats/btn_save') @onready var btn_load_threats = get_node('ColorRect/tabs/threats/btn_load') @onready var btn_thr_gen = get_node('ColorRect/tabs/threats/thr_gen') @onready var scroll_thr = get_node('ColorRect/tabs/threats/scroll_thr') @onready var btn_rotate = get_node('ColorRect/tabs/threats/panel_rotate/btn_rotate') @onready var entry_rotate = get_node('ColorRect/tabs/threats/panel_rotate/entry_rotate') @onready var chkbx_rotate = get_node('ColorRect/tabs/threats/panel_rotate/chkbx_rotate') @onready var panel_threats = get_node('ColorRect/tabs/threats') @onready var table_pomehi = get_node('ColorRect/tabs/pomehi/table_p') # Called when the node enters the scene tree for the first time. func _ready(): var nodes: Dictionary = { 'btn_add': btn_add_threats, 'btn_del': btn_del_threats, 'btn_save': btn_save_threats, 'btn_load': btn_load_threats, 'thr_gen': btn_thr_gen, 'btn_rt': btn_rotate, 'entry_rt': entry_rotate, 'chkbx_rt': chkbx_rotate, 'scroll_thr': scroll_thr, 'panel': panel_threats} sock.bind(main_addr[1], main_addr[0]) sock.set_dest_address(dst_addr[0], dst_addr[1]) Threats.init_threats(table_threats, nodes) Interfers.init_pomehi(table_pomehi) fs.init_fs($ColorRect/tabs/pomehi, $ColorRect/tabs/pomehi/fs_rect) var timer = Timer.new() timer.connect('timeout', Callable(self, 'on_timeout').bind()) add_child(timer) #to process timer.start(1) #to start func on_timeout(): sock.put_packet(Threats.get_threats_data()) Interfers.check_interfers_state() func on_receive(data): var json_conv: = JSON.new() var utf8_data = data.get_string_from_utf8() if Error.OK == json_conv.parse(utf8_data): var json_data = json_conv.get_data() if not (json_data is Dictionary): return if not json_data.has('ts'): return if not ((json_data['ts'] is int) or (json_data['ts'] is float)): return if json_data['ts'] == 6: if not json_data.has('ispp'): return if not ((json_data['ispp'] is int) or (json_data['ispp'] is float)): return if not json_data.has('krp'): return if not json_data.has('ss'): return if not ((json_data['ss'] is int) or (json_data['ss'] is float)): return if json_data['krp'] == 'off': Interfers.off_interfer(json_data['ispp']) sock.put_packet(Interfers.get_msg7_data()) return if not json_data.has('powp'): return if not json_data.has('kni'): return if not json_data.has('params'): return if not json_data.has('get'): return Interfers.set_interfer(json_data) sock.put_packet(Interfers.get_msg7_data()) elif json_data['ts'] == 8: fs.on_receive_msg8(json_data) elif json_data['ts'] == 9: Threats.on_receive_msg9(json_data) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): while sock.get_available_packet_count() > 0: var data: = sock.get_packet() var addr: = sock.get_packet_ip() var port: = sock.get_packet_port() on_receive(data) func parse_command_line() -> void: var args = OS.get_cmdline_args() for argument in args: argument = argument.strip_edges() if argument.begins_with("--main_ip="): var key_value = argument.split("=") if key_value.size() == 2: main_addr[0] = key_value[1].strip_edges() if argument.begins_with("--dst_ip="): var key_value = argument.split("=") if key_value.size() == 2: dst_addr[0] = key_value[1].strip_edges()