Added level completion screen

This commit is contained in:
2026-01-08 18:30:48 +03:00
parent 3e73fe8e1f
commit 3b5a60cd9b
8 changed files with 120 additions and 4 deletions
+7
View File
@@ -4,6 +4,7 @@ extends Node2D
@onready var pause_menu : PauseMenu = $%PauseMenu
@onready var game_over_menu : GameOverMenu = $%GameOverMenu
@onready var completion_menu : CompletionMenu = $%CompletionMenu
func _ready() -> void:
@@ -20,3 +21,9 @@ func _input(event: InputEvent) -> void:
func _on_player_dead() -> void:
get_tree().paused = true
game_over_menu.show()
func _on_level_end_entered(body: Node2D) -> void:
if body is Player:
get_tree().paused = true
completion_menu.show()
+16 -1
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=19 format=3 uid="uid://mpsu4g2b5h3a"]
[gd_scene load_steps=21 format=3 uid="uid://mpsu4g2b5h3a"]
[ext_resource type="Script" uid="uid://c737mx0kxva7i" path="res://game/levels/abstract_level.gd" id="1_o2mui"]
[ext_resource type="PackedScene" uid="uid://dtcad8tdx78tg" path="res://game/characters/player.tscn" id="2_r0ht6"]
@@ -10,6 +10,7 @@
[ext_resource type="PackedScene" uid="uid://dpvsvsd8pcjqn" path="res://game/player_killer.tscn" id="7_8ydah"]
[ext_resource type="PackedScene" uid="uid://dsts4y32slhnc" path="res://game/menu/pause_menu.tscn" id="7_l0xih"]
[ext_resource type="PackedScene" uid="uid://84lhc3yn8vub" path="res://game/menu/game_over_menu.tscn" id="8_b7vts"]
[ext_resource type="PackedScene" uid="uid://bareycqj42c6e" path="res://game/menu/completion_menu.tscn" id="11_3fw0b"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_pi5fd"]
texture = ExtResource("3_fnnmn")
@@ -391,6 +392,8 @@ physics_layer_0/collision_layer = 16
physics_layer_0/collision_mask = 16
sources/0 = SubResource("TileSetAtlasSource_3fw0b")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_3fw0b"]
[node name="AbstractLevel" type="Node2D"]
script = ExtResource("1_o2mui")
@@ -433,4 +436,16 @@ visible = false
unique_name_in_owner = true
visible = false
[node name="CompletionMenu" parent="CanvasLayer" instance=ExtResource("11_3fw0b")]
unique_name_in_owner = true
visible = false
[node name="LevelEnd" type="Area2D" parent="."]
collision_layer = 0
collision_mask = 136
[node name="CollisionShape2D" type="CollisionShape2D" parent="LevelEnd"]
shape = SubResource("RectangleShape2D_3fw0b")
[connection signal="dead" from="Player" to="." method="_on_player_dead"]
[connection signal="body_entered" from="LevelEnd" to="." method="_on_level_end_entered"]
+3
View File
@@ -92,3 +92,6 @@ tile_map_data = PackedByteArray("AAAwAP3/AAAAAAEAAAAwAPz/AAAAAAEAAAAwAPv/AAAAAAE
[node name="Traps" parent="Tiles" index="3"]
tile_map_data = PackedByteArray("AAA9AAcAAAAAAAAAAAA9AAgAAAAAAAEAAAA9AAkAAAAAAAEAAAA=")
[node name="LevelEnd" parent="." index="7"]
position = Vector2(1334, 103)
+29
View File
@@ -0,0 +1,29 @@
class_name CompletionMenu
extends Control
@export var next_level : PackedScene
@onready var next_level_button : Button = $%NextLevelButton
@onready var focus_timer : Timer = $FocusTimer
func _on_next_level_button_pressed() -> void:
get_tree().paused = false
if next_level != null:
get_tree().change_scene_to_packed(next_level)
else:
get_tree().change_scene_to_file("res://game/menu/main_menu.tscn")
func _on_visibility_changed() -> void:
if visible:
if focus_timer != null:
focus_timer.start()
func _on_focus_timer_timeout() -> void:
if next_level_button != null:
next_level_button.grab_focus()
+1
View File
@@ -0,0 +1 @@
uid://dj6porbpmqbd1
+56
View File
@@ -0,0 +1,56 @@
[gd_scene load_steps=4 format=3 uid="uid://bareycqj42c6e"]
[ext_resource type="Theme" uid="uid://bh56my8b2htnr" path="res://themes/menu.tres" id="1_0iv8v"]
[ext_resource type="Theme" uid="uid://dosa0gsbrbnpe" path="res://themes/splash.tres" id="2_0iv8v"]
[ext_resource type="Script" uid="uid://dj6porbpmqbd1" path="res://game/menu/completion_menu.gd" id="2_kge0e"]
[node name="CompletionMenu" type="Control"]
process_mode = 2
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_0iv8v")
script = ExtResource("2_kge0e")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 1)
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
theme = ExtResource("2_0iv8v")
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Completed!"
horizontal_alignment = 1
[node name="NextLevelButton" type="Button" parent="MarginContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Next level"
[node name="FocusTimer" type="Timer" parent="."]
one_shot = true
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/NextLevelButton" to="." method="_on_next_level_button_pressed"]
[connection signal="timeout" from="FocusTimer" to="." method="_on_focus_timer_timeout"]
+4 -3
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=3 uid="uid://84lhc3yn8vub"]
[gd_scene load_steps=4 format=3 uid="uid://84lhc3yn8vub"]
[ext_resource type="Theme" uid="uid://bh56my8b2htnr" path="res://themes/menu.tres" id="1_htxfh"]
[ext_resource type="Script" uid="uid://bb257l7unttky" path="res://game/menu/game_over_menu.gd" id="2_m1ad0"]
[ext_resource type="Theme" uid="uid://dosa0gsbrbnpe" path="res://themes/splash.tres" id="3_kodbj"]
[node name="GameOverMenu" type="Control"]
process_mode = 2
@@ -35,11 +36,11 @@ grow_vertical = 2
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
theme_override_constants/separation = 64
theme = ExtResource("3_kodbj")
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Game over"
text = "Game over!"
horizontal_alignment = 1
[node name="MainMenuButton" type="Button" parent="MarginContainer/VBoxContainer"]
+4
View File
@@ -0,0 +1,4 @@
[gd_resource type="Theme" format=3 uid="uid://dosa0gsbrbnpe"]
[resource]
VBoxContainer/constants/separation = 64