summaryrefslogtreecommitdiff
path: root/client/menu/scene_transition.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/menu/scene_transition.gd')
-rw-r--r--client/menu/scene_transition.gd58
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")