diff --git a/assets/plants/abre1.png b/assets/plants/abre1.png new file mode 100644 index 0000000..55ca3cf Binary files /dev/null and b/assets/plants/abre1.png differ diff --git a/assets/plants/abre1.png.import b/assets/plants/abre1.png.import new file mode 100644 index 0000000..45cedab --- /dev/null +++ b/assets/plants/abre1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxbv1inffa2bq" +path="res://.godot/imported/abre1.png-f601649dd5438d649bcae9d45d57e08e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/abre1.png" +dest_files=["res://.godot/imported/abre1.png-f601649dd5438d649bcae9d45d57e08e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/abre2.png b/assets/plants/abre2.png new file mode 100644 index 0000000..e571801 Binary files /dev/null and b/assets/plants/abre2.png differ diff --git a/assets/plants/abre2.png.import b/assets/plants/abre2.png.import new file mode 100644 index 0000000..971f635 --- /dev/null +++ b/assets/plants/abre2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwm660gppiset" +path="res://.godot/imported/abre2.png-dbc62f82a9df3e4e731aa07d232ec7c2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/abre2.png" +dest_files=["res://.godot/imported/abre2.png-dbc62f82a9df3e4e731aa07d232ec7c2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution1.1.png b/assets/plants/evolution1.1.png new file mode 100644 index 0000000..4134bb3 Binary files /dev/null and b/assets/plants/evolution1.1.png differ diff --git a/assets/plants/evolution1.1.png.import b/assets/plants/evolution1.1.png.import new file mode 100644 index 0000000..16ca3dc --- /dev/null +++ b/assets/plants/evolution1.1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://br1olfut3p0tx" +path="res://.godot/imported/evolution1.1.png-862fdeb0c2cb7e40b7a0aab50ab4eaa0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution1.1.png" +dest_files=["res://.godot/imported/evolution1.1.png-862fdeb0c2cb7e40b7a0aab50ab4eaa0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution1.2.png b/assets/plants/evolution1.2.png new file mode 100644 index 0000000..473c244 Binary files /dev/null and b/assets/plants/evolution1.2.png differ diff --git a/assets/plants/evolution1.2.png.import b/assets/plants/evolution1.2.png.import new file mode 100644 index 0000000..89cbbb7 --- /dev/null +++ b/assets/plants/evolution1.2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jmyn1g18nyql" +path="res://.godot/imported/evolution1.2.png-3579a06e9a063a1c3322c950ba78bd0f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution1.2.png" +dest_files=["res://.godot/imported/evolution1.2.png-3579a06e9a063a1c3322c950ba78bd0f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution1.3.png b/assets/plants/evolution1.3.png new file mode 100644 index 0000000..484000b Binary files /dev/null and b/assets/plants/evolution1.3.png differ diff --git a/assets/plants/evolution1.3.png.import b/assets/plants/evolution1.3.png.import new file mode 100644 index 0000000..b96c0de --- /dev/null +++ b/assets/plants/evolution1.3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clnrdh4ygkrr8" +path="res://.godot/imported/evolution1.3.png-4fef6bf34fd31b95858584ccf2aa7dfa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution1.3.png" +dest_files=["res://.godot/imported/evolution1.3.png-4fef6bf34fd31b95858584ccf2aa7dfa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution1.4.png b/assets/plants/evolution1.4.png new file mode 100644 index 0000000..6154961 Binary files /dev/null and b/assets/plants/evolution1.4.png differ diff --git a/assets/plants/evolution1.4.png.import b/assets/plants/evolution1.4.png.import new file mode 100644 index 0000000..5532550 --- /dev/null +++ b/assets/plants/evolution1.4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ouxdlglbbnme" +path="res://.godot/imported/evolution1.4.png-4be3232285255c83c3e62686593d3946.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution1.4.png" +dest_files=["res://.godot/imported/evolution1.4.png-4be3232285255c83c3e62686593d3946.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution1.png b/assets/plants/evolution1.png new file mode 100644 index 0000000..a1a9f64 Binary files /dev/null and b/assets/plants/evolution1.png differ diff --git a/assets/plants/evolution1.png.import b/assets/plants/evolution1.png.import new file mode 100644 index 0000000..bf4f982 --- /dev/null +++ b/assets/plants/evolution1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hkcjtfch0kub" +path="res://.godot/imported/evolution1.png-c3196fbd934aece5b1154621cfb192c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution1.png" +dest_files=["res://.godot/imported/evolution1.png-c3196fbd934aece5b1154621cfb192c7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution2.1.png b/assets/plants/evolution2.1.png new file mode 100644 index 0000000..c81f23a Binary files /dev/null and b/assets/plants/evolution2.1.png differ diff --git a/assets/plants/evolution2.1.png.import b/assets/plants/evolution2.1.png.import new file mode 100644 index 0000000..c3f3a85 --- /dev/null +++ b/assets/plants/evolution2.1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://24ift4wt1h2h" +path="res://.godot/imported/evolution2.1.png-2d43b2276eb11648b1b94a07509f79a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution2.1.png" +dest_files=["res://.godot/imported/evolution2.1.png-2d43b2276eb11648b1b94a07509f79a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution2.2.png b/assets/plants/evolution2.2.png new file mode 100644 index 0000000..1f448f0 Binary files /dev/null and b/assets/plants/evolution2.2.png differ diff --git a/assets/plants/evolution2.2.png.import b/assets/plants/evolution2.2.png.import new file mode 100644 index 0000000..1287096 --- /dev/null +++ b/assets/plants/evolution2.2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bklqkrqhw6fdf" +path="res://.godot/imported/evolution2.2.png-7f74eb41a03e02df62bc5905650c12ff.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution2.2.png" +dest_files=["res://.godot/imported/evolution2.2.png-7f74eb41a03e02df62bc5905650c12ff.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution2.3.png b/assets/plants/evolution2.3.png new file mode 100644 index 0000000..0b8c456 Binary files /dev/null and b/assets/plants/evolution2.3.png differ diff --git a/assets/plants/evolution2.3.png.import b/assets/plants/evolution2.3.png.import new file mode 100644 index 0000000..0e1ce7d --- /dev/null +++ b/assets/plants/evolution2.3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://34v3ub405uwp" +path="res://.godot/imported/evolution2.3.png-4cd5fc3415c649729c042cbbef6952e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution2.3.png" +dest_files=["res://.godot/imported/evolution2.3.png-4cd5fc3415c649729c042cbbef6952e2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution2.4.png b/assets/plants/evolution2.4.png new file mode 100644 index 0000000..4d509b0 Binary files /dev/null and b/assets/plants/evolution2.4.png differ diff --git a/assets/plants/evolution2.4.png.import b/assets/plants/evolution2.4.png.import new file mode 100644 index 0000000..46b0cec --- /dev/null +++ b/assets/plants/evolution2.4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d02mdx460lfgm" +path="res://.godot/imported/evolution2.4.png-f635a8185aa3545d67cab448e50792bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution2.4.png" +dest_files=["res://.godot/imported/evolution2.4.png-f635a8185aa3545d67cab448e50792bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution2.png b/assets/plants/evolution2.png new file mode 100644 index 0000000..7a22128 Binary files /dev/null and b/assets/plants/evolution2.png differ diff --git a/assets/plants/evolution2.png.import b/assets/plants/evolution2.png.import new file mode 100644 index 0000000..8d0e687 --- /dev/null +++ b/assets/plants/evolution2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0xlqgttxwkgh" +path="res://.godot/imported/evolution2.png-595e80eed2d6cecf62c70a924f5e5d34.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution2.png" +dest_files=["res://.godot/imported/evolution2.png-595e80eed2d6cecf62c70a924f5e5d34.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution3.1.png b/assets/plants/evolution3.1.png new file mode 100644 index 0000000..6d3a5dc Binary files /dev/null and b/assets/plants/evolution3.1.png differ diff --git a/assets/plants/evolution3.1.png.import b/assets/plants/evolution3.1.png.import new file mode 100644 index 0000000..67f3ad0 --- /dev/null +++ b/assets/plants/evolution3.1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmhajduampeuf" +path="res://.godot/imported/evolution3.1.png-f52a394593a2d6fb74281528b9bd583b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution3.1.png" +dest_files=["res://.godot/imported/evolution3.1.png-f52a394593a2d6fb74281528b9bd583b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution3.2.png b/assets/plants/evolution3.2.png new file mode 100644 index 0000000..b1f9767 Binary files /dev/null and b/assets/plants/evolution3.2.png differ diff --git a/assets/plants/evolution3.2.png.import b/assets/plants/evolution3.2.png.import new file mode 100644 index 0000000..a9ee882 --- /dev/null +++ b/assets/plants/evolution3.2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhqhdoxql4odd" +path="res://.godot/imported/evolution3.2.png-c599ac7ef9cfa3de1171e724262666b8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution3.2.png" +dest_files=["res://.godot/imported/evolution3.2.png-c599ac7ef9cfa3de1171e724262666b8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution3.3.png b/assets/plants/evolution3.3.png new file mode 100644 index 0000000..61ef46c Binary files /dev/null and b/assets/plants/evolution3.3.png differ diff --git a/assets/plants/evolution3.3.png.import b/assets/plants/evolution3.3.png.import new file mode 100644 index 0000000..ea38cce --- /dev/null +++ b/assets/plants/evolution3.3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi08m8a3ikw7j" +path="res://.godot/imported/evolution3.3.png-aec0f4b0d2a35906ddb8ce16786e6ec3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution3.3.png" +dest_files=["res://.godot/imported/evolution3.3.png-aec0f4b0d2a35906ddb8ce16786e6ec3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/evolution3.png b/assets/plants/evolution3.png new file mode 100644 index 0000000..86f8276 Binary files /dev/null and b/assets/plants/evolution3.png differ diff --git a/assets/plants/evolution3.png.import b/assets/plants/evolution3.png.import new file mode 100644 index 0000000..47787ec --- /dev/null +++ b/assets/plants/evolution3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhofpsc2gk2s8" +path="res://.godot/imported/evolution3.png-b73f0eb0e69607e1716f3de4fbc6f27d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/evolution3.png" +dest_files=["res://.godot/imported/evolution3.png-b73f0eb0e69607e1716f3de4fbc6f27d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe1.png b/assets/plants/herbe1.png new file mode 100644 index 0000000..42de4c5 Binary files /dev/null and b/assets/plants/herbe1.png differ diff --git a/assets/plants/herbe1.png.import b/assets/plants/herbe1.png.import new file mode 100644 index 0000000..8eacb25 --- /dev/null +++ b/assets/plants/herbe1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://damy6xcp3jd0s" +path="res://.godot/imported/herbe1.png-503251ac0e36e68233f9f2e067d84bde.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe1.png" +dest_files=["res://.godot/imported/herbe1.png-503251ac0e36e68233f9f2e067d84bde.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe2.png b/assets/plants/herbe2.png new file mode 100644 index 0000000..95ed0e3 Binary files /dev/null and b/assets/plants/herbe2.png differ diff --git a/assets/plants/herbe2.png.import b/assets/plants/herbe2.png.import new file mode 100644 index 0000000..99650ae --- /dev/null +++ b/assets/plants/herbe2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cy7qtqt64y38m" +path="res://.godot/imported/herbe2.png-7cb37f4da9ba8e2f66958b30033f2166.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe2.png" +dest_files=["res://.godot/imported/herbe2.png-7cb37f4da9ba8e2f66958b30033f2166.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe3.png b/assets/plants/herbe3.png new file mode 100644 index 0000000..5b274d7 Binary files /dev/null and b/assets/plants/herbe3.png differ diff --git a/assets/plants/herbe3.png.import b/assets/plants/herbe3.png.import new file mode 100644 index 0000000..560472a --- /dev/null +++ b/assets/plants/herbe3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dt8v2pphu18fu" +path="res://.godot/imported/herbe3.png-dbbc6eb834dc62d6239ee0ccaf2c35dc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe3.png" +dest_files=["res://.godot/imported/herbe3.png-dbbc6eb834dc62d6239ee0ccaf2c35dc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe4.png b/assets/plants/herbe4.png new file mode 100644 index 0000000..ab2e042 Binary files /dev/null and b/assets/plants/herbe4.png differ diff --git a/assets/plants/herbe4.png.import b/assets/plants/herbe4.png.import new file mode 100644 index 0000000..aded141 --- /dev/null +++ b/assets/plants/herbe4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://be2g1u7d8lwc8" +path="res://.godot/imported/herbe4.png-198eac5abf4b39c0aabbfe1d299e4bf4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe4.png" +dest_files=["res://.godot/imported/herbe4.png-198eac5abf4b39c0aabbfe1d299e4bf4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe5.png b/assets/plants/herbe5.png new file mode 100644 index 0000000..d8fe040 Binary files /dev/null and b/assets/plants/herbe5.png differ diff --git a/assets/plants/herbe5.png.import b/assets/plants/herbe5.png.import new file mode 100644 index 0000000..050a39c --- /dev/null +++ b/assets/plants/herbe5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp5ibidl71imr" +path="res://.godot/imported/herbe5.png-aacf4dd80ee8eaf15eb1d91537b29226.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe5.png" +dest_files=["res://.godot/imported/herbe5.png-aacf4dd80ee8eaf15eb1d91537b29226.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe6.png b/assets/plants/herbe6.png new file mode 100644 index 0000000..e9f215a Binary files /dev/null and b/assets/plants/herbe6.png differ diff --git a/assets/plants/herbe6.png.import b/assets/plants/herbe6.png.import new file mode 100644 index 0000000..4a83ca9 --- /dev/null +++ b/assets/plants/herbe6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6o2re3hk5g0o" +path="res://.godot/imported/herbe6.png-7b252676dadcd6fa41f9486f688a6ea8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe6.png" +dest_files=["res://.godot/imported/herbe6.png-7b252676dadcd6fa41f9486f688a6ea8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe7.png b/assets/plants/herbe7.png new file mode 100644 index 0000000..aea3b00 Binary files /dev/null and b/assets/plants/herbe7.png differ diff --git a/assets/plants/herbe7.png.import b/assets/plants/herbe7.png.import new file mode 100644 index 0000000..09a6a6d --- /dev/null +++ b/assets/plants/herbe7.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bohhdvvgpqtvy" +path="res://.godot/imported/herbe7.png-6e0337ed6cd939a45e3d6a682624a585.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe7.png" +dest_files=["res://.godot/imported/herbe7.png-6e0337ed6cd939a45e3d6a682624a585.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/plants/herbe8.png b/assets/plants/herbe8.png new file mode 100644 index 0000000..fd4a1e1 Binary files /dev/null and b/assets/plants/herbe8.png differ diff --git a/assets/plants/herbe8.png.import b/assets/plants/herbe8.png.import new file mode 100644 index 0000000..423c417 --- /dev/null +++ b/assets/plants/herbe8.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8rmpitmxeobx" +path="res://.godot/imported/herbe8.png-a4fa1c4e9587627b8f6fdc9481be7ab1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/plants/herbe8.png" +dest_files=["res://.godot/imported/herbe8.png-a4fa1c4e9587627b8f6fdc9481be7ab1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/objects/Animal.tscn b/objects/Animal.tscn new file mode 100644 index 0000000..321e42b --- /dev/null +++ b/objects/Animal.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=3 uid="uid://cj457q2fx5mim"] + +[ext_resource type="Script" path="res://scripts/animal.gd" id="1_bjim0"] +[ext_resource type="Texture2D" uid="uid://cxbv1inffa2bq" path="res://assets/plants/abre1.png" id="2_n8edq"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_5dvar"] +radius = 599.083 + +[node name="Animal" type="Node2D"] +script = ExtResource("1_bjim0") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.3, 0.3) +texture = ExtResource("2_n8edq") +offset = Vector2(170, -550) + +[node name="Area2D" type="Area2D" parent="."] +collision_layer = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("CircleShape2D_5dvar") + +[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"] diff --git a/objects/plant.tscn b/objects/plant.tscn index 6f4b677..88abbfd 100644 --- a/objects/plant.tscn +++ b/objects/plant.tscn @@ -1,166 +1,8 @@ [gd_scene load_steps=6 format=3 uid="uid://x4kv2y5f52cm"] +[ext_resource type="Script" path="res://scripts/plant.gd" id="1_drvq1"] [ext_resource type="Texture2D" uid="uid://b3kjaw1hajc6s" path="res://assets/grille_seeds.png" id="1_n5onq"] -[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 need_checker: Timer = $NeedChecker -@onready var sapling_count_down: Timer = $SaplingCountDown -@onready var reproduction: Timer = $Reproduction -@onready var sprite_node: AnimatedSprite2D = $AnimatedSprite2D - -const NEED_CHECK_PERIOD := 0.5 -const SAPLING_LIFETIME_MULT := 2.0 # this multiplies the time to grow to tell the time it can stay as a sapling -const OFFSET_REPRODUCTION_PERCT_DIST := 0.5 - -var parameter: PlantType -var state := PlantState.SAPLING -var sapling_time_left: float -var can_grow := true - -func init(plant_parameter: PlantType): - parameter = plant_parameter - sapling_count_down.start(SAPLING_LIFETIME_MULT * parameter.growing_time) - sprite_node.sprite_frames = parameter.sprite_frames - need_checker.start(NEED_CHECK_PERIOD) - - -func _on_need_checker_timeout() -> void: - can_grow = check_terrain_viability() - growing_timer.paused = not can_grow and state == PlantState.SAPLING - reproduction.paused = not can_grow - -func check_terrain_viability() -> bool: - var water := GameTerrain.get_stat(position, GameTerrain.Stats.WATER) - if water < parameter.water_need[0] or water > parameter.water_need[1]: - return false - - var fertility := GameTerrain.get_stat(position, GameTerrain.Stats.FERTILITY) - if fertility < parameter.fertility_need[0] or fertility > parameter.fertility_need[1]: - return false - - var presence := GameTerrain.get_stat(position, GameTerrain.Stats.PRESENCE) - presence += GameTerrain.LEVELS_NUMBER / 2 - if presence < parameter.presence_need[0] or presence > parameter.presence_need[1]: - return false - - return true - - -func _on_growing_timeout() -> void: - if state == PlantState.SAPLING: - can_grow = check_terrain_viability() - if not can_grow: - growing_timer.start() - return - - match state: - PlantState.SAPLING: - grow() - PlantState.GROWN: - die() - PlantState.DEAD: - remove() - - -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 - sapling_count_down.stop() - growing_timer.start(parameter.dying_time) - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.WATER, - parameter.water_prod) - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.FERTILITY, - parameter.fertility_prod) - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.PRESENCE, - parameter.presence_prod) - - reproduction.start(parameter.dying_time / (parameter.offspring_per_lifetime + 1) + 0.1) - - grown.emit() - sprite_node.play(\"GROWN\") - - -func die(): - state = PlantState.DEAD - # remove alive prod and add dead prod - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.WATER, - -parameter.water_prod + parameter.dead_water_prod) - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.FERTILITY, - -parameter.fertility_prod + parameter.dead_fertility_prod) - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.PRESENCE, - -parameter.presence_prod) - growing_timer.start(parameter.dead_time) - died.emit() - sprite_node.play(\"DEAD\") - -func remove(was_dead: bool = true): - if was_dead: - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.WATER, - -parameter.dead_water_prod) - GameTerrain.modify_zone(position, - parameter.distance_prod, - GameTerrain.Stats.FERTILITY, - -parameter.dead_fertility_prod) - queue_free() - - -func _on_sapling_count_down_timeout() -> void: - remove(false) - - -func _on_reproduction_timeout() -> void: - var min_dist := parameter.distance_prod - parameter.distance_prod * OFFSET_REPRODUCTION_PERCT_DIST - var max_dist := parameter.distance_prod + parameter.distance_prod * OFFSET_REPRODUCTION_PERCT_DIST - var plant_pos = position + (Vector2.RIGHT * randf_range(min_dist, max_dist)).rotated(randf_range(0, PI)) - - var space := get_world_2d().direct_space_state - var parameters = PhysicsPointQueryParameters2D.new() - parameters.position = plant_pos - parameters.collide_with_areas = true - parameters.collide_with_bodies = false - var result := space.intersect_point(parameters, 1) - if result.size() > 0: - return - - var offspring = self.duplicate() - self.get_parent().add_child(offspring) - offspring.init(parameter) - offspring.plant(plant_pos) -" - [sub_resource type="AtlasTexture" id="AtlasTexture_5did5"] atlas = ExtResource("1_n5onq") region = Rect2(810, 540, 270, 270) @@ -180,7 +22,7 @@ animations = [{ radius = 36.0 [node name="Plant" type="Node2D"] -script = SubResource("GDScript_x3g5o") +script = ExtResource("1_drvq1") [node name="Growing" type="Timer" parent="."] one_shot = true diff --git a/objects/plant_types/chardon.tres b/objects/plant_types/chardon.tres index 320d4ca..030c27e 100644 --- a/objects/plant_types/chardon.tres +++ b/objects/plant_types/chardon.tres @@ -1,30 +1,20 @@ -[gd_resource type="Resource" script_class="PlantType" load_steps=9 format=3 uid="uid://bgi2lo7kb3d2v"] +[gd_resource type="Resource" script_class="PlantType" load_steps=8 format=3 uid="uid://bgi2lo7kb3d2v"] [ext_resource type="Script" path="res://scripts/plant_type.gd" id="1_i8xe4"] [ext_resource type="Texture2D" uid="uid://b3kjaw1hajc6s" path="res://assets/grille_seeds.png" id="2_4rpny"] -[ext_resource type="Texture2D" uid="uid://r1bq2tgt1yxf" path="res://assets/gamejam_plantes_props1.png" id="2_gaemm"] +[ext_resource type="Texture2D" uid="uid://hkcjtfch0kub" path="res://assets/plants/evolution1.png" id="3_5jw8q"] +[ext_resource type="Texture2D" uid="uid://24ift4wt1h2h" path="res://assets/plants/evolution2.1.png" id="4_1u64t"] +[ext_resource type="Texture2D" uid="uid://d0xlqgttxwkgh" path="res://assets/plants/evolution2.png" id="5_2ybgr"] [sub_resource type="AtlasTexture" id="AtlasTexture_1lwna"] atlas = ExtResource("2_4rpny") region = Rect2(0, 0, 270, 270) -[sub_resource type="AtlasTexture" id="AtlasTexture_fxqnu"] -atlas = ExtResource("2_gaemm") -region = Rect2(1920, 1620, 320, 540) - -[sub_resource type="AtlasTexture" id="AtlasTexture_sjq1e"] -atlas = ExtResource("2_gaemm") -region = Rect2(320, 1080, 320, 540) - -[sub_resource type="AtlasTexture" id="AtlasTexture_jsm3j"] -atlas = ExtResource("2_gaemm") -region = Rect2(0, 1080, 320, 540) - [sub_resource type="SpriteFrames" id="SpriteFrames_fxtnk"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_fxqnu") +"texture": ExtResource("3_5jw8q") }], "loop": true, "name": &"DEAD", @@ -32,7 +22,7 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_sjq1e") +"texture": ExtResource("4_1u64t") }], "loop": true, "name": &"GROWN", @@ -40,7 +30,7 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_jsm3j") +"texture": ExtResource("5_2ybgr") }], "loop": true, "name": &"SAPLING", diff --git a/objects/plant_types/chene.tres b/objects/plant_types/chene.tres index 80e3ca4..cb20c78 100644 --- a/objects/plant_types/chene.tres +++ b/objects/plant_types/chene.tres @@ -3,6 +3,8 @@ [ext_resource type="Script" path="res://scripts/plant_type.gd" id="1_meppe"] [ext_resource type="Texture2D" uid="uid://r1bq2tgt1yxf" path="res://assets/gamejam_plantes_props1.png" id="2_jkmk8"] [ext_resource type="Texture2D" uid="uid://b3kjaw1hajc6s" path="res://assets/grille_seeds.png" id="2_m81be"] +[ext_resource type="Texture2D" uid="uid://dwm660gppiset" path="res://assets/plants/abre2.png" id="4_1v11a"] +[ext_resource type="Texture2D" uid="uid://d02mdx460lfgm" path="res://assets/plants/evolution2.4.png" id="5_d75nd"] [sub_resource type="AtlasTexture" id="AtlasTexture_bqj8q"] atlas = ExtResource("2_m81be") @@ -12,14 +14,6 @@ region = Rect2(270, 0, 270, 270) atlas = ExtResource("2_jkmk8") region = Rect2(2880, 1080, 320, 540) -[sub_resource type="AtlasTexture" id="AtlasTexture_7r8et"] -atlas = ExtResource("2_jkmk8") -region = Rect2(2880, 540, 320, 540) - -[sub_resource type="AtlasTexture" id="AtlasTexture_oy8ng"] -atlas = ExtResource("2_jkmk8") -region = Rect2(3200, 0, 320, 540) - [sub_resource type="SpriteFrames" id="SpriteFrames_shufc"] animations = [{ "frames": [{ @@ -32,7 +26,7 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_7r8et") +"texture": ExtResource("4_1v11a") }], "loop": true, "name": &"GROWN", @@ -40,7 +34,7 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_oy8ng") +"texture": ExtResource("5_d75nd") }], "loop": true, "name": &"SAPLING", diff --git a/objects/plant_types/peuplier.tres b/objects/plant_types/peuplier.tres index ea7db27..54313ac 100644 --- a/objects/plant_types/peuplier.tres +++ b/objects/plant_types/peuplier.tres @@ -1,30 +1,20 @@ -[gd_resource type="Resource" script_class="PlantType" load_steps=9 format=3 uid="uid://dnahox31xqy6l"] +[gd_resource type="Resource" script_class="PlantType" load_steps=8 format=3 uid="uid://dnahox31xqy6l"] [ext_resource type="Script" path="res://scripts/plant_type.gd" id="1_mhtmv"] -[ext_resource type="Texture2D" uid="uid://r1bq2tgt1yxf" path="res://assets/gamejam_plantes_props1.png" id="2_gcjog"] [ext_resource type="Texture2D" uid="uid://b3kjaw1hajc6s" path="res://assets/grille_seeds.png" id="2_od2qm"] +[ext_resource type="Texture2D" uid="uid://jmyn1g18nyql" path="res://assets/plants/evolution1.2.png" id="3_n58s0"] +[ext_resource type="Texture2D" uid="uid://br1olfut3p0tx" path="res://assets/plants/evolution1.1.png" id="4_ulvmw"] +[ext_resource type="Texture2D" uid="uid://hkcjtfch0kub" path="res://assets/plants/evolution1.png" id="5_6gtba"] [sub_resource type="AtlasTexture" id="AtlasTexture_dkacp"] atlas = ExtResource("2_od2qm") region = Rect2(540, 0, 270, 270) -[sub_resource type="AtlasTexture" id="AtlasTexture_ncq3n"] -atlas = ExtResource("2_gcjog") -region = Rect2(0, 540, 320, 540) - -[sub_resource type="AtlasTexture" id="AtlasTexture_slfxf"] -atlas = ExtResource("2_gcjog") -region = Rect2(1280, 1080, 320, 540) - -[sub_resource type="AtlasTexture" id="AtlasTexture_gsxj4"] -atlas = ExtResource("2_gcjog") -region = Rect2(2240, 0, 320, 540) - [sub_resource type="SpriteFrames" id="SpriteFrames_d15np"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_ncq3n") +"texture": ExtResource("3_n58s0") }], "loop": true, "name": &"DEAD", @@ -32,7 +22,7 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_slfxf") +"texture": ExtResource("4_ulvmw") }], "loop": true, "name": &"GROWN", @@ -40,7 +30,7 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_gsxj4") +"texture": ExtResource("5_6gtba") }], "loop": true, "name": &"SAPLING", diff --git a/scenes/Map.tscn b/scenes/Map.tscn index 34c6a6e..1cb7551 100644 --- a/scenes/Map.tscn +++ b/scenes/Map.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://d3hul8b7hlmj7"] +[gd_scene load_steps=5 format=3 uid="uid://d3hul8b7hlmj7"] [ext_resource type="Script" path="res://scripts/map.gd" id="1_3np0o"] [ext_resource type="PackedScene" uid="uid://6ferubyu2uy1" path="res://scenes/Scanners.tscn" id="1_6mlj0"] [ext_resource type="Texture2D" uid="uid://dtvde6oxrfuk1" path="res://assets/texture/ground.jpg" id="3_20ci8"] +[ext_resource type="PackedScene" uid="uid://cj457q2fx5mim" path="res://objects/Animal.tscn" id="4_pkphc"] [node name="Map" type="Node2D"] script = ExtResource("1_3np0o") @@ -15,3 +16,23 @@ texture_repeat = 2 texture = ExtResource("3_20ci8") texture_scale = Vector2(5, 5) polygon = PackedVector2Array(571, 76, 228, 282, 987, 657, 1379, 208) + +[node name="Animals" type="Node" parent="."] + +[node name="Animal" parent="Animals" instance=ExtResource("4_pkphc")] +position = Vector2(2121, 394) +plant_need = "Chardon" + +[node name="Animal2" parent="Animals" instance=ExtResource("4_pkphc")] +position = Vector2(382, 2220) +plant_need = "Chardon" + +[node name="Animal3" parent="Animals" instance=ExtResource("4_pkphc")] +position = Vector2(1858, 2027) +plant_need = "Buisson" + +[node name="Animal4" parent="Animals" instance=ExtResource("4_pkphc")] +position = Vector2(853, 1193) +plant_need = "Chene" + +[connection signal="liberated" from="Animals/Animal" to="." method="_on_animal_liberated"] diff --git a/scripts/animal.gd b/scripts/animal.gd new file mode 100644 index 0000000..238b113 --- /dev/null +++ b/scripts/animal.gd @@ -0,0 +1,15 @@ +extends Node2D + +signal liberated + +@export var plant_need: String + +func _on_area_2d_area_entered(area: Area2D) -> void: + var plant = area.get_parent() + if plant is Plant: + if plant_need == plant.parameter.type: + plant.grown.connect(tracked_plant_grew) + +func tracked_plant_grew(): + print("Liberated !!") + liberated.emit() diff --git a/scripts/map.gd b/scripts/map.gd index f0b4978..97546d5 100644 --- a/scripts/map.gd +++ b/scripts/map.gd @@ -1,6 +1,9 @@ class_name Map + extends Node2D +@export var n_animals_to_liberate := 4 + func _ready(): var map_size = GameTerrain.TERRAIN_SIZE * GameTerrain.MAP_RATIO @@ -13,3 +16,9 @@ func _ready(): func _on_gui_scanner_selected(type : Scanners.Type): $Scanners.select_scanner(type) + + +func _on_animal_liberated() -> void: + n_animals_to_liberate -= 1 + if n_animals_to_liberate == 0: + print("YOU WIN") diff --git a/scripts/plant.gd b/scripts/plant.gd new file mode 100644 index 0000000..98d903f --- /dev/null +++ b/scripts/plant.gd @@ -0,0 +1,162 @@ +class_name Plant + +extends Node2D + +enum PlantState { SAPLING, GROWN, DEAD} + +signal grown +signal died + +@onready var growing_timer: Timer = $Growing +@onready var need_checker: Timer = $NeedChecker +@onready var sapling_count_down: Timer = $SaplingCountDown +@onready var reproduction: Timer = $Reproduction +@onready var sprite_node: AnimatedSprite2D = $AnimatedSprite2D + +const NEED_CHECK_PERIOD := 0.5 +const SAPLING_LIFETIME_MULT := 2.0 # this multiplies the time to grow to tell the time it can stay as a sapling +const OFFSET_REPRODUCTION_PERCT_DIST := 0.5 + +var parameter: PlantType +var state := PlantState.SAPLING +var sapling_time_left: float +var can_grow := true + +func init(plant_parameter: PlantType): + parameter = plant_parameter + sapling_count_down.start(SAPLING_LIFETIME_MULT * parameter.growing_time) + sprite_node.sprite_frames = parameter.sprite_frames + need_checker.start(NEED_CHECK_PERIOD) + + +func _on_need_checker_timeout() -> void: + can_grow = check_terrain_viability() + growing_timer.paused = not can_grow and state == PlantState.SAPLING + reproduction.paused = not can_grow + +func check_terrain_viability() -> bool: + var water := GameTerrain.get_stat(position, GameTerrain.Stats.WATER) + if water < parameter.water_need[0] or water > parameter.water_need[1]: + return false + + var fertility := GameTerrain.get_stat(position, GameTerrain.Stats.FERTILITY) + if fertility < parameter.fertility_need[0] or fertility > parameter.fertility_need[1]: + return false + + var presence := GameTerrain.get_stat(position, GameTerrain.Stats.PRESENCE) + presence += GameTerrain.LEVELS_NUMBER / 2 + if presence < parameter.presence_need[0] or presence > parameter.presence_need[1]: + return false + + return true + + +func _on_growing_timeout() -> void: + if state == PlantState.SAPLING: + can_grow = check_terrain_viability() + if not can_grow: + growing_timer.start() + return + + match state: + PlantState.SAPLING: + grow() + PlantState.GROWN: + die() + PlantState.DEAD: + remove() + + +func plant(new_position: Vector2): + if not GameTerrain.is_on_map(new_position): + push_error("Planting out of the map") + 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 + sapling_count_down.stop() + growing_timer.start(parameter.dying_time) + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.WATER, + parameter.water_prod) + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.FERTILITY, + parameter.fertility_prod) + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.PRESENCE, + parameter.presence_prod) + + reproduction.start(parameter.dying_time / (parameter.offspring_per_lifetime + 1) + 0.1) + + grown.emit() + sprite_node.play("GROWN") + + +func die(): + state = PlantState.DEAD + # remove alive prod and add dead prod + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.WATER, + -parameter.water_prod + parameter.dead_water_prod) + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.FERTILITY, + -parameter.fertility_prod + parameter.dead_fertility_prod) + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.PRESENCE, + -parameter.presence_prod) + growing_timer.start(parameter.dead_time) + died.emit() + sprite_node.play("DEAD") + +func remove(was_dead: bool = true): + if was_dead: + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.WATER, + -parameter.dead_water_prod) + GameTerrain.modify_zone(position, + parameter.distance_prod, + GameTerrain.Stats.FERTILITY, + -parameter.dead_fertility_prod) + queue_free() + + +func _on_sapling_count_down_timeout() -> void: + remove(false) + + +func _on_reproduction_timeout() -> void: + var min_dist := parameter.distance_prod - parameter.distance_prod * OFFSET_REPRODUCTION_PERCT_DIST + var max_dist := parameter.distance_prod + parameter.distance_prod * OFFSET_REPRODUCTION_PERCT_DIST + var plant_pos = position + (Vector2.RIGHT * randf_range(min_dist, max_dist)).rotated(randf_range(0, PI)) + + if not GameTerrain.is_on_map(plant_pos): + return + + var space := get_world_2d().direct_space_state + var parameters = PhysicsPointQueryParameters2D.new() + parameters.position = plant_pos + parameters.collide_with_areas = true + parameters.collide_with_bodies = false + parameters.collision_mask = 1 + var result := space.intersect_point(parameters, 1) + if result.size() > 0: + return + + var offspring = self.duplicate() + self.get_parent().add_child(offspring) + offspring.init(parameter) + offspring.plant(plant_pos) diff --git a/scripts/planter.gd b/scripts/planter.gd index 0fc9618..1ce396c 100644 --- a/scripts/planter.gd +++ b/scripts/planter.gd @@ -33,6 +33,7 @@ func _process(delta: float) -> void: parameters.position = camera.get_global_mouse_position() parameters.collide_with_areas = true parameters.collide_with_bodies = false + parameters.collision_mask = 1 var result := space.intersect_point(parameters, 1) can_plant = result.size() == 0 @@ -43,10 +44,15 @@ func take_next_seed() -> PlantType: return plants[plant_ind] func _unhandled_input(_event: InputEvent) -> void: - if can_plant and Input.is_action_just_pressed("plant") and timer.is_stopped(): - var chosen_type: PlantType = take_next_seed() - var plant = plant_scene.instantiate() - add_child(plant) - plant.init(chosen_type) - plant.plant(camera.get_global_mouse_position()) - timer.start() + + if Input.is_action_just_pressed("plant") : + var mouse_pos = camera.get_global_mouse_position() + var click_on_map = GameTerrain.is_on_map(mouse_pos) + + if can_plant and click_on_map and timer.is_stopped(): + var chosen_type: PlantType = take_next_seed() + var plant = plant_scene.instantiate() + add_child(plant) + plant.init(chosen_type) + plant.plant(mouse_pos) + timer.start() diff --git a/scripts/terrain.gd b/scripts/terrain.gd index 2d85892..1cfc1c5 100644 --- a/scripts/terrain.gd +++ b/scripts/terrain.gd @@ -3,7 +3,7 @@ extends Node2D enum Stats {WATER, FERTILITY, PRESENCE} const TERRAIN_SIZE = Vector2i(300, 300) -const LEVELS_NUMBER : int = 10 +const LEVELS_NUMBER : int = 20 const MAP_RATIO = 8; @onready var image := Image.create_empty( @@ -29,6 +29,9 @@ func map_to_pixel( int(position.y / MAP_RATIO) ) +func is_on_map(position: Vector2) -> bool: + return position.x >= 0 and position.x <= TERRAIN_SIZE.x * MAP_RATIO and position.y >= 0 and position.y <= TERRAIN_SIZE.y * MAP_RATIO + func color_value_to_level( color_value : float ) -> int: @@ -104,6 +107,8 @@ func modify_zone( var pixel_radius = int(radius / MAP_RATIO) for x in range(pixel_center.x - pixel_radius, pixel_center.x + pixel_radius + 1) : for y in range(pixel_center.y - pixel_radius, pixel_center.y + pixel_radius + 1): + if not is_on_map(Vector2i(x, y)): + continue if pow(x - pixel_center.x,2) + pow(y - pixel_center.y,2) <= pow(pixel_radius,2): modify_pixel( Vector2i(x, y),