sokoban
Diffstat (limited to 'Utils.gd')
-rw-r--r--Utils.gd55
1 files changed, 55 insertions, 0 deletions
diff --git a/Utils.gd b/Utils.gd
new file mode 100644
index 0000000..15dc404
--- /dev/null
+++ b/Utils.gd
@@ -0,0 +1,55 @@
+extends Node
+
+var color := Color(0.333333, 0.490196, 0.333333)
+
+var starting = false
+var loading = false
+var loading_int = 0
+
+var loadScreen: CanvasLayer = null
+var stop_input = false
+
+signal loaded_loading_screen
+
+const LoadScreen = preload("res://LoadingScreen.tscn")
+
+
+func _ready():
+ VisualServer.set_default_clear_color(color)
+
+
+func instance_scene_on_main(position, scene):
+ var main = get_tree().current_scene
+ var instance = scene.instance()
+ main.add_child(instance)
+ if not instance is CanvasLayer:
+ instance.global_position = position
+ return instance
+
+
+func change_scene_to(scene):
+ get_tree().change_scene_to(scene)
+
+
+func load_loading_screen():
+ # redundancy check
+ if loadScreen != null:
+ return
+ yield(get_tree().create_timer(.1), "timeout")
+ loadScreen = instance_scene_on_main(Vector2.ZERO, LoadScreen)
+ loadScreen.startup()
+ yield(loadScreen, "startup_complete")
+ emit_signal("loaded_loading_screen")
+
+
+func unload_loading_screen():
+ if loadScreen == null:
+ return
+ loadScreen.exit()
+ loadScreen = null
+
+
+func _set_disable_inputs(inputs):
+ stop_input = inputs
+ get_viewport().gui_disable_input = inputs
+ get_tree().call_group("input", "set_process_input", !inputs)