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 index edfccf1..f889d19 100644 --- a/objects/plant.tscn +++ b/objects/plant.tscn @@ -1,63 +1,31 @@ -[gd_scene load_steps=2 format=3 uid="uid://c4dct5rm3sob2"] +[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 StaticBody2D +extends Node2D -enum PlantState { SEED, SAPLING, GROWN, DEAD} +enum PlantState { SAPLING, GROWN, DEAD} signal grown signal died @onready var growing_timer: Timer = $Growing +@onready var sprite_node: AnimatedSprite2D = $AnimatedSprite2D -@export var type: String - -@export var sprites: Array[AnimatedSprite2D] - -@export var state := PlantState.SEED -@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: - get: - if state == PlantState.GROWN: - return water_prod - if state == PlantState.DEAD: - return dead_water_prod - return 0 - -@export var soil_prod := 0: - get: - if state == PlantState.GROWN: - return soil_prod - if state == PlantState.DEAD: - return dead_soil_prod - return 0 - -@export var dead_water_prod := 0 -@export var dead_soil_prod := 1 -@export var distance_prod := 0.1 - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. +var parameter: PlantType +var state := PlantState.SAPLING -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass +func init(plant_parameter: PlantType): + parameter = plant_parameter + sprite_node.sprite_frames = parameter.sprite_frames func _on_growing_timeout() -> void: match state: - PlantState.SEED: - push_error(\"Not possible to timeout while a seed\") PlantState.SAPLING: grow() PlantState.GROWN: @@ -67,32 +35,48 @@ func _on_growing_timeout() -> void: func plant(new_position: Vector2): - if state != PlantState.SEED: - push_error(\"Tried to plant \" + type + \", but was not at seed state\") - return position = new_position state = PlantState.SAPLING - growing_timer.start(growing_time) + growing_timer.start(parameter.growing_time) + sprite_node.play(\"SAPLING\") func grow(): if state != PlantState.SAPLING: - push_error(\"Tried to grow \" + type + \", but was not at sapling state\") + push_error(\"Tried to grow \" + parameter.type + \", but was not at sapling state\") return state = PlantState.GROWN - growing_timer.start(dying_time) + growing_timer.start(parameter.dying_time) grown.emit() + sprite_node.play(\"GROWN\") func die(): state = PlantState.DEAD died.emit() + sprite_node.play(\"DEAD\") " -[node name="Plant" type="StaticBody2D"] +[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