diff --git a/Scenes/level_display.tscn b/Scenes/level_display.tscn new file mode 100644 index 0000000..ed3a41f --- /dev/null +++ b/Scenes/level_display.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=3 format=3 uid="uid://b8x7y2z1a3c4"] + +[ext_resource type="Script" path="res://Scripts/LevelHUD.gd" id="1_script"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hud"] +content_margin_left = 15.0 +content_margin_top = 8.0 +content_margin_right = 15.0 +content_margin_bottom = 8.0 +bg_color = Color(0.1, 0.1, 0.1, 0.8) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(1, 1, 1, 0.3) +corner_radius_top_left = 15 +corner_radius_top_right = 15 +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 +shadow_color = Color(0, 0, 0, 0.2) +shadow_size = 5 + +[node name="LevelHUD" type="CanvasLayer"] +script = ExtResource("1_script") + +[node name="PanelContainer" type="PanelContainer" parent="."] +offset_left = 16.0 +offset_top = 16.0 +offset_right = 220.0 +offset_bottom = 56.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_hud") + +[node name="Label" type="Label" parent="PanelContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0.5) +theme_override_constants/shadow_offset_x = 1 +theme_override_constants/shadow_offset_y = 1 +theme_override_font_sizes/font_size = 20 +text = "Level Progress: 1 / 3" +vertical_alignment = 1 \ No newline at end of file diff --git a/Scripts/level.gd b/Scripts/level.gd index 19b15b6..bd70967 100644 --- a/Scripts/level.gd +++ b/Scripts/level.gd @@ -1,4 +1,5 @@ extends Node + var sinkBoxMatchNeeded=[false,true,true,false] var sinkBoxMatchPresent var sinkUsed @@ -9,14 +10,32 @@ var nextLevel var levels=["basicEventFlow","boxClick","multiSink","dlqPattern"] var levelind=0 +# Level Display Handling +var level_display_scene = preload("res://Scenes/level_display.tscn") +var level_display_instance + +func _ready(): + level_display_instance = level_display_scene.instantiate() + add_child(level_display_instance) + update_level_display() + func initialise(): sinkBoxMatchPresent=true sinkUsed=false totalbox=0 nextLevel=false dlsUsed=false + + # Make sure Level Display is visible again if we restarted + if level_display_instance: + level_display_instance.show() + update_level_display() + +func update_level_display(): + if level_display_instance: + level_display_instance.update_display(levelind + 1, levels.size()) -func next_level(): +func next_level(): if sinkUsed: if not sinkBoxMatchNeeded[levelind] and not dlsRequired[levelind]: print("if next level entered",sinkBoxMatchNeeded,dlsRequired) @@ -36,16 +55,22 @@ func next_level(): message_display.show_message("Success") await message_display.show_message_for_duration(2.0) message_display.visible = false + levelind+=1 + update_level_display() + if levelind!=levels.size(): var next_level_path="res://Scenes/"+levels[levelind]+".tscn" get_tree().change_scene_to_file(next_level_path) ConveyerController.initialise() else: print("End of Levels.") + # --- HIDE LEVEL DISPLAY HERE --- + if level_display_instance: + level_display_instance.hide() get_tree().change_scene_to_file("res://Scenes/end_of_all_levels.tscn") else: print("Failed. Try Again") message_display.show_message("Failed. Try Again") await message_display.show_message_for_duration(2.0) - message_display.visible = false + message_display.visible = false \ No newline at end of file diff --git a/Scripts/level_display.gd b/Scripts/level_display.gd new file mode 100644 index 0000000..7ca97d3 --- /dev/null +++ b/Scripts/level_display.gd @@ -0,0 +1,6 @@ +extends CanvasLayer + +@onready var label = $PanelContainer/Label + +func update_display(current_level: int, total_levels: int): + label.text = "Level Progress: " + str(current_level) + " / " + str(total_levels) \ No newline at end of file