From 3fdb011ef62249a514a8eba2556cc9f6ea5ea477 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Tue, 10 Sep 2024 18:16:15 +0200 Subject: next commit --- Game.gd | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 7 deletions(-) (limited to 'Game.gd') diff --git a/Game.gd b/Game.gd index a9bd548..1a9fe39 100644 --- a/Game.gd +++ b/Game.gd @@ -1,11 +1,87 @@ extends Node -# TODO +signal score_changed + +var score = 0 : + set(value): + score = value + score_changed.emit() + + +func _ready(): + var canvas_layer = CanvasLayer.new() + canvas_layer.name = "ScreenTransition" + + var color_rect = ColorRect.new() + color_rect.name = "ColorRect" + color_rect.size = get_tree().current_scene.get_viewport_rect().size + color_rect.color = Color(1,1,1,0) + + canvas_layer.add_child(color_rect) + + get_tree().root.add_child.call_deferred(canvas_layer) + + get_tree().root.add_child.call_deferred(preload("res://BackgroundColor.tscn").instantiate()) + + +func fade_out_screen(): + var color_rect = get_tree().root.get_node("ScreenTransition/ColorRect") + color_rect.color = Color(1,1,1,0) + + var tween = get_tree().create_tween() + tween.tween_property( + color_rect, + "color", + Color(1,1,1,1), + 0.3 + ) + + return tween + +func fade_in_screen(): + var color_rect = get_tree().root.get_node("ScreenTransition/ColorRect") + color_rect.color = Color(1,1,1,1) + + var tween = get_tree().create_tween() + tween.tween_property( + color_rect, + "color", + Color(1,1,1,0), + 0.3 + ) + + return tween + + +func transition_to_scene(path: String): + var scene = load(path).instantiate() + + (func(): + var tween = Game.fade_out_screen() + get_tree().current_scene.process_mode = Node.PROCESS_MODE_DISABLED + await tween.finished + + get_tree().current_scene.free() + get_tree().root.add_child(scene) + get_tree().current_scene = scene + + Game.fade_in_screen() + ).call_deferred() + func transition_scene_with_door(door: Door): - var scene = load(door.target_scene).instantiate() - scene.starting_position = door.target_position - get_tree().root.add_child(scene) - get_tree().current_scene.free() - get_tree().current_scene = scene - get_tree().current_scene._ready() + var scene = load(door.target_scene).instantiate() + scene.starting_position = door.target_position + scene.fade_in_from_door = true + + var tween = Game.fade_out_screen() + get_tree().current_scene.process_mode = Node.PROCESS_MODE_DISABLED + await tween.finished + + (func(): + get_tree().current_scene.free() + get_tree().root.add_child(scene) + get_tree().current_scene = scene + + Game.fade_in_screen() + ).call_deferred() -- cgit v1.2.3