Client/scripts/channel/matchmaking/matchmaking_channel.gd

58 lines
1.5 KiB
GDScript3
Raw Normal View History

2025-03-04 15:25:27 +01:00
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))