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:
48
items/cheese.gd
Normal file
48
items/cheese.gd
Normal 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
|
||||
@@ -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")
|
||||
@@ -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
148
items/lactase.tscn
Normal 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"]
|
||||
Reference in New Issue
Block a user