Cet item supprime les vents de la princesse en lui permettant d'immédiatement digérer le lactose. Ce qui a pour effet de couper son dash en cours et de lui vider les intestincs. J'ai rajouté plein d'éléments dans le niveau numéro deux pour tester ça. Addition supplémentaires: - le fromage peut être de différentes couleurs avec pour conséquences différentes intensités. Ce qui a pour effet de recharger plus ou moins vite la jauge de pét. - J'ai rajouté une passerelle à sens unique qui permet de créer un petit point de non retour, j'aimerai bien aussi l'avoir à la verticale, mais pour le moment, je n'y arrive pas.
49 lines
1.5 KiB
GDScript
49 lines
1.5 KiB
GDScript
class_name Cheese extends Area2D
|
|
|
|
|
|
@onready var animation_player := $AnimationPlayer as AnimationPlayer
|
|
@onready var sprite := $Sprite2D as Sprite2D
|
|
@onready var timer := $Timer as Timer
|
|
@export var CHEESE_RESPAWN_TIME : int = 1
|
|
|
|
enum KIND {BRIE, BREBIS, EMMENTAL, BLEU}
|
|
@export var CHEESE_KIND : KIND = KIND.BRIE
|
|
var cheese_strength : float = 1
|
|
|
|
var picked :bool = false
|
|
|
|
func _ready() -> void:
|
|
if CHEESE_KIND == KIND.BREBIS:
|
|
cheese_strength = 2
|
|
sprite.set_region_rect(Rect2(Vector2(48, 16), Vector2(16, 16)))
|
|
elif CHEESE_KIND == KIND.EMMENTAL:
|
|
cheese_strength = 3
|
|
sprite.set_region_rect(Rect2(Vector2(16, 0), Vector2(16, 16)))
|
|
elif CHEESE_KIND == KIND.BLEU:
|
|
cheese_strength = 10
|
|
sprite.set_region_rect(Rect2(Vector2(48, 0), Vector2(16, 16)))
|
|
else:
|
|
cheese_strength = 1
|
|
sprite.set_region_rect(Rect2(Vector2(32, 0), Vector2(16, 16)))
|
|
animation_player.speed_scale = cheese_strength /2
|
|
|
|
|
|
|
|
func _on_body_entered(body: Node2D) -> void:
|
|
if not picked:
|
|
animation_player.play(&"picked")
|
|
(body as Princess).you_got_cheese(cheese_strength)
|
|
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
|