From e01b33777328b27901687fad4445685ec2b31ac7 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 8 Feb 2024 18:14:38 -0500 Subject: version num, held messages, updated lobby list --- racing/multiplayer.gd | 52 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) (limited to 'racing/multiplayer.gd') diff --git a/racing/multiplayer.gd b/racing/multiplayer.gd index 4255ba6..2df69c1 100644 --- a/racing/multiplayer.gd +++ b/racing/multiplayer.gd @@ -41,6 +41,11 @@ func _ready(): # _request_lobby_list() + var race_manager = global.get_node("RaceManager") + for packet in race_manager.held_messages: + _handle_packet(packet) + race_manager.held_messages.clear() + func _process(_delta: float) -> void: _read_p2p_packet() @@ -197,27 +202,32 @@ func _read_p2p_packet() -> void: var packet: Dictionary = Steam.readP2PPacket(packet_size, 0) var remote_id = packet["steam_id_remote"] if remote_id in active_lobby_members: - var serialized: PoolByteArray = packet["data"] - var data: Dictionary = bytes2var(serialized, false) - if "global_transform" in data: - _receive_member_location(remote_id, data["global_transform"]) - if "message_id" in data: - _send_p2p_packet( - { - "ack": data["message_id"], - }, - remote_id, - Steam.P2P_SEND_RELIABLE_WITH_BUFFERING, - false - ) - if "loaded" in data: - _update_lobby_members() - if "timeout" in data: - _update_lobby_members() - if "victory" in data: - _someone_victory(Steam.getFriendPersonaName(remote_id)) - if "ack" in data: - messages_needing_ack.erase(data["ack"]) + _handle_packet(packet) + + +func _handle_packet(packet): + var remote_id = packet["steam_id_remote"] + var serialized: PoolByteArray = packet["data"] + var data: Dictionary = bytes2var(serialized, false) + if "global_transform" in data: + _receive_member_location(remote_id, data["global_transform"]) + if "message_id" in data: + _send_p2p_packet( + { + "ack": data["message_id"], + }, + remote_id, + Steam.P2P_SEND_RELIABLE_WITH_BUFFERING, + false + ) + if "loaded" in data: + _update_lobby_members() + if "timeout" in data: + _update_lobby_members() + if "victory" in data: + _someone_victory(Steam.getFriendPersonaName(remote_id)) + if "ack" in data: + messages_needing_ack.erase(data["ack"]) func _receive_member_location(member_id: int, global_transform) -> void: -- cgit 1.4.1