diff options
Diffstat (limited to 'client/menu/scene_transition.gd')
-rw-r--r-- | client/menu/scene_transition.gd | 58 |
1 files changed, 18 insertions, 40 deletions
diff --git a/client/menu/scene_transition.gd b/client/menu/scene_transition.gd index f68f6aa7..8fe078e6 100644 --- a/client/menu/scene_transition.gd +++ b/client/menu/scene_transition.gd @@ -14,57 +14,35 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name SceneTransition -extends ColorRect +extends Control -@onready var anim: AnimationPlayer = $animation -@export var ingame = false - -@export var auto_fade_in := true +@onready var anim: AnimationPlayer = $AnimationPlayer var black = true var fading = false +signal close() + func _ready(): - visible = true - if auto_fade_in: fade_in() + $ColorRect.visible = true func fade_in(): - if black: anim.play("fade_in"); fading = true - black = false - if fading: await anim.animation_finished - fading = false + if fading: push_error("transition busy (in)"); return + if not black: push_error("already faded in"); return + fading = true + anim.play_backwards("fade") + await anim.animation_finished self.mouse_filter = Control.MOUSE_FILTER_IGNORE + fading = false; black = false func fade_out(): + if fading: push_error("transition busy (out)"); return + if black: push_error("already faded out"); return + fading = true self.mouse_filter = Control.MOUSE_FILTER_STOP - if not black: anim.play("fade_out"); fading = true - black = true - if fading: await anim.animation_finished - fading = false - -func transition_to(path: String): - await out() - get_tree().change_scene_to_file(path) - -func instant_to(path: String): - get_tree().change_scene_to_file(path) - -func quit(): - await out() - get_tree().quit() - -func out(): - visible = true - if menu.visible: - menu.anim.play_backwards("activate") - await menu.anim.animation_finished - anim.play("fade_out") + anim.play("fade") await anim.animation_finished + fading = false; black = true -@onready var menu = $IngameMenu -func _process(_delta): - if ingame: - if not menu.visible and Input.is_action_just_pressed("pause"): - menu.act() - elif menu.visible and Input.is_action_just_pressed("pause"): - menu.deact() +func _exit_tree(): + if fading: push_error("SceneTransition destroyed while fading") |