jeu/HUD: début de HUD pour les prouts

Maintenant 3 geauges de prout sont présentes et permettent au joueur de
savoir si il a du pet de dispo ou pas. Le joueur peut accumuler jusqu'à
trois prouts. Le temps de recharge est de 3 secondes par prout. C'est
peut être trop long.

Il faudra probablement bouger du code que j'ai mis dans game au dans le
code de niveau. Mais bon j'y réfléchirai le prochain coup.
This commit is contained in:
Thomas Lavocat
2023-05-10 23:03:14 +02:00
parent 3c6d18f746
commit 824295f63c
10 changed files with 248 additions and 20 deletions

35
HUD/fart_gauge.gd Normal file
View File

@@ -0,0 +1,35 @@
class_name FartGauge extends Node2D
@onready var animationPlayer := $AnimationPlayer as AnimationPlayer
signal reload_done()
signal dash_done()
var loading = false
var loaded = false
func load_cheese() -> bool:
if not loading and not loaded:
animationPlayer.play("reload")
loading = true
return true
return false
func dash_fart() -> bool:
if loaded:
animationPlayer.play("DASH")
return loaded
func reset():
animationPlayer.play("RESET")
loaded = false
func _on_animation_player_animation_finished(anim_name: StringName) -> void:
if anim_name == "reload":
loading = false
loaded = true
reload_done.emit()
if anim_name == "DASH":
loaded = false
dash_done.emit()

115
HUD/fart_gauge.tscn Normal file
View File

@@ -0,0 +1,115 @@
[gd_scene load_steps=7 format=3 uid="uid://dsgt6b1bqi6ui"]
[ext_resource type="Script" path="res://HUD/fart_gauge.gd" id="1_jculu"]
[ext_resource type="Texture2D" uid="uid://c8r4ylb5ygl5c" path="res://sprite/jauge-de-prout.png" id="1_rt22i"]
[sub_resource type="Animation" id="Animation_nsc8d"]
resource_name = "DASH"
length = 0.25
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Full:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(0, 0), Vector2(0, -72)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Full:region_rect")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Rect2(16, 0, 16, 144), Rect2(16, 0, 16, 0)]
}
[sub_resource type="Animation" id="Animation_8hnm2"]
resource_name = "RESET"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Full:region_rect")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Rect2(16, 0, 16, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Full:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -72)]
}
[sub_resource type="Animation" id="Animation_eh7ry"]
resource_name = "reload"
length = 3.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Full:region_rect")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Rect2(16, 0, 16, 0), Rect2(16, 0, 16, 144)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Full:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(0, -70), Vector2(0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hfkd0"]
_data = {
"DASH": SubResource("Animation_nsc8d"),
"RESET": SubResource("Animation_8hnm2"),
"reload": SubResource("Animation_eh7ry")
}
[node name="FartGauge" type="Node2D"]
script = ExtResource("1_jculu")
[node name="Empty" type="Sprite2D" parent="."]
texture = ExtResource("1_rt22i")
region_enabled = true
region_rect = Rect2(0, 0, 16, 144)
[node name="Full" type="Sprite2D" parent="."]
position = Vector2(0, -72)
texture = ExtResource("1_rt22i")
region_enabled = true
region_rect = Rect2(16, 0, 16, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_hfkd0")
}
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"]

36
HUD/hud.gd Normal file
View File

@@ -0,0 +1,36 @@
class_name HUD extends CanvasLayer
@onready var gauge1 := $FartGauge1 as FartGauge
@onready var gauge2 := $FartGauge2 as FartGauge
@onready var gauge3 := $FartGauge3 as FartGauge
signal fart_reloaded()
var cheese_number = 0
var gauges = []
func _ready() -> void:
gauge1.connect("reload_done", cheese_loaded)
gauge2.connect("reload_done", cheese_loaded)
gauge3.connect("reload_done", cheese_loaded)
gauges = [gauge1, gauge2, gauge3]
func reset():
cheese_number = 0
for gauge in gauges:
gauge.reset()
func load_cheese():
for gauge in gauges:
if gauge.load_cheese():
return
func dash_fart():
for x in gauges.size():
var gauge = gauges[-x-1]
if gauge.dash_fart():
return
func cheese_loaded():
fart_reloaded.emit()

20
HUD/hud.tscn Normal file
View File

@@ -0,0 +1,20 @@
[gd_scene load_steps=2 format=3 uid="uid://dvlb4thqhqke"]
[ext_resource type="PackedScene" uid="uid://dsgt6b1bqi6ui" path="res://HUD/fart_gauge.tscn" id="1_4e2i3"]
[node name="HUD" type="CanvasLayer"]
[node name="FartGauge3" parent="." instance=ExtResource("1_4e2i3")]
position = Vector2(242, 6)
rotation = -1.5708
scale = Vector2(0.7, 0.7)
[node name="FartGauge2" parent="." instance=ExtResource("1_4e2i3")]
position = Vector2(147, 6)
rotation = -1.5708
scale = Vector2(0.7, 0.7)
[node name="FartGauge1" parent="." instance=ExtResource("1_4e2i3")]
position = Vector2(51, 6)
rotation = -1.5708
scale = Vector2(0.7, 0.7)