Added game over screen

This commit is contained in:
2025-11-27 17:36:34 +03:00
parent 0e2d303298
commit 93b1bca915
11 changed files with 113 additions and 25 deletions
@@ -21,6 +21,7 @@ texture = ExtResource("3_uf2n1")
polygon = PackedVector2Array(-23, -10, -17, -14, -3, -15, 21, -13, 22, -12, 22, 12, 21, 13, -3, 15, -17, 14, -23, 10)
[node name="Health" parent="." index="2"]
max_shield = 250
max_hull = 1000
[node name="HeathBar" parent="." index="3"]
@@ -23,6 +23,7 @@ func _ready() -> void:
func _physics_process(delta: float) -> void:
_apply_homing_guidance(delta)
super._physics_process(delta)
_update_sprite(_velocity)
func _acquire_target() -> void:
@@ -41,8 +42,6 @@ func _apply_homing_guidance(delta: float) -> void:
var angle_change := clampf(angle_diff, -max_angle_change, max_angle_change)
_velocity = _velocity.rotated(angle_change)
_update_sprite(_velocity)
func _update_sprite(velocity: Vector2) -> void:
if velocity.is_zero_approx():
@@ -77,7 +77,7 @@ turbulence_noise_speed = Vector3(0.1, 0.1, 0.1)
collision_layer = 0
collision_mask = 0
script = ExtResource("2_6hdsf")
rotation_speed = 90
rotation_speed = 5
speed = 300
[node name="GPUParticles2D" type="GPUParticles2D" parent="." index="0"]
@@ -11,7 +11,7 @@
[sub_resource type="Resource" id="Resource_1121u"]
resource_local_to_scene = true
script = ExtResource("3_l65ib")
value = 45
value = 30
metadata/_custom_type_script = "uid://c27v705giygv4"
[sub_resource type="CircleShape2D" id="CircleShape2D_l65ib"]
+7 -1
View File
@@ -2,10 +2,12 @@ extends Node
@onready var pause_screen : Control = $PauseScreen
@onready var game_over_screen : Control = $GameOverScreen
func _ready() -> void:
pause_screen.hide()
game_over_screen.hide()
func _input(event: InputEvent) -> void:
@@ -18,6 +20,10 @@ func _on_pause_screen_continue_game() -> void:
pause_screen.hide()
func _on_pause_screen_show_main_menu() -> void:
func _on_show_main_menu() -> void:
get_tree().paused = false
get_tree().change_scene_to_file("res://menu/title_screen.tscn")
func _on_passage_player_died() -> void:
game_over_screen.show()
+21 -5
View File
@@ -1,16 +1,32 @@
[gd_scene load_steps=4 format=3 uid="uid://dl7m4rqyj8mck"]
[gd_scene load_steps=5 format=3 uid="uid://dl7m4rqyj8mck"]
[ext_resource type="Script" uid="uid://1wfu4iuddo25" path="res://game/game.gd" id="1_l1rk1"]
[ext_resource type="PackedScene" uid="uid://d34nh3lc1gpb" path="res://menu/pause_screen.tscn" id="2_h7iqs"]
[ext_resource type="PackedScene" uid="uid://dgc0087kvarx6" path="res://game/passage.tscn" id="3_4fuuu"]
[ext_resource type="PackedScene" uid="uid://duxm8n62j2qt6" path="res://menu/game_over_screen.tscn" id="4_4fuuu"]
[node name="Game" type="Node2D"]
script = ExtResource("1_l1rk1")
[node name="PauseScreen" parent="." instance=ExtResource("2_h7iqs")]
process_mode = 2
[node name="Passage" parent="." instance=ExtResource("3_4fuuu")]
[node name="PauseScreen" parent="." instance=ExtResource("2_h7iqs")]
process_mode = 2
z_index = 100
[node name="GameOverScreen" parent="." instance=ExtResource("4_4fuuu")]
z_index = 100
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 320.0
offset_top = 172.0
offset_right = 320.0
offset_bottom = 172.0
[connection signal="player_died" from="Passage" to="." method="_on_passage_player_died"]
[connection signal="continue_game" from="PauseScreen" to="." method="_on_pause_screen_continue_game"]
[connection signal="show_main_menu" from="PauseScreen" to="." method="_on_pause_screen_show_main_menu"]
[connection signal="show_main_menu" from="PauseScreen" to="." method="_on_show_main_menu"]
[connection signal="show_main_menu" from="GameOverScreen" to="." method="_on_show_main_menu"]
+8 -13
View File
@@ -2,6 +2,9 @@ class_name Passage
extends Node2D
signal player_died
const PLAYER := preload("res://game/entities/ships/player/player_ship.tscn")
@@ -9,21 +12,13 @@ const PLAYER := preload("res://game/entities/ships/player/player_ship.tscn")
@onready var enemy_timer : Timer = $EnemyTimer
func _ready() -> void:
_create_player()
func _create_player() -> void:
var player : PlayerShip = PLAYER.instantiate()
player.position = Vector2(100, 100)
player.destroyed.connect(_create_player, CONNECT_DEFERRED)
add_child(player)
func _on_enemy_timer_timeout() -> void:
var enemies := get_tree().get_nodes_in_group("enemies")
if enemies.size() < 25:
enemy_swamp_controller.create_enemy()
enemy_timer.start(randi_range(3, 9))
enemy_timer.start(randi_range(1, 3))
func _on_player_ship_destroyed() -> void:
player_died.emit()
+7 -2
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://dgc0087kvarx6"]
[gd_scene load_steps=5 format=3 uid="uid://dgc0087kvarx6"]
[ext_resource type="Script" uid="uid://c6gpm3edyr4nu" path="res://game/passage.gd" id="1_ltkyg"]
[ext_resource type="PackedScene" uid="uid://cpn5x0ijgl7ei" path="res://game/controllers/enemy_swamp_controller.tscn" id="2_72vqi"]
[ext_resource type="PackedScene" uid="uid://br074cqcnul3d" path="res://game/entities/ships/player/player_ship.tscn" id="3_r3x05"]
[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_ltkyg"]
@@ -34,12 +35,16 @@ rotation = -1.5707964
shape = SubResource("WorldBoundaryShape2D_ltkyg")
one_way_collision = true
[node name="PlayerShip" parent="." instance=ExtResource("3_r3x05")]
position = Vector2(100, 100)
[node name="EnemySwampController" parent="." node_paths=PackedStringArray("passage") instance=ExtResource("2_72vqi")]
passage = NodePath("..")
[node name="EnemyTimer" type="Timer" parent="."]
wait_time = 10.0
wait_time = 3.0
one_shot = true
autostart = true
[connection signal="destroyed" from="PlayerShip" to="." method="_on_player_ship_destroyed"]
[connection signal="timeout" from="EnemyTimer" to="." method="_on_enemy_timer_timeout"]
+21
View File
@@ -0,0 +1,21 @@
extends Control
signal show_main_menu
@onready var main_menu_button : Button = $%MainMenuButton
@onready var button_focus_timer : Timer = $ButtonFocusTimer
func _on_timer_timeout() -> void:
main_menu_button.grab_focus()
func _on_main_menu_button_pressed() -> void:
show_main_menu.emit()
func _on_visibility_changed() -> void:
if visible and button_focus_timer:
button_focus_timer.start()
+1
View File
@@ -0,0 +1 @@
uid://bkj8s7588e1ho
+44
View File
@@ -0,0 +1,44 @@
[gd_scene load_steps=3 format=3 uid="uid://duxm8n62j2qt6"]
[ext_resource type="Script" uid="uid://bkj8s7588e1ho" path="res://menu/game_over_screen.gd" id="1_rkkr6"]
[ext_resource type="Theme" uid="uid://dtnd3tqllufey" path="res://images/menu_button.tres" id="2_uh3ar"]
[node name="GameOverScreen" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_rkkr6")
[node name="CenterContainer" type="CenterContainer" 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="CenterContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="CenterContainer/VBoxContainer"]
layout_mode = 2
text = "Game Over"
horizontal_alignment = 1
[node name="MainMenuButton" type="Button" parent="CenterContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
theme = ExtResource("2_uh3ar")
text = "Main Menu"
[node name="ButtonFocusTimer" type="Timer" parent="."]
wait_time = 3.0
one_shot = true
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
[connection signal="pressed" from="CenterContainer/VBoxContainer/MainMenuButton" to="." method="_on_main_menu_button_pressed"]
[connection signal="timeout" from="ButtonFocusTimer" to="." method="_on_timer_timeout"]