extends Spatial var loader var wait_frames var time_max = 100 # msec var current_scene_path = null var current_scene = null var is_scene_loading = false var creature_selected_slot = null var creature_selected_filename = null func _ready(): Connection.connect( "connection_ok", self, "_on_connexion_ok" ) Connection.connect( "connection_error", self, "_on_connection_error" ) Globals.ressource_queue.start() func _process(_time): if self.is_scene_loading: if Globals.ressource_queue.is_ready( self.current_scene_path ): print( "LOADING FINISHED") self.set_new_scene( Globals.ressource_queue.get_resource( self.current_scene_path ) ) # $loading_screen.hide() self.stop_progress() else: self.update_progress() $loading_screen.show() # if loader == null: # # no need to process anymore # set_process(false) # return # # if wait_frames > 0: # wait for frames to let the "loading" animation show up # wait_frames -= 1 # return # # var t = OS.get_ticks_msec() # while OS.get_ticks_msec() < t + time_max: # use "time_max" to control for how long we block this thread # # # poll your loader # var err = loader.poll() # # if err == ERR_FILE_EOF: # Finished loading. # var resource = loader.get_resource() # loader = null # set_new_scene(resource) # break # elif err == OK: # update_progress() # else: # error during loading ## show_error() # printerr( "Loading errors." ) # loader = null # break func _input( event ): if event.is_action_released( "music_manager" ): MusicManager.toggle() #func load_scene( path ): # self.loader = ResourceLoader.load_interactive( path ) # if self.loader == null: ## show_error() # printerr( "Loading errors." ) # return # set_process(true) # if self.current_scene: # self.current_scene.queue_free() # get rid of the old scene # # # start your "loading..." animation ## get_node("animation").play("loading") # # $loading_screen.show() # # self.wait_frames = 1 func set_new_scene( scene_resource ): if scene_resource: self.current_scene = scene_resource.instance() self.get_node("scene").add_child(self.current_scene) # self.is_scene_loading = false self.stop_progress() # $loading_screen.hide() $main_menu.hide() if self.has_node( "scene/creatures_menu_ui" ): self.get_node( "scene/creatures_menu_ui" ).connect( "new_pressed", self, "_on_creatures_menu_ui_new_pressed" ) self.get_node( "scene/creatures_menu_ui" ).connect( "cancel_pressed", self, "_on_creatures_menu_ui_cancel_pressed" ) self.get_node( "scene/creatures_menu_ui" ).connect( "select_pressed", self, "_on_creatures_menu_ui_select_pressed" ) elif self.has_node( "scene/creatures_editor_ui" ): self.get_node( "scene/creatures_editor_ui" ).connect( "valid_pressed", self, "_on_creature_editor_ui_valid_pressed" ) self.get_node( "scene/creatures_editor_ui" ).connect( "cancel_pressed", self, "_on_creature_editor_ui_cencel_pressed" ) print( "slot: " + str( self.creature_selected_slot ) ) self.get_node( "scene/creatures_editor_ui" ).slot = self.creature_selected_slot # elif self.has_node( "scene/game" ): # self.get_node( "scene/game" ).load_player( self.creature_selected_filename ) func update_progress(): var progress = float(Globals.ressource_queue.get_progress( self.current_scene_path )) #self.get_node("loading_screen/background_player").play("loading") #self.get_node("loading_screen/background_player").stop() self.get_node("loading_screen/background_player").seek( (progress*13.0)/100.0 ) func start_progress(): var progress = float(Globals.ressource_queue.get_progress( self.current_scene_path )) self.get_node("loading_screen/background_player").play("loading") #self.get_node("loading_screen/background_player").stop() self.get_node("loading_screen/background_player").seek( 0 ) self.is_scene_loading = true $loading_screen.show() func stop_progress(): self.get_node("loading_screen/background_player").stop() self.is_scene_loading = false $loading_screen.hide() func goto_scene( p_path ): # Clean old scene. if self.current_scene: Globals.ressource_queue.cancel_resource( self.current_scene_path ) self.current_scene.queue_free() Globals.ressource_queue.queue_resource( p_path ) self.current_scene_path = p_path #self.is_scene_loading = true self.start_progress() #func set_new_scene( scene_resource ): # if scene_resource: # self.current_scene = scene_resource.instance() # self.get_node("scene").add_child(self.current_scene) # self.is_scene_loading = false #func update_progress(): # self.get_node("loading_screen/progress_bar").value = Globals.ressource_queue.get_progress( self.current_scene_path ) # func _on_main_menu_play_pressed(): var username = $main_menu/screen_box/login_box/username.text; var password = $main_menu/screen_box/login_box/password.text; if username != null and username != "" and password != null and password != "": Connection.do_request(username, password) else: Globals.goto_scene( "res://scenes/interfaces/creatures_menu/creatures_menu_ui.tscn" ) func _on_creatures_menu_ui_new_pressed( slot ): self.creature_selected_slot = slot # Globals.goto_scene( "res://scenes/interfaces/creatures_editor/creatures_editor_ui.tscn" ) Globals.goto_scene( "res://scenes/creatures/creatures_creation.tscn" ) func _on_creatures_menu_ui_cancel_pressed(): $main_menu.show() func _on_creatures_menu_ui_select_pressed( filename ): self.creature_selected_filename = filename #Globals.goto_scene( "res://scenes/game/game.tscn" ) Globals.goto_scene( "res://scenes/game/dispensaire/dispensaire.tscn" ) func _on_creature_editor_ui_valid_pressed(): Globals.goto_scene( "res://scenes/interfaces/creatures_menu/creatures_menu_ui.tscn" ) func _on_creature_editor_ui_cencel_pressed(): Globals.goto_scene( "res://scenes/interfaces/creatures_menu/creatures_menu_ui.tscn" ) func _on_main_menu_quit_pressed(): get_tree().quit() func _on_connexion_ok(): Globals.goto_scene( "res://scenes/interfaces/creatures_menu/creatures_menu_ui.tscn" ) func _on_connection_error( message ): $main_menu/screen_box/login_box/error.text = message