summaryrefslogtreecommitdiff
path: root/Global.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Global.gd')
-rw-r--r--Global.gd60
1 files changed, 60 insertions, 0 deletions
diff --git a/Global.gd b/Global.gd
new file mode 100644
index 0000000..d9414c8
--- /dev/null
+++ b/Global.gd
@@ -0,0 +1,60 @@
+extends Node
+
+
+const Levels = [
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+ "Level_0001",
+]
+
+var Level_Map = []
+
+
+func _ready():
+ for level in self.Levels:
+ self.Level_Map.push_back({
+ time = 0,
+ cleared_by = -1,
+ meta = {
+ path = "res://Levels/%s.tscn" % level,
+ name = level,
+ },
+ })
+
+
+func change_scene_to_instance(instance):
+ call_deferred("_deferred_change_scene_to_instance", instance)
+func _deferred_change_scene_to_instance(instance):
+ get_tree().current_scene.free()
+ get_tree().get_root().add_child(instance)
+ get_tree().set_current_scene(instance)
+
+
+func get_level(idx):
+ return self.Level_Map[idx]
+
+
+func start_level(idx):
+ var global_level = self.get_level(idx)
+
+ var Level = load(global_level.meta.path)
+ var instance_level = Level.instance()
+ instance_level.idx = idx
+ self.change_scene_to_instance(instance_level)
+
+
+func end_level(instance_level):
+ var global_level = self.get_level(instance_level.idx)
+
+ var time = stepify(instance_level.timer, 0.01)
+ if (global_level.time == 0 or time < global_level.time):
+ global_level.time = time
+ global_level.cleared_by = randi() & 1
+
+ get_tree().change_scene("res://UI/LevelSelect.tscn")