extends Node

var udp := PacketPeerUDP.new()
var handlers: Array[Node] = []

func _init():
	handlers.resize(256)
	udp.connect_to_host("127.0.0.1", 4242)

func _process(_delta):
	if udp.get_available_packet_count() <= 0:
		return

	var packet := udp.get_packet()
	var type := packet.decode_u8(0)
	var handler := handlers[type]

	if handler == null:
		push_warning("Unknown packet type %d" % type)
		return

	handler.handle_packet(packet.slice(1))

func add_handler(packet: int, node: Node):
	assert(node.has_method("handle_packet"))
	handlers[packet] = node