item/fromage: reinitialisation timé

Un timer redéclenche l'apparition du fromage au bout d'un certain temps.
Il suffit de paramètrer la variable CHEESE_RESPAWN_TIME pour que ça soit
customisable à l'envie.
This commit is contained in:
Thomas Lavocat
2023-04-30 18:53:58 +02:00
parent 66383d3659
commit 273ca490c0
3 changed files with 42 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ atlas = ExtResource("1_rx0yq")
region = Rect2(16, 0, 16, 16)
[sub_resource type="CircleShape2D" id="CircleShape2D_xry4i"]
radius = 6.0
radius = 4.0
[sub_resource type="Animation" id="Animation_r46qo"]
resource_name = "RESET"
@@ -65,6 +65,18 @@ tracks/0/keys = {
"update": 0,
"values": [Vector2(0, 0), Vector2(0, -2), Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.1, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_jemsl"]
resource_name = "picked"
@@ -117,6 +129,7 @@ collision_layer = 64
script = ExtResource("1_2l3x1")
[node name="Sprite2D" type="Sprite2D" parent="."]
scale = Vector2(0.7, 0.7)
texture = SubResource("AtlasTexture_7rdb1")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@@ -128,4 +141,8 @@ libraries = {
"": SubResource("AnimationLibrary_4iwa0")
}
[node name="Timer" type="Timer" parent="."]
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@@ -2,7 +2,24 @@ class_name NormalCheese extends Area2D
@onready var animation_player := $AnimationPlayer as AnimationPlayer
@onready var timer := $Timer as Timer
@export var CHEESE_RESPAWN_TIME : int = 1
var picked :bool = false
func _on_body_entered(body: Node2D) -> void:
animation_player.play(&"picked")
(body as Princess).cheese_collected.emit()
if not picked:
animation_player.play(&"picked")
(body as Princess).cheese_collected.emit()
picked = true
# Le fromage peut être à utilisation unique
if CHEESE_RESPAWN_TIME > 0:
timer.start(CHEESE_RESPAWN_TIME)
func _on_timer_timeout() -> void:
timer.stop()
animation_player.play(&"RESET")
func _on_animation_player_animation_finished(anim_name: StringName) -> void:
if anim_name == "RESET":
animation_player.play(&"cheese")
picked = false