diff --git a/Game.tscn b/Game.tscn index f9e08f6..16c8cbc 100644 --- a/Game.tscn +++ b/Game.tscn @@ -1,6 +1,4 @@ -[gd_scene load_steps=4 format=3 uid="uid://c43sp458ssgj0"] - -[ext_resource type="Script" path="res://Souris.gd" id="1_gdeo1"] +[gd_scene load_steps=3 format=3 uid="uid://d3srnfkpx01we"] [sub_resource type="Gradient" id="Gradient_vr3vq"] colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1) @@ -11,7 +9,6 @@ gradient = SubResource("Gradient_vr3vq") [node name="Game" type="Node2D"] [node name="Souris" type="Node2D" parent="."] -script = ExtResource("1_gdeo1") [node name="Sprite2D" type="Sprite2D" parent="Souris"] scale = Vector2(0.0859375, 23) diff --git a/addons/godot-git-plugin/win64/~libgit_plugin.windows.editor.x86_64.dll b/addons/godot-git-plugin/win64/~libgit_plugin.windows.editor.x86_64.dll deleted file mode 100644 index 47bbb1d..0000000 Binary files a/addons/godot-git-plugin/win64/~libgit_plugin.windows.editor.x86_64.dll and /dev/null differ diff --git a/objects/plant.tscn b/objects/plant.tscn new file mode 100644 index 0000000..f889d19 --- /dev/null +++ b/objects/plant.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=4 format=3 uid="uid://c4doyvo3mqgvl"] + +[ext_resource type="Texture2D" uid="uid://biekl11dvnhgw" path="res://Victor_carre.jpg" id="1_x6d3i"] + +[sub_resource type="GDScript" id="GDScript_x3g5o"] +script/source = "class_name Plant + +extends Node2D + +enum PlantState { SAPLING, GROWN, DEAD} + +signal grown +signal died + +@onready var growing_timer: Timer = $Growing +@onready var sprite_node: AnimatedSprite2D = $AnimatedSprite2D + +var parameter: PlantType +var state := PlantState.SAPLING + + +func init(plant_parameter: PlantType): + parameter = plant_parameter + sprite_node.sprite_frames = parameter.sprite_frames + + +func _on_growing_timeout() -> void: + match state: + PlantState.SAPLING: + grow() + PlantState.GROWN: + die() + PlantState.DEAD: + push_error(\"Already dead\") + + +func plant(new_position: Vector2): + position = new_position + state = PlantState.SAPLING + growing_timer.start(parameter.growing_time) + sprite_node.play(\"SAPLING\") + + +func grow(): + if state != PlantState.SAPLING: + push_error(\"Tried to grow \" + parameter.type + \", but was not at sapling state\") + return + state = PlantState.GROWN + growing_timer.start(parameter.dying_time) + grown.emit() + sprite_node.play(\"GROWN\") + + +func die(): + state = PlantState.DEAD + died.emit() + sprite_node.play(\"DEAD\") + +" + +[sub_resource type="SpriteFrames" id="SpriteFrames_667un"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_x6d3i") +}], +"loop": true, +"name": &"SEED", +"speed": 5.0 +}] + +[node name="Plant" type="Node2D"] +script = SubResource("GDScript_x3g5o") + +[node name="Growing" type="Timer" parent="."] + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.0378561, 0.0378561) +sprite_frames = SubResource("SpriteFrames_667un") +animation = &"SEED" + +[connection signal="timeout" from="Growing" to="." method="_on_growing_timeout"] diff --git a/objects/plant_types/chardon.tres b/objects/plant_types/chardon.tres new file mode 100644 index 0000000..50a3edd --- /dev/null +++ b/objects/plant_types/chardon.tres @@ -0,0 +1,43 @@ +[gd_resource type="Resource" script_class="PlantType" load_steps=4 format=3 uid="uid://bgi2lo7kb3d2v"] + +[ext_resource type="Script" path="res://scripts/plant_type.gd" id="1_i8xe4"] +[ext_resource type="Texture2D" uid="uid://b11jyrkhw7ebp" path="res://icon.svg" id="1_t42om"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_fxtnk"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_t42om") +}], +"loop": true, +"name": &"DEAD", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"GROWN", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_t42om") +}], +"loop": true, +"name": &"SAPLING", +"speed": 5.0 +}] + +[resource] +script = ExtResource("1_i8xe4") +type = "Chardon" +sprite_frames = SubResource("SpriteFrames_fxtnk") +growing_time = 0.5 +dying_time = 10.0 +water_need = 5 +soil_need = 0 +distance_needed = 0.1 +water_prod = 0 +soil_prod = 0 +dead_water_prod = 0 +dead_soil_prod = 1 +distance_prod = 0.1 diff --git a/objects/plant_types/chene.tres b/objects/plant_types/chene.tres new file mode 100644 index 0000000..4e6ffff --- /dev/null +++ b/objects/plant_types/chene.tres @@ -0,0 +1,40 @@ +[gd_resource type="Resource" script_class="PlantType" load_steps=4 format=3 uid="uid://b6ufxuqdcgwmx"] + +[ext_resource type="Script" path="res://scripts/plant_type.gd" id="1_meppe"] +[ext_resource type="Texture2D" uid="uid://b11jyrkhw7ebp" path="res://icon.svg" id="3_14y3x"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_shufc"] +animations = [{ +"frames": [], +"loop": true, +"name": &"DEAD", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("3_14y3x") +}], +"loop": true, +"name": &"GROWN", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"SAPLING", +"speed": 5.0 +}] + +[resource] +script = ExtResource("1_meppe") +type = "Chene" +sprite_frames = SubResource("SpriteFrames_shufc") +growing_time = 50.0 +dying_time = 100.0 +water_need = 1 +soil_need = 1 +distance_needed = 0.1 +water_prod = 1 +soil_prod = 1 +dead_water_prod = 0 +dead_soil_prod = 1 +distance_prod = 0.1 diff --git a/objects/plant_types/peuplier.tres b/objects/plant_types/peuplier.tres new file mode 100644 index 0000000..4cb14d5 --- /dev/null +++ b/objects/plant_types/peuplier.tres @@ -0,0 +1,40 @@ +[gd_resource type="Resource" script_class="PlantType" load_steps=4 format=3 uid="uid://dnahox31xqy6l"] + +[ext_resource type="Texture2D" uid="uid://b11jyrkhw7ebp" path="res://icon.svg" id="1_b2cb6"] +[ext_resource type="Script" path="res://scripts/plant_type.gd" id="1_mhtmv"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_d15np"] +animations = [{ +"frames": [], +"loop": true, +"name": &"DEAD", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"GROWN", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_b2cb6") +}], +"loop": true, +"name": &"SAPLING", +"speed": 5.0 +}] + +[resource] +script = ExtResource("1_mhtmv") +type = "Peuplier" +sprite_frames = SubResource("SpriteFrames_d15np") +growing_time = 2.0 +dying_time = 2.0 +water_need = 0 +soil_need = 0 +distance_needed = 0.1 +water_prod = 0 +soil_prod = 0 +dead_water_prod = 0 +dead_soil_prod = 1 +distance_prod = 0.1 diff --git a/scenes/Planter.gd b/scenes/Planter.gd new file mode 100644 index 0000000..95a8160 --- /dev/null +++ b/scenes/Planter.gd @@ -0,0 +1,17 @@ +class_name Planter + +extends Node2D + +@export var plants: Array[PlantType] + +@onready var plant_scene = preload("res://objects/plant.tscn") + + +func _input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.pressed: + if event.button_index == MOUSE_BUTTON_LEFT: + var chosen_type: PlantType = plants[randi_range(0, plants.size() - 1)] + var plant = plant_scene.instantiate() + add_child(plant) + plant.init(chosen_type, event.position) + plant.plant(event.position) diff --git a/scenes/TestMapV.tscn b/scenes/TestMapV.tscn new file mode 100644 index 0000000..69a5ecf --- /dev/null +++ b/scenes/TestMapV.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=6 format=3 uid="uid://bus7qrxwn2ck1"] + +[ext_resource type="Script" path="res://scenes/Planter.gd" id="1_l04h8"] +[ext_resource type="Script" path="res://scripts/plant_type.gd" id="2_6g58k"] +[ext_resource type="Resource" uid="uid://bgi2lo7kb3d2v" path="res://objects/plant_types/chardon.tres" id="3_vfbum"] +[ext_resource type="Resource" uid="uid://dnahox31xqy6l" path="res://objects/plant_types/peuplier.tres" id="4_aqqqx"] +[ext_resource type="Resource" uid="uid://b6ufxuqdcgwmx" path="res://objects/plant_types/chene.tres" id="5_n7xs7"] + +[node name="TestMap" type="Node2D"] +script = ExtResource("1_l04h8") +plants = Array[ExtResource("2_6g58k")]([ExtResource("3_vfbum"), ExtResource("4_aqqqx"), ExtResource("5_n7xs7")]) diff --git a/scripts/plant_type.gd b/scripts/plant_type.gd new file mode 100644 index 0000000..13c3fb4 --- /dev/null +++ b/scripts/plant_type.gd @@ -0,0 +1,21 @@ +class_name PlantType + +extends Resource + +@export var type: String + +@export var sprite_frames: SpriteFrames + +@export var growing_time := 1.0 +@export var dying_time := 30.0 + +@export var water_need := 0 +@export var soil_need := 0 +@export var distance_needed := 0.1 + +@export var water_prod := 0 +@export var soil_prod := 0 + +@export var dead_water_prod := 0 +@export var dead_soil_prod := 1 +@export var distance_prod := 0.1