Advertisement
Socky

Untitled

Jan 6th, 2024
1,395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extends Node
  2.  
  3. signal connection_status
  4.  
  5. var loading_screen = preload("res://ui/loading_screen.tscn")
  6.  
  7. func change_scene(next: String, lobby_id: int = 0):
  8.     var screen = loading_screen.instantiate()
  9.     ResourceLoader.load_threaded_request(next)
  10.  
  11.     get_tree().root.add_child(screen)
  12.     await _fade(screen, "IN")
  13.     _load_progress(lobby_id, next, screen)
  14.    
  15. func _load_progress(lobby_id: int, next: String, screen):
  16.     var progress = []
  17.     while true:
  18.         var status = ResourceLoader.load_threaded_get_status(next, progress)
  19.         if status == ResourceLoader.THREAD_LOAD_FAILED:
  20.             print("[LOADER] Loading failed, returning to previous scene.")
  21.             _fade(screen, "OUT")
  22.             break
  23.         if status == ResourceLoader.THREAD_LOAD_LOADED:
  24.             var loaded_scene = ResourceLoader.load_threaded_get(next).instantiate()
  25.             get_tree().root.add_child(loaded_scene)
  26.             _connect_players(loaded_scene, lobby_id)
  27.             await self.connection_status #ISSUE HERE
  28.             print(loaded_scene.status)
  29.             get_tree().current_scene.queue_free()
  30.             get_tree().set_deferred("current_scene", loaded_scene)
  31.             _fade(screen, "OUT")
  32.             break
  33.     return
  34.  
  35. func _fade(node, dir: String):
  36.     var tween = get_tree().create_tween().set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_QUINT)
  37.     if dir == "IN":
  38.         tween.tween_property(node.get_node("ColorRect"), "modulate", Color(1,1,1,1), 1.0).from(Color(1,1,1,0))
  39.         await tween.finished
  40.         return
  41.     if dir == "OUT":
  42.         tween.tween_property(node.get_node("ColorRect"), "modulate", Color(1,1,1,0), 1.0).from(Color(1,1,1,1))
  43.         await tween.finished
  44.         node.queue_free()
  45.  
  46.  
  47. func _connect_players(loaded_scene: Node, lobby_id: int):
  48.     var host_id = Steam.getLobbyOwner(lobby_id)
  49.     loaded_scene.connection_status.connect(_connection_status)
  50.     loaded_scene.lobby_id = lobby_id
  51.     if host_id == SteamInit.steam_id:
  52.         loaded_scene.create_socket()
  53.     else:
  54.         loaded_scene.connect_socket(host_id)
  55.    
  56. func _connection_status():
  57.     emit_signal("connection_status")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement