58 lines
1.5 KiB
GDScript3
58 lines
1.5 KiB
GDScript3
|
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))
|