lactase: rajout d'un nouvel item, la lactase

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.
This commit is contained in:
Thomas Lavocat
2023-05-12 14:11:34 +02:00
parent 66c95c7380
commit cf1481047c
14 changed files with 1194 additions and 226 deletions

48
items/cheese.gd Normal file
View File

@@ -0,0 +1,48 @@
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

View File

@@ -1,11 +1,11 @@
[gd_scene load_steps=9 format=3 uid="uid://bfff6uggijk4k"]
[gd_scene load_steps=9 format=3 uid="uid://lble7xchwb6e"]
[ext_resource type="Script" path="res://items/normal_cheese.gd" id="1_2l3x1"]
[ext_resource type="Texture2D" uid="uid://blh8aqj3ojadf" path="res://sprite/items.png" id="1_rx0yq"]
[ext_resource type="Script" path="res://items/cheese.gd" id="1_w15aa"]
[ext_resource type="Texture2D" uid="uid://blh8aqj3ojadf" path="res://sprite/items.png" id="2_t0wi0"]
[sub_resource type="AtlasTexture" id="AtlasTexture_7rdb1"]
atlas = ExtResource("1_rx0yq")
region = Rect2(16, 0, 16, 16)
atlas = ExtResource("2_t0wi0")
region = Rect2(0, 0, 64, 64)
[sub_resource type="CircleShape2D" id="CircleShape2D_xry4i"]
radius = 4.0
@@ -124,13 +124,15 @@ _data = {
"picked": SubResource("Animation_jemsl")
}
[node name="Fromage normal" type="Area2D"]
[node name="Fromage" type="Area2D"]
collision_layer = 64
script = ExtResource("1_2l3x1")
script = ExtResource("1_w15aa")
[node name="Sprite2D" type="Sprite2D" parent="."]
scale = Vector2(0.7, 0.7)
texture = SubResource("AtlasTexture_7rdb1")
region_enabled = true
region_rect = Rect2(16, 0, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_xry4i")

View File

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

148
items/lactase.tscn Normal file
View File

@@ -0,0 +1,148 @@
[gd_scene load_steps=9 format=3 uid="uid://b1c6ox0yndxae"]
[ext_resource type="Script" path="res://items/lactase.gd" id="1_74h8u"]
[ext_resource type="Texture2D" uid="uid://blh8aqj3ojadf" path="res://sprite/items.png" id="2_otpeg"]
[sub_resource type="AtlasTexture" id="AtlasTexture_r1hm6"]
atlas = ExtResource("2_otpeg")
region = Rect2(48.8807, 37.6091, 14.0905, 7.63786)
[sub_resource type="CircleShape2D" id="CircleShape2D_xry4i"]
radius = 4.0
[sub_resource type="Animation" id="Animation_r46qo"]
resource_name = "RESET"
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = false
tracks/1/path = NodePath("Sprite2D:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 0,
"values": []
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_fpj7j"]
resource_name = "lactase"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.1, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"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"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.1, 1),
"transitions": PackedFloat32Array(1, 2.2974),
"update": 0,
"values": [Vector2(0, 0), Vector2(0, -50)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = false
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 0,
"values": []
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.1, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_4iwa0"]
_data = {
"RESET": SubResource("Animation_r46qo"),
"lactase": SubResource("Animation_fpj7j"),
"picked": SubResource("Animation_jemsl")
}
[node name="lactase" type="Area2D"]
collision_layer = 64
script = ExtResource("1_74h8u")
[node name="Sprite2D" type="Sprite2D" parent="."]
scale = Vector2(0.7, 0.7)
texture = SubResource("AtlasTexture_r1hm6")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_xry4i")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "lactase"
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"]