Added level completion screen
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
@@ -0,0 +1 @@
|
||||
uid://dj6porbpmqbd1
|
||||
@@ -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"]
|
||||
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user