37 lines
1.1 KiB
GDScript
37 lines
1.1 KiB
GDScript
extends Node
|
|
|
|
|
|
var sock: PacketPeerUDP
|
|
var units: Dictionary
|
|
|
|
|
|
func _ready() -> void:
|
|
var addr = REPSettings.addr['уареп-пульт'][1]
|
|
var port = REPSettings.addr['уареп-пульт'][2]
|
|
sock = PacketPeerUDP.new()
|
|
sock.bind(port, addr)
|
|
for key in REPSettings.addr:
|
|
var prof = REPSettings.addr[key]
|
|
if prof[0] == 'yau07':
|
|
addr = REPSettings.addr[key][1]
|
|
port = REPSettings.addr[key][2]
|
|
var unit = yau07.YaU07.new([addr, port])
|
|
var addr_port: String = '%s:%d' % [addr, port]
|
|
units[addr_port] = unit
|
|
Log.info('ЯУ-07: %s' % unit)
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
for unit in units.values() as Array[yau07.YaU07]:
|
|
unit.process(delta, sock)
|
|
|
|
while sock.get_available_packet_count() > 0:
|
|
var data = sock.get_packet()
|
|
var addr = sock.get_packet_ip()
|
|
var port = sock.get_packet_port()
|
|
var addr_port: String = '%s:%d' % [addr, port]
|
|
if addr_port in units:
|
|
var unit: yau07.YaU07 = units[addr_port]
|
|
unit.parse(data)
|
|
return
|