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

@ -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