extends Channel signal on_match_set_search_state(msg: MatchSetSearchStateMessage) signal on_match_found(msg: MatchFoundMessage) signal on_match_aborted signal on_match_established(msg: MatchEstablishedMessage) func get_channel_location() -> String: return "matchmaking" func _process(_delta: float) -> void: self.socket.poll() if self.socket.get_ready_state() != WebSocketPeer.STATE_OPEN: return while self.socket.get_available_packet_count(): var msg := ( Message . deserialize( self.socket.get_packet().get_string_from_utf8(), [ MatchSetSearchStateMessage, MatchFoundMessage, MatchAbortedMessage, MatchEstablishedMessage, ] ) ) match msg.get_message_id(): MatchSetSearchStateMessage.MESSAGE_ID: on_match_set_search_state.emit(msg) MatchFoundMessage.MESSAGE_ID: on_match_found.emit(msg) MatchAbortedMessage.MESSAGE_ID: on_match_found.emit(msg) MatchEstablishedMessage.MESSAGE_ID: on_match_established.emit(msg) _: continue func send_search_state(searching: bool) -> void: if self.socket.get_ready_state() != WebSocketPeer.STATE_OPEN: return var msg := MatchSetSearchStateMessage.new() msg.searching = searching self.socket.send_text(Message.serialize(msg)) func send_match_accepted(accepted: bool, match_id: String) -> void: if self.socket.get_ready_state() != WebSocketPeer.STATE_OPEN: return var msg := MatchAcceptedMessage.new() msg.accepted = accepted msg.matchId = match_id self.socket.send_text(Message.serialize(msg))