Game over screen

This commit is contained in:
Florian GOLESTIN 2026-01-17 18:36:34 +01:00
parent 9028ec47cc
commit 7688cdabd2
13 changed files with 1411 additions and 8 deletions

View File

@ -2,7 +2,10 @@ extends Area2D
@export var speed = 400
@export var score : int = 0
@export var bullet_scene: PackedScene
@export var bullet_scene: PackedScene
@export var life_max : float = 30
@onready var life : float = life_max
var screen_size
@ -30,12 +33,20 @@ func _process(delta: float) -> void:
#position = position.clamp(Vector2.ZERO, screen_size)
func _on_shoot_timer_timeout():
_shoot(Vector2(0, 80))
_shoot(Vector2(0, -80))
_shoot(Vector2(0, 40))
_shoot(Vector2(0, -40))
func _shoot(socket : Vector2):
var bullet = bullet_scene.instantiate()
bullet.position = position + socket.rotated(self.rotation)
bullet.rotation = self.rotation + PI/2 * sign(socket.y)
bullet.instigator = self
get_parent().add_child(bullet)
func take_damage(damage : float):
life -= damage
if life <= 0:
#get_tree().reload_current_scene()
get_tree().paused = true
$GameOverScreen.show()

View File

@ -1,9 +1,10 @@
[gd_scene load_steps=7 format=3 uid="uid://ifus76ia8xws"]
[gd_scene load_steps=8 format=3 uid="uid://ifus76ia8xws"]
[ext_resource type="Texture2D" uid="uid://83sv1yu3pkya" path="res://Characters/Ships/player_ship.png" id="1_5mj4t"]
[ext_resource type="Script" uid="uid://doegfk88vnwo1" path="res://Characters/player.gd" id="1_eovys"]
[ext_resource type="PackedScene" uid="uid://ngrscx1l0dn5" path="res://GPE/CannonBall/cannon_ball.tscn" id="2_65n15"]
[ext_resource type="PackedScene" uid="uid://c2pruida0t5o0" path="res://Player/hud.tscn" id="3_vb825"]
[ext_resource type="PackedScene" uid="uid://bu4cvy8wdnt54" path="res://Player/game_over_screen.tscn" id="5_l48on"]
[sub_resource type="SpriteFrames" id="SpriteFrames_eovys"]
animations = [{
@ -33,7 +34,7 @@ sprite_frames = SubResource("SpriteFrames_eovys")
rotation = -1.5707964
shape = SubResource("CapsuleShape2D_vb825")
[node name="CanvasLayer" parent="." instance=ExtResource("3_vb825")]
[node name="HUD" parent="." instance=ExtResource("3_vb825")]
[node name="Camera2D" type="Camera2D" parent="."]
drag_horizontal_enabled = true
@ -41,3 +42,5 @@ drag_vertical_enabled = true
[node name="ShootTimer" type="Timer" parent="."]
autostart = true
[node name="GameOverScreen" parent="." instance=ExtResource("5_l48on")]

View File

@ -5,15 +5,22 @@ extends Area2D
@export var speed: float = 200.0
@export var damage: int = 10
var instigator
func _ready():
# Déplace la balle dans la direction de sa rotation
#var velocity = Vector2(speed, 0).rotated(rotation)
connect("body_entered", _on_body_entered)
connect("area_entered", _on_body_entered)
$LifetimeTimer.timeout.connect(_on_lifetime_expired)
func _physics_process(delta: float):
position += Vector2(speed, 0).rotated(rotation) * delta
func _on_body_entered(body):
if body.has_method("take_damage"):
if body.has_method("take_damage") and instigator != body:
body.take_damage(damage)
queue_free()
func _on_lifetime_expired():
queue_free()

View File

@ -14,3 +14,7 @@ shape = SubResource("CircleShape2D_u2lho")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("1_f08vj")
[node name="LifetimeTimer" type="Timer" parent="."]
wait_time = 3.0
autostart = true

View File

@ -0,0 +1,13 @@
extends CanvasLayer
@onready var RestartButton = $ColorRect/VBoxContainer/RestartButton
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
RestartButton.pressed.connect(_on_restart_pressed)
hide()
func _on_restart_pressed():
get_tree().paused = false
get_tree().reload_current_scene()

View File

@ -0,0 +1 @@
uid://2336s7ck60n5

View File

@ -0,0 +1,61 @@
[gd_scene load_steps=4 format=3 uid="uid://bu4cvy8wdnt54"]
[ext_resource type="Script" uid="uid://2336s7ck60n5" path="res://Player/game_over_screen.gd" id="1_bltct"]
[ext_resource type="Theme" uid="uid://ctsajyu6uieal" path="res://Player/widgets/game_theme.tres" id="1_pm5wk"]
[sub_resource type="LabelSettings" id="LabelSettings_bltct"]
font_size = 32
outline_size = 3
outline_color = Color(0.511324, 0.2294738, 0, 1)
shadow_size = 6
shadow_color = Color(0, 0, 0, 1)
[node name="GameOverScreen" type="CanvasLayer"]
process_mode = 2
script = ExtResource("1_bltct")
[node name="ColorRect" type="ColorRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 4.0
offset_top = -4.0
offset_right = 4.0
offset_bottom = -4.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.3137255)
[node name="VBoxContainer" type="VBoxContainer" parent="ColorRect"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -46.0
offset_top = -20.0
offset_right = 58.0
offset_bottom = 10.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="ColorRect/VBoxContainer"]
layout_mode = 2
text = "GAME OVER"
label_settings = SubResource("LabelSettings_bltct")
[node name="HSeparator" type="HSeparator" parent="ColorRect/VBoxContainer"]
layout_mode = 2
[node name="RestartButton" type="Button" parent="ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("1_pm5wk")
text = "Restart
"
[node name="MainMenuButton" type="Button" parent="ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("1_pm5wk")
text = "Main Menu
"

View File

@ -11,8 +11,12 @@ func _process(_delta: float) -> void:
#var player = get_parent().get_node("player")
var player = get_parent()
update_score(player.score)
update_life(player.life / player.life_max * 100.0)
func update_score(score: int) -> void:
$ScoreLabel.text = "Score: " + str(score)
func update_life(life_percentage : float):
$LifeProgressBar.value = life_percentage

View File

@ -2,7 +2,7 @@
[ext_resource type="Script" uid="uid://cmkaxwj67x6o4" path="res://Player/hud.gd" id="1_ns4kc"]
[node name="CanvasLayer" type="CanvasLayer"]
[node name="Hud" type="CanvasLayer"]
script = ExtResource("1_ns4kc")
[node name="ScoreLabel" type="Label" parent="."]
@ -11,3 +11,12 @@ anchor_right = 1.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Score:"
[node name="LifeProgressBar" type="ProgressBar" parent="."]
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -27.0
offset_right = 235.0
grow_vertical = 0
rounded = true

View File

@ -0,0 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://rmwiww4alman"]
[ext_resource type="Texture2D" uid="uid://5dvacveeuaef" path="res://Player/widgets/spritesheet-double.png" id="1_lby2n"]
[resource]
atlas = ExtResource("1_lby2n")
region = Rect2(768.0559, -0.000233531, 128.0304, 128.29752)

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5dvacveeuaef"
path="res://.godot/imported/spritesheet-double.png-e59a887731eae35a20be130d358e60d4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Player/widgets/spritesheet-double.png"
dest_files=["res://.godot/imported/spritesheet-double.png-e59a887731eae35a20be130d358e60d4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1