summaryrefslogtreecommitdiff
path: root/Game.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-09-10 18:16:15 +0200
committerDaniel Weipert <git@mail.dweipert.de>2024-09-10 18:16:15 +0200
commit3fdb011ef62249a514a8eba2556cc9f6ea5ea477 (patch)
tree3273fe2e4736f6843d1a86ae0bcf5901ffbedc86 /Game.gd
parentd200edc1a73f4cb8e7595579a8914301b3248299 (diff)
next commit
Diffstat (limited to 'Game.gd')
-rw-r--r--Game.gd90
1 files changed, 83 insertions, 7 deletions
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()