diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-09-10 18:16:15 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-09-10 18:16:15 +0200 |
commit | 3fdb011ef62249a514a8eba2556cc9f6ea5ea477 (patch) | |
tree | 3273fe2e4736f6843d1a86ae0bcf5901ffbedc86 /Game.gd | |
parent | d200edc1a73f4cb8e7595579a8914301b3248299 (diff) |
next commit
Diffstat (limited to 'Game.gd')
-rw-r--r-- | Game.gd | 90 |
1 files changed, 83 insertions, 7 deletions
@@ -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() |