Merge branch 'plant-builder'

This commit is contained in:
Altaezio
2026-02-15 16:02:17 +01:00
92 changed files with 1391 additions and 41 deletions

View File

@@ -0,0 +1,85 @@
[gd_scene format=3 uid="uid://b8gqdgabrjaml"]
[ext_resource type="Script" uid="uid://dt2ip3pw2cboy" path="res://entities/plants/scripts/texture_builder/texture_builder.gd" id="1_s8rsj"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="2_cfiqo"]
[ext_resource type="Resource" uid="uid://bfyafiewcrjln" path="res://entities/plants/resources/plant_parts/Base1.tres" id="3_coupj"]
[ext_resource type="Resource" uid="uid://d2vdf2sth2xjm" path="res://entities/plants/resources/plant_parts/Base3.tres" id="4_coupj"]
[ext_resource type="Resource" uid="uid://7hrdkl6bf3o4" path="res://entities/plants/resources/plant_parts/Branch1.tres" id="4_ggud5"]
[ext_resource type="Resource" uid="uid://clruuysx80pnn" path="res://entities/plants/resources/plant_parts/Base4.tres" id="5_ggud5"]
[ext_resource type="Resource" uid="uid://ceisi5yyie7to" path="res://entities/plants/resources/plant_parts/Branch2.tres" id="5_ufbqh"]
[ext_resource type="Resource" uid="uid://cxiu8frk04b5i" path="res://entities/plants/resources/plant_parts/Branch3.tres" id="6_jbu3q"]
[ext_resource type="Resource" uid="uid://53p5g07e3pb4" path="res://entities/plants/resources/plant_parts/Branch4.tres" id="7_21cjy"]
[ext_resource type="Resource" uid="uid://d2y7o2hc6ffei" path="res://entities/plants/resources/plant_parts/Branch11.tres" id="8_rs2ow"]
[ext_resource type="Resource" uid="uid://civ4gr1c2pq7g" path="res://entities/plants/resources/plant_parts/Branch12.tres" id="9_5job5"]
[ext_resource type="Resource" uid="uid://bqfocs6f0iypo" path="res://entities/plants/resources/plant_parts/Branch13.tres" id="10_cynqk"]
[ext_resource type="Resource" uid="uid://drml5dm8i3j3a" path="res://entities/plants/resources/plant_parts/Branch14.tres" id="11_b21au"]
[ext_resource type="Resource" uid="uid://b1t5nfwcln5vo" path="res://entities/plants/resources/plant_parts/Branch15.tres" id="12_17ac3"]
[ext_resource type="Resource" uid="uid://b4s58a600q2rn" path="res://entities/plants/resources/plant_parts/Branch16.tres" id="13_fuh2b"]
[ext_resource type="Resource" uid="uid://dspugxsjw2aea" path="res://entities/plants/resources/plant_parts/Branch17.tres" id="14_28gvc"]
[ext_resource type="Resource" uid="uid://cnt38l2fmg8d7" path="res://entities/plants/resources/plant_parts/Branch18.tres" id="15_1cwvj"]
[ext_resource type="Script" uid="uid://cfjd8jelpm8dt" path="res://entities/plants/scripts/texture_builder/part_mutation_association.gd" id="16_c3tk3"]
[ext_resource type="Resource" uid="uid://wxqxm6d5twdh" path="res://entities/plants/resources/plant_parts/Leaf8.tres" id="17_q0jli"]
[ext_resource type="Resource" uid="uid://uoikjpno37bi" path="res://entities/plants/resources/plant_parts/Leaf9.tres" id="18_rplk6"]
[ext_resource type="Resource" uid="uid://c5gqwck2p5h5n" path="res://entities/plants/resources/plant_parts/Leaf10.tres" id="19_mcckl"]
[ext_resource type="Resource" uid="uid://c5fj1cw0f4mu6" path="res://entities/plants/resources/plant_parts/Leaf11.tres" id="20_3hcun"]
[ext_resource type="Resource" uid="uid://dce788f0adauv" path="res://entities/plants/resources/plant_parts/Leaf12.tres" id="21_kvmj5"]
[ext_resource type="Resource" uid="uid://dd34dikqoynp3" path="res://entities/plants/resources/plant_parts/Leaf13.tres" id="22_ocu7e"]
[ext_resource type="Resource" uid="uid://bynje6g2wvuvl" path="res://entities/plants/resources/plant_parts/Leaf14.tres" id="23_q771y"]
[ext_resource type="Resource" uid="uid://bd2op6q1masjt" path="res://entities/plants/resources/plant_parts/Leaf15.tres" id="24_5fbyu"]
[ext_resource type="Resource" uid="uid://bvajuw0r47edw" path="res://entities/plants/resources/plant_parts/Leaf16.tres" id="25_2plsj"]
[ext_resource type="Resource" uid="uid://cxgw1vgket0fw" path="res://entities/plants/resources/plant_parts/Leaf1.tres" id="26_yjh7s"]
[ext_resource type="Resource" uid="uid://qb6bftgq0n6y" path="res://entities/plants/resources/plant_parts/Leaf2.tres" id="27_abtbh"]
[ext_resource type="Resource" uid="uid://ft112n57di0e" path="res://entities/plants/resources/plant_parts/Leaf3.tres" id="28_j5s6w"]
[ext_resource type="Resource" uid="uid://dwjj6qmcjhn68" path="res://entities/plants/resources/plant_parts/Leaf4.tres" id="29_p21mk"]
[ext_resource type="Resource" uid="uid://bkr70mstyf8pp" path="res://entities/plants/resources/plant_parts/Leaf5.tres" id="30_wmcor"]
[ext_resource type="Resource" uid="uid://dcuwupmqt34ju" path="res://entities/plants/resources/plant_parts/Leaf6.tres" id="31_dx2ud"]
[ext_resource type="Resource" uid="uid://djmidq7yq452i" path="res://entities/plants/resources/plant_parts/Leaf7.tres" id="32_fpktn"]
[ext_resource type="Resource" uid="uid://crmvc77bqax1y" path="res://entities/plants/resources/plant_parts/Flower1.tres" id="33_7b70u"]
[ext_resource type="Resource" uid="uid://c0hr7icfkjkoi" path="res://entities/plants/resources/plant_parts/Flower2.tres" id="34_q8uyx"]
[ext_resource type="Resource" uid="uid://clkoc1iccts2w" path="res://entities/plants/resources/plant_parts/Flower3.tres" id="35_r166b"]
[ext_resource type="Resource" uid="uid://bd8yapi1pokj6" path="res://entities/plants/resources/plant_parts/Flower4.tres" id="36_78dq1"]
[ext_resource type="Resource" uid="uid://brmd6d3l8trqs" path="res://entities/plants/resources/plant_parts/BottomLeaf1.tres" id="37_kyre2"]
[ext_resource type="Resource" uid="uid://cfr33014u7ig5" path="res://entities/plants/resources/plant_parts/BottomLeaf2.tres" id="38_hwp0s"]
[ext_resource type="Resource" uid="uid://cf70m1us8mfqp" path="res://entities/plants/resources/plant_parts/BottomLeaf3.tres" id="39_wjthp"]
[ext_resource type="Resource" uid="uid://ctlmah4ohqp25" path="res://entities/plants/resources/plant_parts/BottomLeaf4.tres" id="40_rf72b"]
[ext_resource type="Resource" uid="uid://b8o4q0hsm84ov" path="res://entities/plants/resources/plant_parts/BottomLeaf5.tres" id="41_fnybh"]
[ext_resource type="Resource" uid="uid://bb33v756anesy" path="res://entities/plants/resources/plant_parts/BottomLeaf6.tres" id="42_6o0xq"]
[ext_resource type="Resource" uid="uid://cbqrl72y0d1yg" path="res://entities/plants/resources/plant_parts/BottomLeaf7.tres" id="43_h02jx"]
[ext_resource type="Resource" uid="uid://dwppani7gyjl5" path="res://entities/plants/resources/plant_parts/BottomLeaf8.tres" id="44_1v1v5"]
[ext_resource type="Resource" uid="uid://dkta1u1u0efxk" path="res://entities/plants/resources/plant_parts/BottomLeaf9.tres" id="45_yha2t"]
[sub_resource type="Resource" id="Resource_x75j3"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("17_q0jli"), ExtResource("18_rplk6"), ExtResource("19_mcckl"), ExtResource("20_3hcun"), ExtResource("21_kvmj5"), ExtResource("22_ocu7e"), ExtResource("23_q771y"), ExtResource("24_5fbyu"), ExtResource("25_2plsj")])
part_amount = 2
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_setyo"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("26_yjh7s"), ExtResource("27_abtbh"), ExtResource("28_j5s6w"), ExtResource("29_p21mk"), ExtResource("30_wmcor"), ExtResource("31_dx2ud"), ExtResource("32_fpktn")])
part_amount = 2
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_n40r1"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("33_7b70u"), ExtResource("34_q8uyx"), ExtResource("35_r166b"), ExtResource("36_78dq1")])
part_amount = 2
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_pw6ot"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("37_kyre2"), ExtResource("38_hwp0s"), ExtResource("39_wjthp"), ExtResource("40_rf72b"), ExtResource("41_fnybh"), ExtResource("42_6o0xq"), ExtResource("43_h02jx"), ExtResource("44_1v1v5"), ExtResource("45_yha2t")])
part_amount = 2
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[node name="TextureBuilder" type="Node" unique_id=79184097]
script = ExtResource("1_s8rsj")
bases = Array[ExtResource("2_cfiqo")]([ExtResource("3_coupj")])
baby_bases = Array[ExtResource("2_cfiqo")]([ExtResource("4_coupj"), ExtResource("5_ggud5")])
branches = Array[ExtResource("2_cfiqo")]([ExtResource("4_ggud5"), ExtResource("5_ufbqh"), ExtResource("6_jbu3q"), ExtResource("7_21cjy"), ExtResource("8_rs2ow"), ExtResource("9_5job5"), ExtResource("10_cynqk"), ExtResource("11_b21au"), ExtResource("12_17ac3"), ExtResource("13_fuh2b"), ExtResource("14_28gvc"), ExtResource("15_1cwvj")])
parts_mutation_associations = Dictionary[String, ExtResource("16_c3tk3")]({
"ANCIENT": SubResource("Resource_x75j3"),
"PRECOCIOUS": SubResource("Resource_setyo"),
"QUALITY": SubResource("Resource_n40r1"),
"QUICK": SubResource("Resource_pw6ot")
})

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/shadow.svg-3484c898461c709704cdbeef0cc1d3c3.c
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/growing.png-7b76a9f596f5cec79fdd8685670b16b5.
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/mature.png-8766aea5da569488db27850c55c8418b.c
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://doo2cxxa2p70a"
path="res://.godot/imported/plante-teste.png-24b9cb3074b067213929085cb8adf112.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/plants/assets/sprites/plante-teste.png"
dest_files=["res://.godot/imported/plante-teste.png-24b9cb3074b067213929085cb8adf112.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/grille_seeds.png-5193c30dc41cd45a15f8418b446b
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -0,0 +1,41 @@
[gd_scene format=3 uid="uid://cg6r56x11bvk2"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="1_8nppj"]
[ext_resource type="Script" uid="uid://c360ic1aost1n" path="res://entities/plants/scripts/texture_builder/plant_part_builder.gd" id="2_a5yje"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("1_8nppj")
region = Rect2(46, 30, 308, 671)
[node name="Base1" type="Sprite2D" unique_id=1642167049 node_paths=PackedStringArray("root", "attaches", "bottom_attaches")]
texture = SubResource("AtlasTexture_mypt2")
script = ExtResource("2_a5yje")
part_name = "Base1"
root = NodePath("Root")
attaches = NodePath("Attaches")
bottom_attaches = NodePath("BottomAttaches")
[node name="Root" type="Node2D" parent="." unique_id=1974108401]
position = Vector2(14, 263)
[node name="Attaches" type="Node" parent="." unique_id=2082226435]
[node name="attach1" type="Node2D" parent="Attaches" unique_id=808392694]
position = Vector2(0, -251)
[node name="attach2" type="Node2D" parent="Attaches" unique_id=1951230244]
position = Vector2(10, -85)
[node name="attach3" type="Node2D" parent="Attaches" unique_id=1491711670]
position = Vector2(81, 80)
[node name="BottomAttaches" type="Node" parent="." unique_id=456407982]
[node name="battom_attach0" type="Node2D" parent="BottomAttaches" unique_id=885194661]
position = Vector2(-17, 293)
[node name="battom_attach1" type="Node2D" parent="BottomAttaches" unique_id=1362515589]
position = Vector2(27, 295)
[node name="battom_attach2" type="Node2D" parent="BottomAttaches" unique_id=1546335762]
position = Vector2(52, 300)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://2hrg6yjk0yt0"]
[gd_scene format=3 uid="uid://2hrg6yjk0yt0"]
[ext_resource type="Script" uid="uid://bmjjpk4lvijws" path="res://entities/plants/scripts/plant_sprite.gd" id="1_pq8o7"]
[ext_resource type="Texture2D" uid="uid://pltmnkqd5ut2" path="res://entities/plants/assets/sprites/seeds/grille_seeds.png" id="3_j6jm5"]
@@ -97,15 +97,14 @@ _data = {
&"harvest": SubResource("Animation_rbgiq")
}
[node name="PlantSprite" type="Node2D"]
[node name="PlantSprite" type="Node2D" unique_id=1274989778]
script = ExtResource("1_pq8o7")
[node name="Sprite" type="Sprite2D" parent="."]
[node name="Sprite" type="Sprite2D" parent="." unique_id=1693882598]
unique_name_in_owner = true
scale = Vector2(0.15, 0.15)
offset = Vector2(0, -151.56)
[node name="PlantedSeed" type="Sprite2D" parent="Sprite"]
[node name="PlantedSeed" type="Sprite2D" parent="Sprite" unique_id=1134686525]
unique_name_in_owner = true
scale = Vector2(1.5, 1.5)
texture = SubResource("AtlasTexture_wyuub")
@@ -113,8 +112,6 @@ region_enabled = true
region_rect = Rect2(0, -50, 124, 135)
region_filter_clip_enabled = true
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1793068152]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_8eofq")
}
libraries/ = SubResource("AnimationLibrary_8eofq")

View File

@@ -1,7 +1,19 @@
[gd_resource type="Resource" script_class="AncientMutation" load_steps=2 format=3 uid="uid://dys1ehlg4kwh7"]
[gd_resource type="Resource" script_class="AncientMutation" format=3 uid="uid://dys1ehlg4kwh7"]
[ext_resource type="Script" uid="uid://c7po0bstyg80u" path="res://entities/plants/scripts/plant_mutation/ancient_mutation.gd" id="1_5g2qg"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_yqbjv"]
[ext_resource type="Resource" uid="uid://wxqxm6d5twdh" path="res://entities/plants/resources/plant_parts/Leaf8.tres" id="2_s2bpe"]
[ext_resource type="Resource" uid="uid://uoikjpno37bi" path="res://entities/plants/resources/plant_parts/Leaf9.tres" id="3_wfusp"]
[ext_resource type="Resource" uid="uid://c5gqwck2p5h5n" path="res://entities/plants/resources/plant_parts/Leaf10.tres" id="4_60d0x"]
[ext_resource type="Resource" uid="uid://c5fj1cw0f4mu6" path="res://entities/plants/resources/plant_parts/Leaf11.tres" id="5_ooo8j"]
[ext_resource type="Resource" uid="uid://dce788f0adauv" path="res://entities/plants/resources/plant_parts/Leaf12.tres" id="6_d0tr0"]
[ext_resource type="Resource" uid="uid://dd34dikqoynp3" path="res://entities/plants/resources/plant_parts/Leaf13.tres" id="7_jsy7o"]
[ext_resource type="Resource" uid="uid://bynje6g2wvuvl" path="res://entities/plants/resources/plant_parts/Leaf14.tres" id="8_m31fx"]
[ext_resource type="Resource" uid="uid://bd2op6q1masjt" path="res://entities/plants/resources/plant_parts/Leaf15.tres" id="9_78ar7"]
[ext_resource type="Resource" uid="uid://bvajuw0r47edw" path="res://entities/plants/resources/plant_parts/Leaf16.tres" id="10_dq1wt"]
[resource]
script = ExtResource("1_5g2qg")
possible_parts = Array[ExtResource("1_yqbjv")]([ExtResource("2_s2bpe"), ExtResource("3_wfusp"), ExtResource("4_60d0x"), ExtResource("5_ooo8j"), ExtResource("6_d0tr0"), ExtResource("7_jsy7o"), ExtResource("8_m31fx"), ExtResource("9_78ar7"), ExtResource("10_dq1wt")])
part_amount = 3
metadata/_custom_type_script = "uid://c7po0bstyg80u"

View File

@@ -1,4 +1,4 @@
[gd_resource type="Resource" script_class="PrecociousMutation" load_steps=2 format=3 uid="uid://c3am7s5bjy8qk"]
[gd_resource type="Resource" script_class="PrecociousMutation" format=3 uid="uid://c3am7s5bjy8qk"]
[ext_resource type="Script" uid="uid://cx5mg5vf62bia" path="res://entities/plants/scripts/plant_mutation/precocious_mutation.gd" id="1_wjcm0"]

View File

@@ -1,7 +1,14 @@
[gd_resource type="Resource" script_class="QualityMutation" load_steps=2 format=3 uid="uid://uabbkvg1rciq"]
[gd_resource type="Resource" script_class="QualityMutation" format=3 uid="uid://uabbkvg1rciq"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_f2p7y"]
[ext_resource type="Script" uid="uid://bdobyk2j625lb" path="res://entities/plants/scripts/plant_mutation/quality_mutation.gd" id="1_u0ku1"]
[ext_resource type="Resource" uid="uid://crmvc77bqax1y" path="res://entities/plants/resources/plant_parts/Flower1.tres" id="2_1b5fn"]
[ext_resource type="Resource" uid="uid://c0hr7icfkjkoi" path="res://entities/plants/resources/plant_parts/Flower2.tres" id="3_k2uo3"]
[ext_resource type="Resource" uid="uid://clkoc1iccts2w" path="res://entities/plants/resources/plant_parts/Flower3.tres" id="4_ywc6r"]
[ext_resource type="Resource" uid="uid://bd8yapi1pokj6" path="res://entities/plants/resources/plant_parts/Flower4.tres" id="5_fnfed"]
[resource]
script = ExtResource("1_u0ku1")
possible_parts = Array[ExtResource("1_f2p7y")]([ExtResource("2_1b5fn"), ExtResource("3_k2uo3"), ExtResource("4_ywc6r"), ExtResource("5_fnfed")])
part_amount = 2
metadata/_custom_type_script = "uid://bdobyk2j625lb"

View File

@@ -1,7 +1,19 @@
[gd_resource type="Resource" script_class="QuickMutation" load_steps=2 format=3 uid="uid://b04gaipu237sx"]
[gd_resource type="Resource" script_class="QuickMutation" format=3 uid="uid://b04gaipu237sx"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_68ssf"]
[ext_resource type="Script" uid="uid://bhtq0cbrgu58v" path="res://entities/plants/scripts/plant_mutation/quick_mutation.gd" id="1_hr7tm"]
[ext_resource type="Resource" uid="uid://brmd6d3l8trqs" path="res://entities/plants/resources/plant_parts/BottomLeaf1.tres" id="2_37ogi"]
[ext_resource type="Resource" uid="uid://cfr33014u7ig5" path="res://entities/plants/resources/plant_parts/BottomLeaf2.tres" id="3_4wjrs"]
[ext_resource type="Resource" uid="uid://cf70m1us8mfqp" path="res://entities/plants/resources/plant_parts/BottomLeaf3.tres" id="4_w4xgf"]
[ext_resource type="Resource" uid="uid://ctlmah4ohqp25" path="res://entities/plants/resources/plant_parts/BottomLeaf4.tres" id="5_7gtu2"]
[ext_resource type="Resource" uid="uid://b8o4q0hsm84ov" path="res://entities/plants/resources/plant_parts/BottomLeaf5.tres" id="6_yoj6x"]
[ext_resource type="Resource" uid="uid://bb33v756anesy" path="res://entities/plants/resources/plant_parts/BottomLeaf6.tres" id="7_fuf4y"]
[ext_resource type="Resource" uid="uid://cbqrl72y0d1yg" path="res://entities/plants/resources/plant_parts/BottomLeaf7.tres" id="8_25vee"]
[ext_resource type="Resource" uid="uid://dwppani7gyjl5" path="res://entities/plants/resources/plant_parts/BottomLeaf8.tres" id="9_hqe0q"]
[ext_resource type="Resource" uid="uid://dkta1u1u0efxk" path="res://entities/plants/resources/plant_parts/BottomLeaf9.tres" id="10_mxd37"]
[resource]
script = ExtResource("1_hr7tm")
possible_parts = Array[ExtResource("1_68ssf")]([ExtResource("2_37ogi"), ExtResource("3_4wjrs"), ExtResource("4_w4xgf"), ExtResource("5_7gtu2"), ExtResource("6_yoj6x"), ExtResource("7_fuf4y"), ExtResource("8_25vee"), ExtResource("9_hqe0q"), ExtResource("10_mxd37")])
part_amount = 2
metadata/_custom_type_script = "uid://bhtq0cbrgu58v"

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bfyafiewcrjln"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_enq8o"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_10bgv"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_10bgv")
region = Rect2(46, 30, 308, 671)
[resource]
script = ExtResource("1_enq8o")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(14, 263)
attaches = Array[Vector2]([Vector2(0, -251), Vector2(10, -85), Vector2(81, 80)])
bottom_attaches = Array[Vector2]([Vector2(-17, 293), Vector2(27, 295), Vector2(52, 300)])

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bgh8a4xwc5stw"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_ratl7"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_d45yo"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_d45yo")
region = Rect2(52, 724, 363, 448)
[resource]
script = ExtResource("1_ratl7")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(89, 180)
attaches = Array[Vector2]([Vector2(82, 84), Vector2(-27, 5), Vector2(-121, -64), Vector2(-94, -159)])
bottom_attaches = Array[Vector2]([Vector2(114, 191), Vector2(61, 187)])

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://d2vdf2sth2xjm"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_p8ox4"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_3h2vf"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_3h2vf")
region = Rect2(58, 1268, 141, 393)
[resource]
script = ExtResource("1_p8ox4")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(7, 156)
attaches = Array[Vector2]([Vector2(0, 52), Vector2(19, -149), Vector2(-10, -52)])
bottom_attaches = Array[Vector2]([Vector2(21, 161), Vector2(-7, 162)])

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://clruuysx80pnn"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_03in3"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_108r1"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_108r1")
region = Rect2(223, 1265, 200, 386)
[resource]
script = ExtResource("1_03in3")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(31, 158)
attaches = Array[Vector2]([Vector2(-8, 26), Vector2(-42, -156), Vector2(17, 54)])
bottom_attaches = Array[Vector2]([Vector2(49, 165), Vector2(19, 169)])

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://brmd6d3l8trqs"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_mvsqc"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_oqbgr"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_oqbgr")
region = Rect2(117, 1662, 70, 100)
[resource]
script = ExtResource("1_mvsqc")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(1, 32)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cfr33014u7ig5"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_14sjf"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_ud5ex"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_ud5ex")
region = Rect2(9, 1751, 100, 94)
[resource]
script = ExtResource("1_14sjf")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(10, 35)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cf70m1us8mfqp"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_xplyn"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_uj75q"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_uj75q")
region = Rect2(210, 1644, 112, 220)
[resource]
script = ExtResource("1_xplyn")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(26, 79)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://ctlmah4ohqp25"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_tv8sf"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_srnvv"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_srnvv")
region = Rect2(328, 1665, 118, 196)
[resource]
script = ExtResource("1_tv8sf")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-29, 81)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b8o4q0hsm84ov"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_5lgql"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_0b6yj"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_0b6yj")
region = Rect2(6, 1868, 101, 246)
[resource]
script = ExtResource("1_5lgql")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-21, 102)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bb33v756anesy"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_gcphf"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_tnhr7"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_tnhr7")
region = Rect2(100, 1930, 121, 181)
[resource]
script = ExtResource("1_gcphf")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(7, 68)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cbqrl72y0d1yg"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_k38pp"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_cwsfe"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_cwsfe")
region = Rect2(238, 1897, 80, 82)
[resource]
script = ExtResource("1_k38pp")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(12, 25)
type = 2
is_back = true
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dwppani7gyjl5"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_2m37y"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_pyvr6"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_pyvr6")
region = Rect2(347, 1935, 87, 89)
[resource]
script = ExtResource("1_2m37y")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-5, 25)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dkta1u1u0efxk"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_2r1e2"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_tv2v3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_tv2v3")
region = Rect2(281, 2022, 97, 94)
[resource]
script = ExtResource("1_2r1e2")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(11, 25)
type = 2
bottom_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://7hrdkl6bf3o4"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_peh48"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_o5tro"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_o5tro")
region = Rect2(518, 116, 147, 110)
[resource]
script = ExtResource("1_peh48")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-34, 2)
type = 1
is_back = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b68fyu1j5d6te"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_bxo74"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_fvydc"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_fvydc")
region = Rect2(716, 966, 212, 172)
[resource]
script = ExtResource("1_bxo74")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-66, 11)
attaches = Array[Vector2]([Vector2(-14, 39), Vector2(58, -39)])
type = 1

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://d2y7o2hc6ffei"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_wnxgs"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_smg8i"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_smg8i")
region = Rect2(487, 1206, 111, 164)
[resource]
script = ExtResource("1_wnxgs")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(28, 47)
attaches = Array[Vector2]([Vector2(4, 29)])
type = 1

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://civ4gr1c2pq7g"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1cr0i"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_h0d20"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_h0d20")
region = Rect2(753, 1188, 172, 191)
[resource]
script = ExtResource("1_1cr0i")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-19, 57)
attaches = Array[Vector2]([Vector2(6, 31), Vector2(1, -12)])
type = 1

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bqfocs6f0iypo"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_p4qfr"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_iibe2"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_iibe2")
region = Rect2(515, 1445, 123, 171)
[resource]
script = ExtResource("1_p4qfr")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-19, 57)
attaches = Array[Vector2]([Vector2(12, 16)])
type = 1
is_back = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://drml5dm8i3j3a"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_5xrel"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_0v6u4"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_0v6u4")
region = Rect2(708, 1421, 178, 204)
[resource]
script = ExtResource("1_5xrel")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(34, 75)
attaches = Array[Vector2]([Vector2(18, 21)])
type = 1

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b1t5nfwcln5vo"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_0mgvf"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_k1p2k"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_k1p2k")
region = Rect2(450, 1656, 194, 235)
[resource]
script = ExtResource("1_0mgvf")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(33, 85)
attaches = Array[Vector2]([Vector2(-6, 19), Vector2(-33, -25)])
type = 1

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b4s58a600q2rn"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_l4nmf"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_ifu40"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_ifu40")
region = Rect2(745, 1655, 214, 183)
[resource]
script = ExtResource("1_l4nmf")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-42, 53)
attaches = Array[Vector2]([Vector2(19, 3)])
type = 1
is_back = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dspugxsjw2aea"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_gpxi3"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_e0an0"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_e0an0")
region = Rect2(453, 1996, 156, 102)
[resource]
script = ExtResource("1_gpxi3")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(47, 30)
attaches = Array[Vector2]([Vector2(-11, 5)])
type = 1

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cnt38l2fmg8d7"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_wmuv5"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_4klgd"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_4klgd")
region = Rect2(723, 1895, 198, 194)
[resource]
script = ExtResource("1_wmuv5")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-49, 73)
attaches = Array[Vector2]([Vector2(18, 21)])
type = 1

View File

@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://ceisi5yyie7to"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1eil5"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_h27ow"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_h27ow")
region = Rect2(735, 104, 118, 109)
[resource]
script = ExtResource("1_1eil5")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(28, 5)
type = 1

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cxiu8frk04b5i"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_qrhlr"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_4au1t"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_4au1t")
region = Rect2(487, 242, 188, 176)
[resource]
script = ExtResource("1_qrhlr")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(39, 45)
attaches = Array[Vector2]([Vector2(6, 35), Vector2(-24, -34)])
type = 1

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://53p5g07e3pb4"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_tu2er"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_2wu38"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_2wu38")
region = Rect2(743, 246, 192, 185)
[resource]
script = ExtResource("1_tu2er")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-30, 56)
attaches = Array[Vector2]([Vector2(1, 27), Vector2(43, -54)])
type = 1
is_back = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cyfyodtfxne1w"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_sfan5"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_7ri8e"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_7ri8e")
region = Rect2(458, 495, 226, 204)
[resource]
script = ExtResource("1_sfan5")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(54, 70)
attaches = Array[Vector2]([Vector2(18, 6), Vector2(-55, -52)])
type = 1

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cuvtf4y1dspcp"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_l4h5t"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_yt05g"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_yt05g")
region = Rect2(728, 493, 203, 179)
[resource]
script = ExtResource("1_l4h5t")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-36, 59)
attaches = Array[Vector2]([Vector2(16, 27)])
type = 1
is_back = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://6jnbms553dyd"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_ixygn"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_62ciq"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_62ciq")
region = Rect2(446, 743, 234, 186)
[resource]
script = ExtResource("1_ixygn")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(67, 31)
attaches = Array[Vector2]([Vector2(-4, 14), Vector2(-63, -45)])
type = 1

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bkpe0b38m0prg"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1kyqm"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_4kt4t"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_4kt4t")
region = Rect2(714, 787, 187, 129)
[resource]
script = ExtResource("1_1kyqm")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-55, -5)
attaches = Array[Vector2]([Vector2(-18, 16), Vector2(55, 2)])
type = 1
is_back = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://31oq17bv1t4t"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_36y6q"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_qdh8q"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_qdh8q")
region = Rect2(442, 964, 199, 159)
[resource]
script = ExtResource("1_36y6q")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(67, 23)
attaches = Array[Vector2]([Vector2(13, 31), Vector2(-29, -14)])
type = 1

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://crmvc77bqax1y"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_3u7fo"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_23bbh"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_23bbh")
region = Rect2(1597, 5, 152, 159)
[resource]
script = ExtResource("1_3u7fo")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(49, 63)
type = 3
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://c0hr7icfkjkoi"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_bcreq"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_af12b"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_af12b")
region = Rect2(1746, 8, 116, 165)
[resource]
script = ExtResource("1_bcreq")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(23, 67)
type = 3
is_back = true
branch_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://clkoc1iccts2w"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_vlome"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_157wb"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_157wb")
region = Rect2(1884, 8, 83, 202)
[resource]
script = ExtResource("1_vlome")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(11, 72)
type = 3
branch_attachable = true

View File

@@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bd8yapi1pokj6"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_0uwmh"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_h3coc"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_h3coc")
region = Rect2(1995, 32, 103, 187)
[resource]
script = ExtResource("1_0uwmh")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-13, 76)
type = 3
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cxgw1vgket0fw"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_ajsfl"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_nif4i"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_nif4i")
region = Rect2(1108, 8, 123, 149)
[resource]
script = ExtResource("1_ajsfl")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(27, 42)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://c5gqwck2p5h5n"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_205mu"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_nlpf8"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_nlpf8")
region = Rect2(1281, 504, 72, 89)
[resource]
script = ExtResource("1_205mu")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-10, 34)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://c5fj1cw0f4mu6"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_nyyxg"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_y2fie"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_y2fie")
region = Rect2(1251, 600, 74, 95)
[resource]
script = ExtResource("1_nyyxg")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-16, 32)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dce788f0adauv"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_eaujg"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_lsafj"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_lsafj")
region = Rect2(1419, 499, 195, 198)
[resource]
script = ExtResource("1_eaujg")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-58, 75)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dd34dikqoynp3"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_faxmp"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_0me46"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_0me46")
region = Rect2(952, 728, 189, 168)
[resource]
script = ExtResource("1_faxmp")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(70, -55)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bynje6g2wvuvl"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_55x88"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_dmctu"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_dmctu")
region = Rect2(1178, 720, 110, 95)
[resource]
script = ExtResource("1_55x88")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(25, 0)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bd2op6q1masjt"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_uhia7"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_atmi3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_atmi3")
region = Rect2(1292, 810, 104, 95)
[resource]
script = ExtResource("1_uhia7")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-32, 5)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bvajuw0r47edw"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_761dd"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_3rcv4"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_3rcv4")
region = Rect2(1390, 745, 241, 143)
[resource]
script = ExtResource("1_761dd")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-86, 28)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://qb6bftgq0n6y"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_b4uc1"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_dc8tr"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_dc8tr")
region = Rect2(1230, 79, 81, 132)
[resource]
script = ExtResource("1_b4uc1")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(1, 48)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://ft112n57di0e"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_sabo0"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_uvvih"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_uvvih")
region = Rect2(1302, 15, 87, 114)
[resource]
script = ExtResource("1_sabo0")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-18, 46)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dwjj6qmcjhn68"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_fvj4t"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_akiip"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_akiip")
region = Rect2(926, 108, 226, 322)
[resource]
script = ExtResource("1_fvj4t")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(80, 133)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bkr70mstyf8pp"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_07tkv"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_uotjj"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_uotjj")
region = Rect2(1154, 230, 137, 215)
[resource]
script = ExtResource("1_07tkv")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(40, 74)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dcuwupmqt34ju"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_m3t4k"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_qfabu"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_qfabu")
region = Rect2(1306, 214, 107, 221)
[resource]
script = ExtResource("1_m3t4k")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-28, 91)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://djmidq7yq452i"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_jg4cg"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_chdp7"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_chdp7")
region = Rect2(1431, 134, 191, 287)
[resource]
script = ExtResource("1_jg4cg")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(-58, 109)
type = 2
base_attachable = true
bottom_attachable = true

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://wxqxm6d5twdh"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1f2ok"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_pu3mc"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_pu3mc")
region = Rect2(974, 502, 200, 162)
[resource]
script = ExtResource("1_1f2ok")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(73, 47)
type = 2
base_attachable = true
branch_attachable = true

View File

@@ -0,0 +1,17 @@
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://uoikjpno37bi"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_g38jy"]
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_unpmr"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
atlas = ExtResource("2_unpmr")
region = Rect2(1171, 488, 94, 104)
[resource]
script = ExtResource("1_g38jy")
texture = SubResource("AtlasTexture_mypt2")
root = Vector2(23, 37)
type = 2
is_back = true
base_attachable = true
branch_attachable = true

View File

@@ -1,17 +1,15 @@
@tool
extends Resource
class_name PlantArchetype
@export var archetype_name = Random.generate_random_word()
@export var texture_builder = TextureBuilder.new()
@export var archetype_name := Random.generate_random_word()
@export var plant_area_radius = 20
@export var plant_influence_radius = 100
@export var growing_time= 2
@export var growing_time = 2
@export var lifetime = 8
@export var base_score = 1
@export var seed_number = 2
@export var seed_random_loose = 1
@export var available_mutations : Array[PlantMutation] = [
@export var available_mutations: Array[PlantMutation] = [
AncientMutation.new(),
PrecociousMutation.new(),
QualityMutation.new(),
@@ -19,9 +17,7 @@ class_name PlantArchetype
]
static func get_all() -> Array[PlantArchetype]:
return [
PlantArchetype.new()
]
return [PlantArchetype.new()]
static func get_random() -> PlantArchetype:
return get_all().pick_random()

View File

@@ -18,6 +18,8 @@ enum State {PLANTED, GROWING, MATURE, DEAD}
@export var leafs = 0 # +1 score
@export var roots = 0 # +1 lifetime
# var texture_builder: TextureBuilder = preload("res://entities/plants/scripts/texture_builder/texture_builder.tres")
func _init(
_position : Vector2 = Vector2.ZERO,
_archetype : PlantArchetype = PlantArchetype.get_random(),
@@ -83,12 +85,6 @@ func get_state() -> State:
return State.GROWING
return State.MATURE
func get_plant_texture() -> Texture:
return archetype.texture_builder.build_plant_texture(self)
func get_seed_texture():
return archetype.texture_builder.build_seed_texture(random_seed)
func get_seed_number(state = get_state()):
var seed_number = archetype.seed_number if (state == State.MATURE or state == State.DEAD) else 0
@@ -111,4 +107,4 @@ func get_random_seed_income():
)
func disappear():
disappeared.emit(self)
disappeared.emit(self)

View File

@@ -3,6 +3,7 @@ class_name PlantMutation
@export var level : int = 1
var id : String : get = get_mutation_id
var name : String : get = get_mutation_name
func _init(_level : int = 1):
@@ -14,6 +15,10 @@ func get_icon() -> Texture:
func get_base_rarity() -> int:
return 0
func get_mutation_id() -> String:
printerr("Classe abstraite PlantMutation appelée")
return ""
func get_mutation_name() -> String:
printerr("Classe abstraite PlantMutation appelée")
return ""

View File

@@ -9,6 +9,9 @@ func get_icon() -> Texture:
func get_base_rarity() -> int:
return 0
func get_mutation_id() -> String:
return "ANCIENT"
func get_mutation_name() -> String:
return tr("ANCIENT")

View File

@@ -7,6 +7,9 @@ func get_icon() -> Texture:
func get_base_rarity() -> int:
return 0
func get_mutation_id() -> String:
return "PRECOCIOUS"
func get_mutation_name() -> String:
return tr("PRECOCIOUS")

View File

@@ -7,6 +7,9 @@ func get_icon() -> Texture:
func get_base_rarity() -> int:
return 0
func get_mutation_id() -> String:
return "QUALITY"
func get_mutation_name() -> String:
return tr("QUALITY")

View File

@@ -7,6 +7,9 @@ func get_icon() -> Texture:
func get_base_rarity() -> int:
return 0
func get_mutation_id() -> String:
return "QUICK"
func get_mutation_name() -> String:
return tr("QUICK")

View File

@@ -16,9 +16,9 @@ func update_plant_sprite(plant_data : PlantData, with_animation = false):
await %AnimationPlayer.animation_finished
%Sprite.flip_h = true if plant_data.random_seed%2 == 0 else false
%Sprite.texture = plant_data.get_plant_texture()
%Sprite.texture = PlantTextureBuilder.build_plant_texture(plant_data)
%PlantedSeed.texture = plant_data.get_seed_texture()
%PlantedSeed.texture = PlantTextureBuilder.build_seed_texture(plant_data.random_seed)
%PlantedSeed.visible = plant_data.get_state() == PlantData.State.PLANTED
# %PlantedSeed.region_rect = Rect2(

View File

@@ -0,0 +1,6 @@
extends Resource
class_name PartArchetypeAssociation
@export var bases: Array[PlantPart]
@export var branches: Array[PlantPart]
@export var branches_amount: int = 1

View File

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

View File

@@ -0,0 +1,18 @@
extends Node
@export var n_plants_to_generate: int
@export var space_between_plants: float
func _ready():
generate_plants();
func generate_plants():
for i in n_plants_to_generate:
print("Generate plant")
var plant_position := Vector2(i * space_between_plants, 0)
var plant_data: PlantData = PlantData.new(plant_position)
plant_data.day = plant_data.get_growing_time()
plant_data.mutations.append(plant_data.archetype.available_mutations.pick_random())
var plant: Plant = Plant.new(plant_data)
add_child(plant)
plant.global_position = plant_position

View File

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

View File

@@ -0,0 +1,5 @@
extends Resource
class_name PartMutationAssociation
@export var parts: Array[PlantPart]
@export var part_amount: int = 1

View File

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

View File

@@ -0,0 +1,26 @@
extends Resource
class_name PlantPart
enum PartType {BASE_PART, BRANCH_PART, LEAF_PART, FLOWER_PART}
@export var texture: Texture
@export var root: Vector2
@export var attaches: Array[Vector2]
@export var bottom_attaches: Array[Vector2]
@export var type: PartType
@export var is_back: bool
@export var base_attachable: bool
@export var bottom_attachable: bool
@export var branch_attachable: bool
func init(textute_arg: Texture, root_arg: Vector2, attaches_arg: Array[Vector2], bottom_attaches_arg: Array[Vector2], type_arg: PartType, is_back_arg: bool, base_attachable_arg: bool, bottom_attachable_arg: bool, branch_attachable_arg: bool) -> void:
texture = textute_arg
root = root_arg
attaches = attaches_arg
bottom_attaches = bottom_attaches_arg
type = type_arg
is_back = is_back_arg
base_attachable = base_attachable_arg
bottom_attachable = bottom_attachable_arg
branch_attachable = branch_attachable_arg

View File

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

View File

@@ -0,0 +1,83 @@
@tool
extends Sprite2D
class_name PlantPartScene
@export var part_name: String
@export_tool_button("Load resource") var load_resource_button = load_resource
@export var root: Node2D
@export var attaches: Node
@export var bottom_attaches: Node
@export var type: PlantPart.PartType
@export var is_back: bool
@export var base_attachable: bool
@export var bottom_attachable: bool
@export var branch_attachable: bool
@export_tool_button("Save as resource") var save_as_resource_button = save_as_resource
func load_resource():
var destination := "res://entities/plants/resources/plant_parts/" + part_name + ".tres"
print("Loading: ", part_name, " at: ", destination)
var plant_part = ResourceLoader.load(destination)
if plant_part is PlantPart:
root.position = plant_part.root
texture = plant_part.texture
var attaches_children := attaches.get_children()
for i in maxi(attaches_children.size(), plant_part.attaches.size()):
if i < attaches_children.size() && i < plant_part.attaches.size():
attaches_children[i].position = plant_part.attaches[i]
elif i >= attaches_children.size():
var new_child = Node2D.new()
new_child.name = "attach" + str(i)
new_child.position = plant_part.attaches[i]
attaches.add_child(new_child)
new_child.set_owner(self )
elif i >= plant_part.attaches.size():
attaches_children[i].free()
else:
printerr("Invalid code path")
var bottom_attaches_children := bottom_attaches.get_children()
for i in maxi(bottom_attaches_children.size(), plant_part.bottom_attaches.size()):
if i < bottom_attaches_children.size() && i < plant_part.bottom_attaches.size():
bottom_attaches_children[i].position = plant_part.bottom_attaches[i]
elif i >= bottom_attaches_children.size():
var new_child = Node2D.new()
new_child.name = "bottom_attach" + str(i)
new_child.position = plant_part.bottom_attaches[i]
bottom_attaches.add_child(new_child)
new_child.set_owner(self )
elif i >= plant_part.bottom_attaches.size():
bottom_attaches_children[i].free()
else:
printerr("Invalid code path")
type = plant_part.type
is_back = plant_part.is_back
base_attachable = plant_part.base_attachable
bottom_attachable = plant_part.bottom_attachable
branch_attachable = plant_part.branch_attachable
else:
printerr("Error loading ", part_name)
func save_as_resource():
var destination := "res://entities/plants/resources/plant_parts/" + part_name + ".tres"
print("Saving: ", part_name, " at: ", destination)
var attaches_vec2: Array[Vector2]
for attach in attaches.get_children():
attaches_vec2.append(attach.position)
var bottom_attaches_vec2: Array[Vector2]
for bottom_attach in bottom_attaches.get_children():
bottom_attaches_vec2.append(bottom_attach.position)
var plant_part = PlantPart.new()
plant_part.init(texture, root.position, attaches_vec2, bottom_attaches_vec2, type, is_back, base_attachable, bottom_attachable, branch_attachable)
var err := ResourceSaver.save(plant_part, destination)
if err != OK:
printerr("Error saving resource: ", error_string(err))
else:
plant_part.take_over_path(destination)

View File

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

View File

@@ -1,20 +1,158 @@
extends Resource
class_name TextureBuilder
extends Node
const PLACEHOLDER_SEED_TEXTURE : Texture = preload("res://entities/plants/assets/sprites/default/seed.png")
const PLACEHOLDER_MATURE_TEXTURE : Texture = preload("res://entities/plants/assets/sprites/default/mature.png")
const PLACEHOLDER_GROWING_TEXTURE : Texture = preload("res://entities/plants/assets/sprites/default/growing.png")
const IMAGE_WIDTH := 1000
const IMAGE_HEIGHT := 2000
const PLACEHOLDER_SEED_TEXTURE: Texture = preload("res://entities/plants/assets/sprites/default/seed.png")
const PLACEHOLDER_MATURE_TEXTURE: Texture = preload("res://entities/plants/assets/sprites/default/mature.png")
const PLACEHOLDER_GROWING_TEXTURE: Texture = preload("res://entities/plants/assets/sprites/default/growing.png")
func build_seed_texture(_random_seed : int) -> Texture:
# @export var parts_archetype_associations: Dictionary[PlantArchetype, PartArchetypeAssociation] TODO:: have the archetypes
@export var bases: Array[PlantPart]
@export var baby_bases: Array[PlantPart]
@export var branches: Array[PlantPart]
@export var n_branches: int = 2
@export var parts_mutation_associations: Dictionary[String, PartMutationAssociation]
var rng := RandomNumberGenerator.new()
func build_seed_texture(_random_seed: int) -> Texture:
return PLACEHOLDER_SEED_TEXTURE
func build_plant_texture(plant_data : PlantData) -> Texture:
func build_plant_texture(plant_data: PlantData) -> Texture:
rng.seed = plant_data.random_seed
var mature_texture: Texture = PLACEHOLDER_MATURE_TEXTURE
var mature_image: Image = Image.create_empty(IMAGE_WIDTH, IMAGE_HEIGHT, false, Image.FORMAT_RGBA8)
var mature_image_center: Vector2i = 0.5 * mature_image.get_size()
var branch_parts: Array[PlantPart]
var base_part: PlantPart
var available_base_attaches: Array[Vector2]
var available_base_bottom_attach: Array[Vector2]
var branch_attaches: Array[Vector2]
var branch_root: Array[Vector2]
var branch_parent_attach: Array[Vector2]
var parts_to_place: Array[PlantPart]
match plant_data.get_state():
PlantData.State.MATURE:
return PLACEHOLDER_MATURE_TEXTURE
print("Build mature texture")
# var plant_archetype := plant_data.archetype
if bases.size() == 0:
printerr("No base in archetype")
return mature_texture
# var base_part: PlantPart = pick_random(parts_archetype_associations[plant_archetype].bases)
base_part = pick_random(bases)
var base_image = base_part.texture.get_image()
var base_image_center: Vector2i = 0.5 * base_image.get_size()
mature_image.blend_rect(base_image, Rect2i(Vector2i.ZERO, base_image.get_size()), mature_image_center - base_image_center - Vector2i(base_part.root))
if branches.size() == 0:
printerr("No branches in archetype")
# var branch_parts: Array[PlantPart] = parts_archetype_associations[plant_archetype].branches
for i in n_branches:
branch_parts.append(pick_random(branches))
for m in plant_data.mutations:
print("mutations: ", m.id)
var association: PartMutationAssociation = parts_mutation_associations[m.id]
var mutation_possible_parts := association.parts
for p in association.part_amount:
parts_to_place.append(pick_random(mutation_possible_parts))
PlantData.State.GROWING:
return PLACEHOLDER_GROWING_TEXTURE
print("Build growing texture")
# var plant_archetype := plant_data.archetype
if baby_bases.size() == 0:
printerr("No baby base in archetype")
return mature_texture
# var base_part: PlantPart = pick_random(parts_archetype_associations[plant_archetype].baby_bases)
base_part = pick_random(baby_bases)
var base_image = base_part.texture.get_image()
var base_image_center: Vector2i = 0.5 * base_image.get_size()
mature_image.blend_rect(base_image, Rect2i(Vector2i.ZERO, base_image.get_size()), mature_image_center - base_image_center - Vector2i(base_part.root))
for m in plant_data.mutations:
print("mutations: ", m.id)
var association: PartMutationAssociation = parts_mutation_associations[m.id]
var mutation_possible_parts := association.parts
for p in ceil(0.5 * association.part_amount):
parts_to_place.append(pick_random(mutation_possible_parts))
_:
return null
print("Not handled state")
return null
available_base_attaches = base_part.attaches.duplicate()
available_base_bottom_attach = base_part.bottom_attaches.duplicate()
assert(branch_parts.size() <= base_part.attaches.size(),
str("More branches (", branch_parts.size(), ") than base attaches (", base_part.attaches.size(), ")"))
for branch in branch_parts:
if available_base_attaches.size() == 0:
break
var ind: int = rng.randi_range(0, available_base_attaches.size() - 1)
var attach: Vector2 = available_base_attaches.pop_at(ind)
var branch_image: Image = branch.texture.get_image()
var branch_image_center: Vector2i = 0.5 * branch_image.get_size()
mature_image.blend_rect(branch_image, Rect2i(Vector2i.ZERO, branch.texture.get_size()), mature_image_center - branch_image_center + Vector2i(attach - branch.root - base_part.root))
for branch_attach in branch.attaches:
branch_attaches.append(branch_attach)
branch_root.append(branch.root)
branch_parent_attach.append(attach)
if parts_to_place.size() > branch_attaches.size() + base_part.attaches.size() - branch_parts.size():
printerr("ERROR generating : Parts to place : ", parts_to_place.size(),
"; Branch Attaches : ", branch_attaches.size(),
"; Base attaches : ", base_part.attaches.size(),
"; Branch parts : ", branch_parts.size())
for part: PlantPart in parts_to_place:
print("create part")
var attach: Vector2
var parent_root: Vector2
var chosen_attach_type: int = 0
var attachables: Array[int]
if part.base_attachable && available_base_attaches.size() > 0:
attachables.append(1)
if part.bottom_attachable && available_base_bottom_attach.size() > 0:
attachables.append(2)
if part.branch_attachable && branch_attaches.size() > 0:
attachables.append(3)
# assert(attachables.size() > 0)
if attachables.size() == 0:
print("No attach available")
continue
chosen_attach_type = pick_random(attachables)
if chosen_attach_type == 1: # base attach
var ind := rng.randi_range(0, available_base_attaches.size() - 1)
attach = available_base_attaches.pop_at(ind)
parent_root = base_part.root
elif chosen_attach_type == 2: # bottom
var ind := rng.randi_range(0, available_base_bottom_attach.size() - 1)
attach = available_base_bottom_attach.pop_at(ind)
parent_root = base_part.root
elif chosen_attach_type == 3: # branch
var ind := rng.randi_range(0, branch_attaches.size() - 1)
attach = branch_attaches.pop_at(ind) - branch_root.pop_at(ind) + branch_parent_attach.pop_at(ind)
parent_root = base_part.root
var part_image: Image = part.texture.get_image()
var part_image_center: Vector2i = 0.5 * part_image.get_size()
var relative_root_centered_pos: Vector2 = Vector2(mature_image_center - part_image_center) - part.root
mature_image.blend_rect(part_image, Rect2i(Vector2i.ZERO, part.texture.get_size()), relative_root_centered_pos + attach - parent_root)
if rng.randi() % 2 == 0:
mature_image.flip_x()
mature_texture = ImageTexture.create_from_image(mature_image)
return mature_texture
func pick_random(array: Array):
return array[rng.randi_range(0, array.size() - 1)]

View File

@@ -0,0 +1,27 @@
[gd_scene format=3 uid="uid://cfsq3hma8djk3"]
[ext_resource type="Script" uid="uid://daod4korkrm2r" path="res://entities/plants/scripts/texture_builder/part_assembler.gd" id="1_wqioj"]
[ext_resource type="Texture2D" uid="uid://dr72xhc07i56e" path="res://stages/terrain/region/assets/textures/moss_biome/moss_contamination_atlas_texture.png" id="2_jldtq"]
[sub_resource type="AtlasTexture" id="AtlasTexture_jldtq"]
atlas = ExtResource("2_jldtq")
region = Rect2(536, 22.5, 210, 210)
[node name="TestSprites" type="Node2D" unique_id=1624731692]
script = ExtResource("1_wqioj")
n_plants_to_generate = 3
space_between_plants = 125.0
[node name="Camera2D" type="Camera2D" parent="." unique_id=628954249]
position = Vector2(123, -46)
[node name="MossContaminationAtlasTexture" type="Sprite2D" parent="." unique_id=1497811487]
position = Vector2(255, -66)
texture = SubResource("AtlasTexture_jldtq")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=143026861]
texture_repeat = 2
position = Vector2(46, -67)
texture = SubResource("AtlasTexture_jldtq")
region_enabled = true
region_rect = Rect2(0, 0, 210, 210)

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/robot.png-17ad80b7e526843a55ea7e95e3e071cb.ct
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -51,7 +51,7 @@ func get_description() -> String:
return tr("PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE") % plant_name
func get_icon() -> Texture2D:
return plant_archetype.texture_builder.build_seed_texture(random_seed)
return PlantTextureBuilder.build_seed_texture(random_seed)
func get_energy_used() -> int:
return 1

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Interface sans boutons.png-8803a272a5ab9636d0
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Tablette info.png-1bbdbf5d41cf3eed26f09b419e1
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/SeedingPlanetsLogo.png-21df48940674276ef147ab
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@@ -21,6 +21,7 @@ msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
modulate_color_glyphs=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true

View File

@@ -28,6 +28,7 @@ buses/default_bus_layout=""
[autoload]
Pointer="*res://gui/pointer/pointer.tscn"
PlantTextureBuilder="*uid://b8gqdgabrjaml"
AudioManager="*res://common/audio_manager/audio_manager.tscn"
GameInfo="*res://common/game_info/game_info.gd"
Pause="*res://gui/pause/pause.tscn"

View File

@@ -66,6 +66,7 @@ blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false