extends PacketHandler

signal changed(ping: float)

const HISTORY_SIZE = 8

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

func _init():
	history.resize(HISTORY_SIZE)

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

func send_ping():
	var buffer := StreamPeerBuffer.new()
	buffer.put_8(Packet.PING)
	buffer.put_8(count)
	%Client.send(buffer.data_array)
	history[count] = get_time()
	count += 1

	if count >= HISTORY_SIZE:
		count = 0

func get_time() -> float:
	return Time.get_unix_time_from_system()