divers changements pour la sortie du second proto

* ajout du panneau solaire #54
* ajout d'un tutoriel #53
* equilibrage du jeu #73
* ajout d'un son pour l'annonce
This commit is contained in:
2025-09-26 16:56:35 +02:00
parent 6d0100d703
commit 099f8bb1be
56 changed files with 1129 additions and 87 deletions

View File

@@ -1,10 +0,0 @@
[gd_resource type="Resource" script_class="MachineType" load_steps=3 format=3 uid="uid://cv2tf0tydqj5v"]
[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost.tscn" id="1_8ajib"]
[ext_resource type="Script" path="res://entities/interactables/machines/scripts/machine_info.gd" id="1_vktn1"]
[resource]
script = ExtResource("1_vktn1")
name = "Compost"
scene = ExtResource("1_8ajib")
description = "Can generate temporary energy in exchange of seeds."

View File

@@ -0,0 +1,10 @@
[gd_resource type="Resource" script_class="MachineType" load_steps=3 format=3 uid="uid://cv2tf0tydqj5v"]
[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost_types/energy_compost.tscn" id="1_sy5wj"]
[ext_resource type="Script" uid="uid://bhncww816fjsb" path="res://entities/interactables/machines/scripts/machine_info.gd" id="2_m8wft"]
[resource]
script = ExtResource("2_m8wft")
name = "Energy Compost"
scene = ExtResource("1_sy5wj")
description = "Can generate temporary energy in exchange of seeds."

View File

@@ -1,8 +1,8 @@
[gd_scene load_steps=11 format=3 uid="uid://bkwh1ntvgkkrt"]
[ext_resource type="Script" uid="uid://dw6jgsasb2fe1" path="res://entities/interactables/machines/compost/scripts/compost.gd" id="1_c0pig"]
[ext_resource type="Texture2D" uid="uid://f2rte5jc0psp" path="res://entities/interactables/machines/compost/assets/sprites/compost.svg" id="2_r6435"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="3_akkx7"]
[ext_resource type="Script" uid="uid://bw2ckthka71y8" path="res://entities/interactables/machines/compost/scripts/energy_compost.gd" id="1_2s0lp"]
[ext_resource type="Texture2D" uid="uid://f2rte5jc0psp" path="res://entities/interactables/machines/compost/assets/sprites/compost.svg" id="2_pi0jt"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="3_85qj7"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_akkx7"]
size = Vector2(66, 84)
@@ -26,7 +26,7 @@ length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Compost:scale")
tracks/0/path = NodePath("Sprite:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
@@ -38,7 +38,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Compost:position")
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@@ -54,7 +54,7 @@ length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Compost:position")
tracks/0/path = NodePath("Sprite:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
@@ -66,7 +66,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Compost:scale")
tracks/1/path = NodePath("Sprite:scale")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
@@ -82,7 +82,7 @@ length = 0.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Compost:scale")
tracks/0/path = NodePath("Sprite:scale")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
@@ -99,18 +99,19 @@ _data = {
&"fill": SubResource("Animation_etofw")
}
[node name="Compost" type="Area2D"]
script = ExtResource("1_c0pig")
[node name="EnergyCompost" type="Area2D"]
script = ExtResource("1_2s0lp")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_akkx7")
[node name="Compost" type="Sprite2D" parent="."]
[node name="Sprite" type="Sprite2D" parent="."]
unique_name_in_owner = true
self_modulate = Color(0.729698, 0.588265, 0.105405, 1)
scale = Vector2(0.291262, 0.291262)
texture = ExtResource("2_r6435")
texture = ExtResource("2_pi0jt")
[node name="ProgressBar" type="ProgressBar" parent="Compost"]
[node name="ProgressBar" type="ProgressBar" parent="Sprite"]
unique_name_in_owner = true
offset_left = -62.0
offset_top = -7.0
@@ -121,11 +122,11 @@ theme_override_styles/fill = SubResource("StyleBoxFlat_3ao1n")
fill_mode = 3
show_percentage = false
[node name="Bolt" type="Sprite2D" parent="Compost"]
[node name="Bolt" type="Sprite2D" parent="Sprite"]
z_index = 1
position = Vector2(0, 54.9334)
scale = Vector2(2.00278, 2.00278)
texture = ExtResource("3_akkx7")
texture = ExtResource("3_85qj7")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {

View File

@@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="MachineType" load_steps=3 format=3 uid="uid://bbaiexmnroxos"]
[ext_resource type="PackedScene" uid="uid://b13debm055r3t" path="res://entities/interactables/machines/compost/compost_types/seed_compost.tscn" id="1_vpkcm"]
[ext_resource type="Script" uid="uid://bhncww816fjsb" path="res://entities/interactables/machines/scripts/machine_info.gd" id="2_tfoq0"]
[resource]
script = ExtResource("2_tfoq0")
name = "Seed Compost"
scene = ExtResource("1_vpkcm")
description = "Give random seed if is filled with seeds."
metadata/_custom_type_script = "uid://bhncww816fjsb"

View File

@@ -0,0 +1,134 @@
[gd_scene load_steps=11 format=3 uid="uid://b13debm055r3t"]
[ext_resource type="Script" uid="uid://d0yt8pd41j2os" path="res://entities/interactables/machines/compost/scripts/seed_compost.gd" id="1_b8mmk"]
[ext_resource type="Texture2D" uid="uid://f2rte5jc0psp" path="res://entities/interactables/machines/compost/assets/sprites/compost.svg" id="2_s8eov"]
[ext_resource type="Texture2D" uid="uid://b0wy3dbpxbnt7" path="res://common/icons/seedling.svg" id="3_s8eov"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_akkx7"]
size = Vector2(66, 84)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_etofw"]
bg_color = Color(0.260098, 0.11665, 0.0419712, 0.231373)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3ao1n"]
bg_color = Color(0.270222, 0.270222, 0.270222, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="Animation" id="Animation_r6435"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0.291262, 0.291262)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
[sub_resource type="Animation" id="Animation_1758a"]
resource_name = "empty"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.5),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, 0), Vector2(0, 12.605), Vector2(0, -24.56), Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:scale")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.5),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0.291262, 0.291262), Vector2(0.291, 0.191), Vector2(0.291, 0.366), Vector2(0.291262, 0.291262)]
}
[sub_resource type="Animation" id="Animation_etofw"]
resource_name = "fill"
length = 0.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:scale")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.3),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(0.291262, 0.291262), Vector2(0.291, 0.231), Vector2(0.291262, 0.291262)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_etofw"]
_data = {
&"RESET": SubResource("Animation_r6435"),
&"empty": SubResource("Animation_1758a"),
&"fill": SubResource("Animation_etofw")
}
[node name="Compost" type="Area2D"]
script = ExtResource("1_b8mmk")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_akkx7")
[node name="Sprite" type="Sprite2D" parent="."]
unique_name_in_owner = true
self_modulate = Color(0.90820795, 0.68268144, 0.2216644, 1)
scale = Vector2(0.291262, 0.291262)
texture = ExtResource("2_s8eov")
[node name="ProgressBar" type="ProgressBar" parent="Sprite"]
unique_name_in_owner = true
offset_left = -62.0
offset_top = -7.0
offset_right = 62.0
offset_bottom = 120.0
theme_override_styles/background = SubResource("StyleBoxFlat_etofw")
theme_override_styles/fill = SubResource("StyleBoxFlat_3ao1n")
fill_mode = 3
show_percentage = false
[node name="Bolt" type="Sprite2D" parent="Sprite"]
z_index = 1
position = Vector2(0, 54.9334)
scale = Vector2(2.00278, 2.00278)
texture = ExtResource("3_s8eov")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_etofw")
}

View File

@@ -5,17 +5,14 @@ var containing_seed : int = 0
func get_seed_needed(l : int = level) -> int:
match l:
1: return 3
2: return 2
3: return 2
_: return 1
func get_energy_production(l : int = level) -> int:
match l:
1: return 1
2: return 1
1: return 5
2: return 4
3: return 3
_: return 2
func setup_machine_sprite():
%Sprite.self_modulate = Machine.get_level_color(level)
func _process(_delta):
%ProgressBar.value = lerp(%ProgressBar.value, float(containing_seed) / float(get_seed_needed()) * 100, 0.5)
@@ -35,7 +32,10 @@ func interact(p : Player) -> bool:
if containing_seed >= get_seed_needed():
$AnimationPlayer.play("empty")
containing_seed = 0
p.recharge(get_energy_production())
product(p)
else:
$AnimationPlayer.play("fill")
return true
func product(player : Player):
pass

View File

@@ -0,0 +1,12 @@
extends Compost
class_name EnergyCompost
func get_energy_production(l : int = level) -> int:
match l:
1: return 1
2: return 1
3: return 1
_: return 1
func product(player : Player):
player.recharge(get_energy_production())

View File

@@ -0,0 +1 @@
uid://bw2ckthka71y8

View File

@@ -0,0 +1,17 @@
extends Compost
class_name SeedCompost
func get_seeds_production(l : int = level) -> int:
match l:
1: return 2
2: return 2
3: return 2
_: return 1
func product(player : Player):
for i in range(get_seeds_production()):
player.planet.drop_item(
Seed.new(GameInfo.game_data.unlocked_plant_types.pick_random()),
global_position,
100
)

View File

@@ -0,0 +1 @@
uid://d0yt8pd41j2os