Improved reconnect flow

This commit is contained in:
2024-01-29 23:16:06 +01:00
parent bf08205c7d
commit b22d0b1367
25 changed files with 212 additions and 99 deletions

View File

@ -8,7 +8,7 @@ func send_message(message: String):
buffer.put_data(message.to_utf8_buffer())
%Client.send(buffer.data_array)
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var buffer := StreamPeerBuffer.new()
buffer.data_array = data

View File

@ -21,7 +21,7 @@ func _enter_tree():
func _process(_delta):
while socket.get_available_packet_count() > 0:
var packet := socket.get_packet()
handle_packet(packet, socket)
handle_packet(packet)
func update_statistics():
download_changed.emit(download)
@ -31,4 +31,4 @@ func update_statistics():
func send(data: PackedByteArray):
socket.put_packet(data)
upload += data.size()
upload += data.size()

View File

@ -3,7 +3,7 @@ extends PacketHandler
signal success
signal failure
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var buffer := StreamPeerBuffer.new()
buffer.data_array = data
@ -15,10 +15,6 @@ func handle_packet(data: PackedByteArray, _peer: PacketPeer):
Global.account_id = buffer.get_string()
Global.auth_token = buffer.get_string()
print("[%s] Login succeeded." % Global.username)
print("[%s] ID: %s" % [Global.username, Global.account_id])
print("[%s] Auth token: %s" % [Global.username, Global.auth_token])
success.emit()

12
client/network/Logout.gd Normal file
View File

@ -0,0 +1,12 @@
extends PacketHandler
signal success
func handle_packet(_data: PackedByteArray):
logout()
success.emit()
func logout():
Global.auth_token = ""
Global.account_id = ""
Global.player = null

View File

@ -10,7 +10,7 @@ var history: Array[float] = []
func _init():
history.resize(HISTORY_SIZE)
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var id := data[0]
var ping := get_time() - history[id]
changed.emit(ping)

View File

@ -7,7 +7,7 @@ signal main_player_spawned(player: Player)
func _ready():
assert(player_scene)
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var buffer := StreamPeerBuffer.new()
buffer.data_array = data
@ -24,19 +24,29 @@ func handle_packet(data: PackedByteArray, _peer: PacketPeer):
var player := spawn_player(player_id)
player.position = server_position
player.set_character_name(player_name)
Global.players.add(player)
func spawn_player(id: String) -> Player:
var player = player_scene.instantiate()
var player: Player
if Global.players.has(id):
player = Global.players.get_player(id)
if id == Global.account_id:
Global.player = player
return player
player = player_scene.instantiate()
player.id = id
if id == Global.account_id:
Global.player = player
player.controller = PlayerController.new()
Global.player = player
main_player_spawned.emit(player)
else:
player.controller = ProxyController.new()
player.controller.character = player
player.add_child(player.controller)
%Players.add(player)
return player

View File

@ -11,7 +11,7 @@ func on_jump():
buffer.put_8(PacketHandler.Packet.PLAYER_JUMP)
%Client.send(buffer.data_array)
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var player_id := data.get_string_from_ascii()
var player := Global.players.get_player(player_id)
player.jump()

View File

@ -5,7 +5,7 @@ extends PacketHandler
var last_sent := Time.get_ticks_msec()
var last_sent_position := Vector3.ZERO
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var buffer := StreamPeerBuffer.new()
buffer.data_array = data

View File

@ -1,6 +1,6 @@
extends PacketHandler
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
func handle_packet(data: PackedByteArray):
var player_id := data.get_string_from_ascii()
print("[%s] Remove player: %s" % [Global.username, player_id])
%Players.remove(player_id)
Global.players.remove(player_id)

View File

@ -13,7 +13,7 @@ func get_handler(index: int) -> PacketHandler:
func set_handler(index: int, node: PacketHandler):
handlers[index] = node
func handle_packet(packet: PackedByteArray, peer: PacketPeer):
func handle_packet(packet: PackedByteArray):
var type := packet.decode_u8(0)
var handler := get_handler(type)
@ -21,5 +21,5 @@ func handle_packet(packet: PackedByteArray, peer: PacketPeer):
push_warning("Unknown packet type %d" % type)
return
handler.handle_packet(packet.slice(1), peer)
handler.handle_packet(packet.slice(1))
download += packet.size()

View File

@ -16,5 +16,5 @@ enum Packet {
@export var packet_type: Packet
func handle_packet(_data: PackedByteArray, _peer: PacketPeer):
func handle_packet(_data: PackedByteArray):
pass