26 lines
986 B
GDScript
26 lines
986 B
GDScript
extends Node
|
|
|
|
|
|
class YeMSInfo extends unit.Unit:
|
|
static var json_conv: = JSON.new()
|
|
var online_timeout: float = 5000 ## Должен быть равен наибольшему времени дотоверности из всех кластеров
|
|
var info: = Dictionary()
|
|
func parse(data: PackedByteArray, now_tick: int):
|
|
self.rx_tick = now_tick
|
|
if not online:
|
|
online = true
|
|
emit_signal('line_changed', self)
|
|
var utf8_data: = data.get_string_from_utf8()
|
|
if Error.OK == json_conv.parse(utf8_data):
|
|
info.merge(json_conv.get_data(), true)
|
|
emit_signal('data_received', self)
|
|
else:
|
|
var msg = json_conv.get_error_message()
|
|
emit_signal('parse_error', self, msg)
|
|
|
|
func process(now_tick: int):
|
|
if online and ((now_tick - rx_tick) > online_timeout):
|
|
online = false
|
|
emit_signal('line_changed', self)
|
|
return Error.ERR_BUSY
|