extends PacketHandler

signal changed(ping: float)

const HISTORY_SIZE = 8

var count := 0
var history: Array[float] = []

func _init():
	history.resize(HISTORY_SIZE)

func _ready():
	%Client.set_handler(Packet.PING, self)

func send_ping():
	var buffer := StreamPeerBuffer.new()
	buffer.put_8(Packet.PING)
	buffer.put_8(count)
	%Client.socket.put_packet(buffer.data_array)

	history[count] = Time.get_unix_time_from_system()
	count += 1

	if count >= HISTORY_SIZE:
		count = 0

func handle_packet(data: PackedByteArray, _peer: PacketPeer):
	var id := data[0]
	var ping := Time.get_unix_time_from_system() - history[id]
	changed.emit(ping)