From 2e93577467243e973494a1bfab9c8d12d03758f3 Mon Sep 17 00:00:00 2001 From: theludovyc Date: Sat, 14 Sep 2024 18:10:10 +0200 Subject: [PATCH] fix #5 Only open transition after bootsplash In SceneLoader to change_scene, change_scene_to_loading_screen and change_scene_to_resource to not play the open transition Rename _wait_after_load in _force_wait_after_load it is more comprehensive --- .../Autoloads/SceneLoader.gd | 34 +++++++++++-------- scenes/Bootstrap/bootstrap.gd | 2 +- scenes/LoadingScreen/LoadingScreen.gd | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/addons/rakugo_game_template/Autoloads/SceneLoader.gd b/addons/rakugo_game_template/Autoloads/SceneLoader.gd index 74e7db3..259798d 100644 --- a/addons/rakugo_game_template/Autoloads/SceneLoader.gd +++ b/addons/rakugo_game_template/Autoloads/SceneLoader.gd @@ -10,7 +10,7 @@ var _loaded_resource : Resource var _scene_loading_complete : bool = false var _background_loading : bool -var _wait_after_load : bool = true +var _force_wait_after_load : bool = true func _check_scene_path() -> bool: if _scene_path == null or _scene_path == "": @@ -38,12 +38,13 @@ func get_resource(): _loaded_resource = current_loaded_resource return _loaded_resource -func change_scene_to_resource() -> void: +func change_scene_to_resource(open_transition:bool = true) -> void: var current_tree = get_tree() current_tree.paused = true - Transitions.transition(Transitions.transition_type.Diamond) - await Transitions.animation_player.animation_finished + if open_transition: + Transitions.transition(Transitions.transition_type.Diamond) + await Transitions.animation_player.animation_finished var err = current_tree.change_scene_to_packed(get_resource()) if err: @@ -55,10 +56,13 @@ func change_scene_to_resource() -> void: current_tree.paused = false -func change_scene_to_loading_screen() -> void: +func change_scene_to_loading_screen(open_transition:bool = true) -> void: get_tree().paused = true - Transitions.transition(Transitions.transition_type.Diamond) - await Transitions.animation_player.animation_finished + + if open_transition: + Transitions.transition(Transitions.transition_type.Diamond) + await Transitions.animation_player.animation_finished + var err = get_tree().call_deferred("change_scene_to_packed", _loading_screen) if err: push_error("failed to change scenes to loading screen: %d" % err) @@ -103,23 +107,23 @@ func load_scene_in_background(scene_path : String): ResourceLoader.load_threaded_request(_scene_path) set_process(true) -func change_scene(scene_path : String, wait_after_load : bool = true) -> void: +func change_scene(scene_path : String, force_wait_after_load : bool = true, open_transition:bool = true) -> void: if scene_path == null or scene_path.is_empty(): push_error("no path given to load") return _scene_path = scene_path _scene_loading_complete = false - _wait_after_load = wait_after_load + _force_wait_after_load = force_wait_after_load if ResourceLoader.has_cached(scene_path): _scene_loading_complete = true call_deferred("emit_signal", "scene_loaded") - if _wait_after_load: - change_scene_to_loading_screen() + if _force_wait_after_load: + change_scene_to_loading_screen(open_transition) return - change_scene_to_resource() + change_scene_to_resource(open_transition) return ResourceLoader.load_threaded_request(_scene_path) - change_scene_to_loading_screen() + change_scene_to_loading_screen(open_transition) func _ready(): set_process(false) @@ -137,11 +141,11 @@ func _process(_delta): if _background_loading: set_process(false) return - elif not _wait_after_load: + elif not _force_wait_after_load: change_scene_to_resource() set_process(false) return - elif _wait_after_load and Input.is_anything_pressed(): + elif _force_wait_after_load and Input.is_anything_pressed(): change_scene_to_resource() set_process(false) return diff --git a/scenes/Bootstrap/bootstrap.gd b/scenes/Bootstrap/bootstrap.gd index a8de39b..6e25e51 100644 --- a/scenes/Bootstrap/bootstrap.gd +++ b/scenes/Bootstrap/bootstrap.gd @@ -4,4 +4,4 @@ extends Node #you can use this scene to show your splashscreen func _ready(): - SceneLoader.change_scene(RGT_Globals.main_menu_setting) + SceneLoader.change_scene(RGT_Globals.main_menu_setting, true, false) diff --git a/scenes/LoadingScreen/LoadingScreen.gd b/scenes/LoadingScreen/LoadingScreen.gd index 3f5e475..7c6a2e3 100644 --- a/scenes/LoadingScreen/LoadingScreen.gd +++ b/scenes/LoadingScreen/LoadingScreen.gd @@ -31,7 +31,7 @@ func _process(_delta): if new_progress > progress_bar.value: progress_bar.value = new_progress ResourceLoader.THREAD_LOAD_LOADED: - if SceneLoader._wait_after_load: + if SceneLoader._force_wait_after_load: progress_bar.value = progress_bar.max_value status_label.text = LOADING_COMPLETE_TEXT continue_label.text = CONTINUE_LABEL_TEXT