From 1b0c346354d0176f02fc4bd4cf86d0855039e0ca Mon Sep 17 00:00:00 2001 From: Tusharjamdade Date: Sat, 31 Jan 2026 10:13:32 +0000 Subject: [PATCH 1/2] add level progress indicator to show learner progression across levels --- Scenes/level_display.tscn | 41 +++++++++++++++++++++++++++++++++++++++ Scripts/level.gd | 29 +++++++++++++++++++++++++-- Scripts/level_display.gd | 6 ++++++ 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 Scenes/level_display.tscn create mode 100644 Scripts/level_display.gd 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..871427e 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 +# HUD Handling +var hud_scene = preload("res://Scenes/LevelHUD.tscn") +var hud_instance + +func _ready(): + hud_instance = hud_scene.instantiate() + add_child(hud_instance) + update_hud() + func initialise(): sinkBoxMatchPresent=true sinkUsed=false totalbox=0 nextLevel=false dlsUsed=false + + # Make sure HUD is visible again if we restarted + if hud_instance: + hud_instance.show() + update_hud() + +func update_hud(): + if hud_instance: + hud_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_hud() + 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 HUD HERE --- + if hud_instance: + hud_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 From 8b8b3297e1da4556af4123a48e277e4647fb85f0 Mon Sep 17 00:00:00 2001 From: Tusharjamdade Date: Sat, 31 Jan 2026 10:19:00 +0000 Subject: [PATCH 2/2] change labels --- Scripts/level.gd | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Scripts/level.gd b/Scripts/level.gd index 871427e..bd70967 100644 --- a/Scripts/level.gd +++ b/Scripts/level.gd @@ -10,14 +10,14 @@ var nextLevel var levels=["basicEventFlow","boxClick","multiSink","dlqPattern"] var levelind=0 -# HUD Handling -var hud_scene = preload("res://Scenes/LevelHUD.tscn") -var hud_instance +# Level Display Handling +var level_display_scene = preload("res://Scenes/level_display.tscn") +var level_display_instance func _ready(): - hud_instance = hud_scene.instantiate() - add_child(hud_instance) - update_hud() + level_display_instance = level_display_scene.instantiate() + add_child(level_display_instance) + update_level_display() func initialise(): sinkBoxMatchPresent=true @@ -26,14 +26,14 @@ func initialise(): nextLevel=false dlsUsed=false - # Make sure HUD is visible again if we restarted - if hud_instance: - hud_instance.show() - update_hud() + # Make sure Level Display is visible again if we restarted + if level_display_instance: + level_display_instance.show() + update_level_display() -func update_hud(): - if hud_instance: - hud_instance.update_display(levelind + 1, levels.size()) +func update_level_display(): + if level_display_instance: + level_display_instance.update_display(levelind + 1, levels.size()) func next_level(): if sinkUsed: @@ -57,7 +57,7 @@ func next_level(): message_display.visible = false levelind+=1 - update_hud() + update_level_display() if levelind!=levels.size(): var next_level_path="res://Scenes/"+levels[levelind]+".tscn" @@ -65,9 +65,9 @@ func next_level(): ConveyerController.initialise() else: print("End of Levels.") - # --- HIDE HUD HERE --- - if hud_instance: - hud_instance.hide() + # --- 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")