From ad18793543bbf3ca1766bf43f2da8bff9e454fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=91=D0=B4=D0=BE=D1=80=20=D0=92=D0=B5=D1=81=D0=B5?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2?= Date: Mon, 7 Oct 2024 00:05:10 +0500 Subject: [PATCH] Animations improved --- assets/sprites/atlases/plants/peashooter.png | Bin 9485 -> 4818 bytes assets/sprites/atlases/plants/potato_mine.png | Bin 10610 -> 8826 bytes assets/sprites/atlases/plants/snow_pea.png | Bin 6841 -> 6398 bytes assets/sprites/atlases/plants/spikeweed.png | Bin 3195 -> 3078 bytes assets/sprites/atlases/plants/sunflower.png | Bin 8279 -> 6733 bytes assets/sprites/atlases/plants/wallnut.png | Bin 18851 -> 7108 bytes resources/animations/plants/aloe.res | Bin 674 -> 853 bytes resources/animations/plants/peashooter.res | Bin 865 -> 854 bytes resources/animations/plants/potato_mine.res | Bin 0 -> 876 bytes resources/animations/plants/snowpea.res | Bin 865 -> 867 bytes resources/animations/plants/spikeweed.res | Bin 0 -> 903 bytes resources/animations/plants/sunflower.res | Bin 0 -> 817 bytes resources/animations/plants/wallnut.res | Bin 0 -> 766 bytes resources/plants/PotatoMine.tres | 2 +- resources/plants/Sunflower.tres | 6 +- resources/plants/Wallnut.tres | 6 +- scenes/entities/plants/aloe.tscn | 70 +++++++- scenes/entities/plants/peashooter.tscn | 66 +++++++- scenes/entities/plants/potato_mine.tscn | 156 +++++++----------- scenes/entities/plants/snowpea.tscn | 33 +++- scenes/entities/plants/spikeweed.tscn | 128 ++++---------- scenes/entities/plants/sunflower.tscn | 131 ++++++--------- scenes/entities/plants/wallnut.tscn | 137 +++++---------- scenes/templates/plant_template.tscn | 3 + scripts/components/level/PoolContainer.cs | 30 +++- scripts/components/plants/RuntimePlantData.cs | 2 +- .../plants/behaviours/AloeBehaviour.cs | 28 ++-- .../plants/behaviours/BaseBehaviour.cs | 11 ++ .../plants/behaviours/HpBasedBehaviour.cs | 18 ++ .../plants/behaviours/PeashooterBehaviour.cs | 10 +- .../plants/behaviours/PotatomineBehaviour.cs | 10 +- .../plants/behaviours/SpikeweedBehaviour.cs | 6 +- .../plants/behaviours/SunflowerBehaviour.cs | 7 +- .../plants/behaviours/WallnutBehaviour.cs | 31 ---- scripts/resources/PlantResource.cs | 4 +- 35 files changed, 430 insertions(+), 465 deletions(-) create mode 100644 resources/animations/plants/potato_mine.res create mode 100644 resources/animations/plants/spikeweed.res create mode 100644 resources/animations/plants/sunflower.res create mode 100644 resources/animations/plants/wallnut.res create mode 100644 scripts/components/plants/behaviours/BaseBehaviour.cs create mode 100644 scripts/components/plants/behaviours/HpBasedBehaviour.cs delete mode 100644 scripts/components/plants/behaviours/WallnutBehaviour.cs diff --git a/assets/sprites/atlases/plants/peashooter.png b/assets/sprites/atlases/plants/peashooter.png index a7ad42d3d5cfc594d16bbce2265fd1e7314db2e7..dcd4665893f47de6f027b57cc34d061e30802099 100644 GIT binary patch literal 4818 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 literal 9485 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 literal 10610 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 ZL8df})CwD60EQ?*@-P+Y;-|*%{vZB*bcX-{ diff --git a/assets/sprites/atlases/plants/snow_pea.png b/assets/sprites/atlases/plants/snow_pea.png index ff1f19b35afdca089751f321c0241ee8723644b8..69493489c17527e594a048e50cd0e5fa2928de24 100644 GIT binary patch literal 6398 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 H_7VRBT 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 literal 3195 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 diff --git a/assets/sprites/atlases/plants/sunflower.png b/assets/sprites/atlases/plants/sunflower.png index e3f19ec1234a0146347722996443e9dcec744e55..757fd22af2e6803910a682a00eeef299581f1656 100644 GIT binary patch literal 6733 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 literal 18851 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 literal 674 zcmV;T0$u%5Q$s@n000005C8x#2mkv>Wl$2YZY($5&!@F79DL0LI6Vm zNdUJhM`ZXvik5R^icYdla488VrW%u!`+w$qZAWOJfa~jt@qc3Af`f@9!2-pz-rjf* zqI`9)7Z?1;{Ez&H{y+Qy6`O1`IcKqTtEtY{6r~w^<~D@@pUpL1Zq=P|V@#!(NoT`R6INX0jCV|6YyxzhiTb0x27N=XUY#?drQ^1r|-U$0L5w?shv1O5kN za62R%P1`yGGB#BHV>snbz!I*bH7=ZvuA|ObAc*X{J2V%Ba}DK+3Xq0pnvLagfba%P=f9L8LqpOuP5S)Ofq;vsaZy7|)rXa9DHr(uZ>qL71g^$8ic{N3~-Gezhq6aHzU4Enfp&tX>E6-tI5G1;gT=R6xBC*4IELW&057`>i~D zpC^Kl;PA%w1w-gwX)T(LRkQ~~YJ_2CJ>h7demsi%8}Xl(Qz-i`d!=!l_MM?bNCYb4 zY1~R=+6g!}s-ywJjeg7XJ1BFYx&?3mufCKNQ%QB1lsDsnyq8sNEyfH*8!-*RSBwf# IPEu1tL(51io&W#< diff --git a/resources/animations/plants/peashooter.res b/resources/animations/plants/peashooter.res index d1d23070f02a4f15ec2b5e94d1b073dd560626e3..bdc405218402c264251b6373e95fcdac450e5378 100644 GIT binary patch literal 854 zcmV-c1F8H{Q$s@n000005C8xx2><{-0{{RhwJ-f(D+r|-05%|PKp?9&9RNIF0fNK; z$iSdrM*@HWz)WhDZ}Pr-w~@~DOB-1b+Cc$AL$6Fb=#lJx12YWK6h%Q06yJ~5U;q2t z6jT6K09*j9{olmTIWkr+*_XDM)Go#-Co9wc8ZW6RlU9SUEz>@cFyk&xxuqO&&f8K^ zNyQE6Joyjc|A7T2Bp5sMo|oN*c! z;l-5ex!B~c|25}KZr79&;-glH0bN%DwfvxuuH^B`8|)2460kvEvjQ|-K z7nvM2Zxs|15+6?|0)oTgSRW;kjSKf?ljCe2G?@uAalCGlprp-{PW6EHI_FokdUT6uO_q$Jby8e#_G{F9Pr#3JwDvTOh)?B3Bi~+;v zFuQ?Vu{u6AVRAl;myuUTN<@SC$E zITs}HpGw59kB~_U=U!$?9w-@a8v#_IWZW&4)R@-j zoKUF24B6m0_JI4IBahE^2(kkc;e6NOEPzRe_R*cm`bQ5J58DxQ*Kt@Bp;XS>yl{t| zwG>+c!h>``=r|AYCqGyH44CHFe;r#9LzOBK zq|%^VASs!=>Vdr^dX;(*EMzr9y(avs0fj&pjqZVfVsixcNDg~>K+Z)X0KrljDQ2Ud gVU+Qeuo~W0|0bz*YL`br02&Y)hpiHT3{q1=LnIA#asU7T literal 865 zcmV-n1D^a+Q$s@n000005C8xl2><{|0{{RhwJ-f(9|-*!0QO*SKQOB%9l(H{l3T(h zRRib!TUrVVJl?2`$b0U+X~6n7NkRfwRnWpcAx41uUP&-(G}(8Uj^+RV|NsB{Yh~7^ zR{&T5UjY3AIr|R*EzXcHYQ?s)y<%qZHMdB4{{OhjG+DG61Z{aXOMKYI@yQ)ysB_kK zf>b8%Hzmvei2n!}tfXidp^%{DqPf%MJ%I7`Y7eIT&-fqU|K>k{KkM9y$SMA3zP*@* zLC#z(rrX9eP17_@k|arzB(;3=qEy5YQmxYXR&nUI0ah9TXC5}e8 zb~eV?mR;~!Jhzs6NpAX|bH<`($rvRb3e<*A3sq~SVt&d~D@v^vMow9K4RUdh{}r15 z6Xz{k2`HXAsy?3%oMDgiV>snWLYJkZ4L6gHuA>sCdMXIm948#U@*h^c16X{FU&mj>(B4nC$=>LH4uWG}e!pld zr`W@BcmI#$MldQMsX&y=*R|YG*%+J4I^ZLteLKmF=2A`LFo7u=y##^Nrq1=3Phva( r>Y4{2iBzo=^HR?>%5DXC!*|txOG-MmN1|64NoanP)eDmWQd2`iv>=*c diff --git a/resources/animations/plants/potato_mine.res b/resources/animations/plants/potato_mine.res new file mode 100644 index 0000000000000000000000000000000000000000..63e274ff1df58a5de567a1d660ad35942a0d2826 GIT binary patch literal 876 zcmV-y1C#txQ$s@n000005C8yH3jhFA0{{RhwJ-f(Rti-b0A?R*KQL{S4k8IG@I(?B zqa%1#A!cg%^aP7U?v8tJg0R-2+!LcIeOXt$M^?@FsZy$s~@BP0?ymB8xlO+ z($>;{%YOo$1@j}0AR#)4eO5zGm{j)La!L$ua)ngCDNqANFo@NOvOe+fvHsfgF;NN65^OjOjMQVLia&b|0;FP)x2dcI8`Y1SD@4n>U1EgfXb+W zO&OvQQjn6AhB1%=nVFfo4HAIF6jO6VDnbyMKtx7HM9WDED&+erU?iAMr+8Y<%;+R4LD&9@HK*{KP1S<-CmoHDZ-Ry zIZHuJk0*ur8ekDQfB+o6oCtRc*YXNUbwBn>aQPf*Zqm3>`6m$Ip@bKac(TtMShwdv z+hQd^p_AF~Y#uyEzfVB0zyK9kvJiLGBo2u|Ns9_0ayT90Ac_SA2kZ(?SBKDI77}T78~0( ziyOw->>}m)-*b{`GHEvl-16*Dd|HR`$sOa!;mqw6kyPAo%FurR{}GgMcwQo47->0a z?mT%VFuq>y!IA$J|2zLR|2KaVZKiamDWu~O|1sZQ4bvcRCm7T2qN=KYs;VlAq9}@@ zTE3Z4O5zl`Q|01va>D>0^~&vJA#2<-O72;lC8;L`6HUo>w#HhwW$R4?wk65X%qx)GAWz1dmhZUT;ubr&*z;Lf7JBNl2XQRnzI8GaXEEX7FKMHq7SPXva zQ>&E`fV-%HT{0sgqaY1qz{h~K1|LZn2)N93e}l7Z{So_y!S%;~yzozo7MBKjBj9C2LlY;T`mtf9E_$O8^B)?4KLt(JsVC#c4=8N(i-23VT#=K}d5d0b4Zk0)fQFN$ZjD>$L=p>o|5Qd2`iyv|9sid3Gp1t;_i2j&am*=5~roD(*LB=)c4N1124w3lK1nxSTY1 zqC68AUoZC{$$yLgod25t0RGLC?lg&bJmNp*+pA$3#zfn72qBBLNBDP$P~kOGkrsVOTy>269 zL#=V1H}0sPL&J~3S`WS-;V1wzhxC!2DfI{J8RpktW||*=Qb=3|$hUKb7b5E`wm-aS z(I1#Nb?T=KD0R|1jhKIE#QiC1vQoVo_x(`9vR}lNL-!o5yQ1PyD2$IEDhFpu}Tn7Y>sR_5`Mf9AkIZ100F67K4wUtA*uf=^@i{3 ZFG*_f+SN-Ar~|tY>}FC??g>&;Lqj6Tc9#GE diff --git a/resources/animations/plants/spikeweed.res b/resources/animations/plants/spikeweed.res new file mode 100644 index 0000000000000000000000000000000000000000..f02edf72fcd31c8dfddeccc26dae9839495cd34b GIT binary patch literal 903 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 literal 0 HcmV?d00001 diff --git a/resources/plants/PotatoMine.tres b/resources/plants/PotatoMine.tres index c48f18e..bc1d045 100644 --- a/resources/plants/PotatoMine.tres +++ b/resources/plants/PotatoMine.tres @@ -9,6 +9,6 @@ script = ExtResource("1_33j6b") Cost = 25 Scene = ExtResource("2_ig2ti") ReloadTime = 25.0 -StartReloadTime = 0.0 +ReloadProgress = 0.0 Preview = ExtResource("1_xk2pg") Layer = 1 diff --git a/resources/plants/Sunflower.tres b/resources/plants/Sunflower.tres index 204e8ea..2b499a4 100644 --- a/resources/plants/Sunflower.tres +++ b/resources/plants/Sunflower.tres @@ -1,14 +1,14 @@ [gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://drm42f48urvc4"] [ext_resource type="Texture2D" uid="uid://iw75j816gbc" path="res://assets/sprites/plants/sunflower.tres" id="1_8rd5i"] -[ext_resource type="PackedScene" uid="uid://hsllvtm3q34d" path="res://scenes/entities/plants/sunflower.tscn" id="2_e5o45"] +[ext_resource type="PackedScene" uid="uid://bg7lomiorxo2c" path="res://scenes/entities/plants/sunflower.tscn" id="2_gcyr5"] [ext_resource type="Script" path="res://scripts/resources/PlantResource.cs" id="3_vt4jc"] [resource] script = ExtResource("3_vt4jc") Cost = 50 -Scene = ExtResource("2_e5o45") +Scene = ExtResource("2_gcyr5") ReloadTime = 5.0 -StartReloadTime = 0.0 +ReloadProgress = 1.0 Preview = ExtResource("1_8rd5i") Layer = 1 diff --git a/resources/plants/Wallnut.tres b/resources/plants/Wallnut.tres index c38ae93..c975f37 100644 --- a/resources/plants/Wallnut.tres +++ b/resources/plants/Wallnut.tres @@ -2,13 +2,13 @@ [ext_resource type="Texture2D" uid="uid://g2oppl54efja" path="res://assets/sprites/plants/Wallnut.tres" id="1_2akap"] [ext_resource type="Script" path="res://scripts/resources/PlantResource.cs" id="1_27l0t"] -[ext_resource type="PackedScene" uid="uid://dh6rm7o3taaek" path="res://scenes/entities/plants/wallnut.tscn" id="2_l87er"] +[ext_resource type="PackedScene" uid="uid://bq7imkpr2yqyr" path="res://scenes/entities/plants/wallnut.tscn" id="2_rkn3h"] [resource] script = ExtResource("1_27l0t") Cost = 50 -Scene = ExtResource("2_l87er") +Scene = ExtResource("2_rkn3h") ReloadTime = 20.0 -StartReloadTime = 0.0 +ReloadProgress = 0.0 Preview = ExtResource("1_2akap") Layer = 1 diff --git a/scenes/entities/plants/aloe.tscn b/scenes/entities/plants/aloe.tscn index 37fc086..9b0b8ec 100644 --- a/scenes/entities/plants/aloe.tscn +++ b/scenes/entities/plants/aloe.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://bw1w8jp0yeypy"] +[gd_scene load_steps=18 format=3 uid="uid://bw1w8jp0yeypy"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_n25yi"] [ext_resource type="Texture2D" uid="uid://b6tyoa5htapir" path="res://assets/sprites/atlases/plants/aloe.png" id="2_iup5p"] @@ -19,12 +19,67 @@ tracks/0/keys = { "update": 1, "values": [0] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("AnimationTree:parameters/conditions/heal") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_wlien"] _data = { "RESET": SubResource("Animation_vknky") } +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_c25ew"] +animation = &"aloe/heal" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6dmta"] +animation = &"aloe/idle" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7tkf5"] +animation = &"aloe/idle_used" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8bc4q"] +animation = &"aloe/recharge" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gi6e0"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_l1t7h"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_cut4s"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_um4ov"] +advance_mode = 2 +advance_condition = &"heal" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4kdc0"] +advance_mode = 2 +advance_condition = &"charged" + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_bldox"] +states/aloe_heal/node = SubResource("AnimationNodeAnimation_c25ew") +states/aloe_heal/position = Vector2(530, 41) +states/aloe_idle/node = SubResource("AnimationNodeAnimation_6dmta") +states/aloe_idle/position = Vector2(359, 100) +states/aloe_idle_used/node = SubResource("AnimationNodeAnimation_7tkf5") +states/aloe_idle_used/position = Vector2(710, 105) +states/aloe_recharge/node = SubResource("AnimationNodeAnimation_8bc4q") +states/aloe_recharge/position = Vector2(530, 171) +transitions = ["Start", "aloe_idle", SubResource("AnimationNodeStateMachineTransition_gi6e0"), "aloe_heal", "aloe_idle_used", SubResource("AnimationNodeStateMachineTransition_l1t7h"), "aloe_recharge", "aloe_idle", SubResource("AnimationNodeStateMachineTransition_cut4s"), "aloe_idle", "aloe_heal", SubResource("AnimationNodeStateMachineTransition_um4ov"), "aloe_idle_used", "aloe_recharge", SubResource("AnimationNodeStateMachineTransition_4kdc0")] +graph_offset = Vector2(-78.082, -71.7578) + [sub_resource type="RectangleShape2D" id="RectangleShape2D_oe0dc"] size = Vector2(22, 32) @@ -42,17 +97,20 @@ libraries = { "": SubResource("AnimationLibrary_wlien"), "aloe": ExtResource("3_3sp3b") } -autoplay = "aloe/idle" -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] -shape = SubResource("RectangleShape2D_oe0dc") +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeStateMachine_bldox") +parameters/conditions/charged = false +parameters/conditions/heal = false -[node name="Behaviour" type="Node" parent="." index="3" node_paths=PackedStringArray("_player")] +[node name="Behaviour" type="Node" parent="." index="3"] script = ExtResource("4_55asm") -_player = NodePath("../AnimationPlayer") [node name="Timer" type="Timer" parent="Behaviour" index="0"] wait_time = 15.0 one_shot = true +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] +shape = SubResource("RectangleShape2D_oe0dc") + [connection signal="timeout" from="Behaviour/Timer" to="Behaviour" method="OnTimeout"] diff --git a/scenes/entities/plants/peashooter.tscn b/scenes/entities/plants/peashooter.tscn index 6b860c7..6eb42fb 100644 --- a/scenes/entities/plants/peashooter.tscn +++ b/scenes/entities/plants/peashooter.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://dy41q1kxray5t"] +[gd_scene load_steps=19 format=3 uid="uid://dy41q1kxray5t"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_pyk3o"] [ext_resource type="Texture2D" uid="uid://cksryh4w5dbbx" path="res://assets/sprites/atlases/plants/peashooter.png" id="2_14qlx"] @@ -9,29 +9,73 @@ [ext_resource type="Script" path="res://scripts/components/plants/Eyesight.cs" id="7_2bki8"] [ext_resource type="Script" path="res://scripts/components/plants/PlantEyesightLimiter.cs" id="8_nl4jc"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7xnh"] -size = Vector2(20, 44) +[sub_resource type="Animation" id="Animation_a2y0j"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ipp6b"] +_data = { +"RESET": SubResource("Animation_a2y0j") +} + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_34v85"] +animation = &"peashooter/idle" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_u4o2k"] +animation = &"peashooter/shoot" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_70n3m"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2lwpg"] +advance_mode = 2 +advance_condition = &"ready" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_k61yr"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_13o7y"] +states/peashooter_idle/node = SubResource("AnimationNodeAnimation_34v85") +states/peashooter_idle/position = Vector2(420, 92) +states/peashooter_shoot/node = SubResource("AnimationNodeAnimation_u4o2k") +states/peashooter_shoot/position = Vector2(674, 82) +transitions = ["Start", "peashooter_idle", SubResource("AnimationNodeStateMachineTransition_70n3m"), "peashooter_idle", "peashooter_shoot", SubResource("AnimationNodeStateMachineTransition_2lwpg"), "peashooter_shoot", "peashooter_idle", SubResource("AnimationNodeStateMachineTransition_k61yr")] [sub_resource type="SegmentShape2D" id="SegmentShape2D_8iovl"] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7xnh"] +size = Vector2(20, 44) + [node name="Peashooter" instance=ExtResource("1_pyk3o")] _maxHP = 100 [node name="Sprite2D" parent="." index="0"] texture = ExtResource("2_14qlx") -hframes = 2 -vframes = 10 -frame = 6 +hframes = 10 +vframes = 2 [node name="AnimationPlayer" parent="." index="1"] libraries = { +"": SubResource("AnimationLibrary_ipp6b"), "peashooter": ExtResource("3_8lrhp") } autoplay = "peashooter/idle" -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] -position = Vector2(0, 5) -shape = SubResource("RectangleShape2D_r7xnh") +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeStateMachine_13o7y") +parameters/conditions/ready = false [node name="Shooter" type="Marker2D" parent="." index="3" node_paths=PackedStringArray("_timer")] position = Vector2(12, -4) @@ -60,3 +104,7 @@ shape = SubResource("SegmentShape2D_8iovl") script = ExtResource("8_nl4jc") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." index="6"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] +position = Vector2(0, 5) +shape = SubResource("RectangleShape2D_r7xnh") diff --git a/scenes/entities/plants/potato_mine.tscn b/scenes/entities/plants/potato_mine.tscn index e4169ef..7f0e2a2 100644 --- a/scenes/entities/plants/potato_mine.tscn +++ b/scenes/entities/plants/potato_mine.tscn @@ -1,91 +1,55 @@ -[gd_scene load_steps=14 format=3 uid="uid://b5x35v3w2u8dx"] +[gd_scene load_steps=20 format=3 uid="uid://b5x35v3w2u8dx"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_dj7ul"] [ext_resource type="Texture2D" uid="uid://c77o6ba0mw7a3" path="res://assets/sprites/atlases/plants/potato_mine.png" id="2_sneas"] [ext_resource type="Script" path="res://scripts/components/plants/ExplosionComponent.cs" id="3_2hd5y"] +[ext_resource type="AnimationLibrary" uid="uid://bjlbdvr6f0r7e" path="res://resources/animations/plants/potato_mine.res" id="3_7tqmj"] [ext_resource type="Script" path="res://scripts/components/plants/behaviours/PotatomineBehaviour.cs" id="4_twx65"] -[sub_resource type="Animation" id="Animation_lpsw3"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6uutc"] +animation = &"potato_mine/explode" -[sub_resource type="Animation" id="Animation_n8bxp"] -resource_name = "idle_primed" -length = 2.00001 -loop_mode = 1 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.333333, 0.666667, 1, 1.33333, 1.66667), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), -"update": 1, -"values": [0, 3, 6, 9, 12, 15] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_qdgub"] +animation = &"potato_mine/idle_primed" -[sub_resource type="Animation" id="Animation_vmabh"] -resource_name = "idle_unprimed" -length = 4.00001 -loop_mode = 1 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.75, 3.91667), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [1, 7, 1] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_cohta"] +animation = &"potato_mine/idle_unprimed" -[sub_resource type="Animation" id="Animation_ekg7n"] -resource_name = "prime" -length = 0.583342 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [2, 5, 8, 11, 14, 17, 20] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_j42h1"] +animation = &"potato_mine/prime" -[sub_resource type="AnimationLibrary" id="AnimationLibrary_4kofx"] -_data = { -"RESET": SubResource("Animation_lpsw3"), -"idle_primed": SubResource("Animation_n8bxp"), -"idle_unprimed": SubResource("Animation_vmabh"), -"prime": SubResource("Animation_ekg7n") -} +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ttnxb"] +advance_mode = 2 -[sub_resource type="RectangleShape2D" id="RectangleShape2D_qfqko"] -size = Vector2(15, 27) +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8nvnf"] +advance_mode = 2 +advance_condition = &"primed" -[sub_resource type="RectangleShape2D" id="RectangleShape2D_ti2g4"] -size = Vector2(34, 19) +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_q0arb"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_dikhn"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_lqd1d"] +advance_mode = 2 +advance_condition = &"explode" + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_nfn7b"] +states/End/position = Vector2(1104, 75.168) +states/Start/position = Vector2(46, 130) +states/potato_mine_explode/node = SubResource("AnimationNodeAnimation_6uutc") +states/potato_mine_explode/position = Vector2(934.656, 75.168) +states/potato_mine_idle_primed/node = SubResource("AnimationNodeAnimation_qdgub") +states/potato_mine_idle_primed/position = Vector2(703.656, 75.168) +states/potato_mine_idle_unprimed/node = SubResource("AnimationNodeAnimation_cohta") +states/potato_mine_idle_unprimed/position = Vector2(271.656, 75.168) +states/potato_mine_prime/node = SubResource("AnimationNodeAnimation_j42h1") +states/potato_mine_prime/position = Vector2(490.656, 75.168) +transitions = ["Start", "potato_mine_idle_unprimed", SubResource("AnimationNodeStateMachineTransition_ttnxb"), "potato_mine_idle_unprimed", "potato_mine_prime", SubResource("AnimationNodeStateMachineTransition_8nvnf"), "potato_mine_explode", "End", SubResource("AnimationNodeStateMachineTransition_q0arb"), "potato_mine_prime", "potato_mine_idle_primed", SubResource("AnimationNodeStateMachineTransition_dikhn"), "potato_mine_idle_primed", "potato_mine_explode", SubResource("AnimationNodeStateMachineTransition_lqd1d")] +graph_offset = Vector2(-16.3438, -67.832) [sub_resource type="CircleShape2D" id="CircleShape2D_v0g5b"] radius = 19.0263 @@ -93,29 +57,30 @@ radius = 19.0263 [sub_resource type="CircleShape2D" id="CircleShape2D_wvns6"] radius = 19.0263 +[sub_resource type="RectangleShape2D" id="RectangleShape2D_qfqko"] +size = Vector2(15, 27) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ti2g4"] +size = Vector2(34, 19) + [node name="Potato mine" instance=ExtResource("1_dj7ul")] _maxHP = 100 [node name="Sprite2D" parent="." index="0"] texture = ExtResource("2_sneas") -hframes = 3 -vframes = 7 -frame = 1 +hframes = 7 +vframes = 4 [node name="AnimationPlayer" parent="." index="1"] libraries = { -"": SubResource("AnimationLibrary_4kofx") +"potato_mine": ExtResource("3_7tqmj") } autoplay = "idle_unprimed" -[node name="Unprimed" type="CollisionShape2D" parent="Hitbox" index="0"] -position = Vector2(-0.5, 14.5) -shape = SubResource("RectangleShape2D_qfqko") - -[node name="Primed" type="CollisionShape2D" parent="Hitbox" index="1"] -position = Vector2(0, 16.5) -shape = SubResource("RectangleShape2D_ti2g4") -disabled = true +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeStateMachine_nfn7b") +parameters/conditions/explode = false +parameters/conditions/primed = false [node name="Detectionbox" type="Area2D" parent="." index="3"] collision_layer = 0 @@ -140,17 +105,20 @@ wait_time = 15.0 one_shot = true autostart = true -[node name="Behaviour" type="Node" parent="." index="6" node_paths=PackedStringArray("_player", "_hitbox", "_unprimedShape", "_primedShape")] +[node name="Behaviour" type="Node" parent="." index="6" node_paths=PackedStringArray("_hitbox", "_unprimedShape", "_primedShape")] script = ExtResource("4_twx65") -_player = NodePath("../AnimationPlayer") _hitbox = NodePath("../Hitbox") _unprimedShape = NodePath("../Hitbox/Unprimed") _primedShape = NodePath("../Hitbox/Primed") -[node name="ExplosionTimer" type="Timer" parent="Behaviour" index="0"] -wait_time = 0.333 -one_shot = true +[node name="Unprimed" type="CollisionShape2D" parent="Hitbox" index="0"] +position = Vector2(-0.5, 14.5) +shape = SubResource("RectangleShape2D_qfqko") + +[node name="Primed" type="CollisionShape2D" parent="Hitbox" index="1"] +position = Vector2(0, 16.5) +shape = SubResource("RectangleShape2D_ti2g4") +disabled = true [connection signal="area_entered" from="Detectionbox" to="Behaviour" method="OnAreaEntered"] [connection signal="timeout" from="PrimeTimer" to="Behaviour" method="Prime"] -[connection signal="timeout" from="Behaviour/ExplosionTimer" to="ExplosionBox" method="Explode"] diff --git a/scenes/entities/plants/snowpea.tscn b/scenes/entities/plants/snowpea.tscn index 7e49b63..575d9e4 100644 --- a/scenes/entities/plants/snowpea.tscn +++ b/scenes/entities/plants/snowpea.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://b7innrovtmf5u"] +[gd_scene load_steps=13 format=3 uid="uid://b7innrovtmf5u"] [ext_resource type="PackedScene" uid="uid://dy41q1kxray5t" path="res://scenes/entities/plants/peashooter.tscn" id="1_lp85e"] [ext_resource type="Texture2D" uid="uid://cu0651pvvkmvm" path="res://assets/sprites/atlases/plants/snow_pea.png" id="2_ytrm0"] @@ -25,11 +25,34 @@ _data = { "RESET": SubResource("Animation_pephc") } +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dv2ad"] +animation = &"snowpea/idle" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ptach"] +animation = &"snowpea/shoot" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8spty"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_lshcr"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ihul0"] +advance_mode = 2 +advance_condition = &"ready" + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_qdmro"] +states/snowpea_idle/node = SubResource("AnimationNodeAnimation_dv2ad") +states/snowpea_idle/position = Vector2(408, 100) +states/snowpea_shoot/node = SubResource("AnimationNodeAnimation_ptach") +states/snowpea_shoot/position = Vector2(682, 100) +transitions = ["snowpea_shoot", "snowpea_idle", SubResource("AnimationNodeStateMachineTransition_8spty"), "Start", "snowpea_idle", SubResource("AnimationNodeStateMachineTransition_lshcr"), "snowpea_idle", "snowpea_shoot", SubResource("AnimationNodeStateMachineTransition_ihul0")] + [node name="Snowpea" instance=ExtResource("1_lp85e")] [node name="Sprite2D" parent="." index="0"] texture = ExtResource("2_ytrm0") -frame = 0 [node name="AnimationPlayer" parent="." index="1"] libraries = { @@ -38,8 +61,8 @@ libraries = { } autoplay = "snowpea/idle" +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeStateMachine_qdmro") + [node name="Shooter" parent="." index="3"] _projectile = ExtResource("5_bv86m") - -[node name="Behaviour" parent="." index="4"] -_libName = "snowpea" diff --git a/scenes/entities/plants/spikeweed.tscn b/scenes/entities/plants/spikeweed.tscn index 84599cf..d740250 100644 --- a/scenes/entities/plants/spikeweed.tscn +++ b/scenes/entities/plants/spikeweed.tscn @@ -1,115 +1,55 @@ -[gd_scene load_steps=11 format=3 uid="uid://bdhod5c6o53ha"] +[gd_scene load_steps=10 format=3 uid="uid://bdhod5c6o53ha"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_vmbvr"] [ext_resource type="Texture2D" uid="uid://coafh3mjharxo" path="res://assets/sprites/atlases/plants/spikeweed.png" id="2_ffrjr"] -[ext_resource type="AudioStream" uid="uid://ypihbxy7tsqn" path="res://assets/audio/sfx/spikeweed_attack.mp3" id="3_5wcts"] [ext_resource type="Script" path="res://scripts/components/plants/AreaAttack.cs" id="3_hqtbm"] +[ext_resource type="AnimationLibrary" uid="uid://cen6ku4y01dyg" path="res://resources/animations/plants/spikeweed.res" id="3_nwshn"] [ext_resource type="Script" path="res://scripts/components/plants/behaviours/SpikeweedBehaviour.cs" id="3_uhpn7"] -[sub_resource type="Animation" id="Animation_7bhr0"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [0] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lmfqg"] +animation = &"spikeweed/idle" -[sub_resource type="Animation" id="Animation_swkxy"] -resource_name = "attack" -length = 0.666675 -loop_mode = 1 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 1, -"values": [3, 5, 7, 9] -} -tracks/1/type = "method" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Hitbox") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0.166667), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"Attack" -}] -} -tracks/2/type = "audio" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("AudioStreamPlayer2D") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"clips": [{ -"end_offset": 0.0, -"start_offset": 0.0, -"stream": ExtResource("3_5wcts") -}], -"times": PackedFloat32Array(0.166667) -} -tracks/2/use_blend = true +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ccr6v"] +animation = &"spikeweed/attack" -[sub_resource type="Animation" id="Animation_h2f35"] -resource_name = "idle" -length = 2.50001 -loop_mode = 1 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1, 2, 2.16667, 2.33333), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [0, 2, 4, 6, 8, 10, 12, 6, 8, 14] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_m4h7k"] -_data = { -"RESET": SubResource("Animation_7bhr0"), -"attack": SubResource("Animation_swkxy"), -"idle": SubResource("Animation_h2f35") -} +[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_1y7y3"] +blend_point_0/node = SubResource("AnimationNodeAnimation_lmfqg") +blend_point_0/pos = 0.0 +blend_point_1/node = SubResource("AnimationNodeAnimation_ccr6v") +blend_point_1/pos = 1.0 +min_space = 0.0 +snap = 1.0 +value_label = "attack" +blend_mode = 1 [sub_resource type="RectangleShape2D" id="RectangleShape2D_1di76"] size = Vector2(49, 38) [node name="Spikeweed" instance=ExtResource("1_vmbvr")] +_maxHP = 100 [node name="Sprite2D" parent="." index="0"] texture = ExtResource("2_ffrjr") -hframes = 2 -vframes = 10 +hframes = 10 +vframes = 2 +frame = 8 [node name="AnimationPlayer" parent="." index="1"] libraries = { -"": SubResource("AnimationLibrary_m4h7k") +"spikeweed": ExtResource("3_nwshn") } -autoplay = "idle" -[node name="Hitbox" parent="." index="2"] +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeBlendSpace1D_1y7y3") +parameters/blend_position = 0.0 + +[node name="Behaviour" type="Node" parent="." index="3" node_paths=PackedStringArray("_tree")] +script = ExtResource("3_uhpn7") +_tree = NodePath("../AnimationTree") + +[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." index="4"] + +[node name="Hitbox" parent="." index="5"] collision_layer = 4 collision_mask = 8 script = ExtResource("3_hqtbm") @@ -119,11 +59,5 @@ _damage = 2 position = Vector2(0.5, 9) shape = SubResource("RectangleShape2D_1di76") -[node name="Behaviour" type="Node" parent="." index="3" node_paths=PackedStringArray("_player")] -script = ExtResource("3_uhpn7") -_player = NodePath("../AnimationPlayer") - -[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." index="4"] - [connection signal="area_entered" from="Hitbox" to="Behaviour" method="OnHitboxEntered"] [connection signal="area_exited" from="Hitbox" to="Behaviour" method="OnHitboxExited"] diff --git a/scenes/entities/plants/sunflower.tscn b/scenes/entities/plants/sunflower.tscn index 94efeff..1015bfb 100644 --- a/scenes/entities/plants/sunflower.tscn +++ b/scenes/entities/plants/sunflower.tscn @@ -1,121 +1,92 @@ -[gd_scene load_steps=11 format=3 uid="uid://hsllvtm3q34d"] +[gd_scene load_steps=16 format=3 uid="uid://bg7lomiorxo2c"] -[ext_resource type="Script" path="res://scripts/components/plants/RuntimePlantData.cs" id="1_2wmcw"] +[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_bikjn"] [ext_resource type="Texture2D" uid="uid://b3tuidu8dag8u" path="res://assets/sprites/atlases/plants/sunflower.png" id="2_fwcda"] +[ext_resource type="AnimationLibrary" uid="uid://yjytiuj4u7oh" path="res://resources/animations/plants/sunflower.res" id="3_btsik"] [ext_resource type="Script" path="res://scripts/components/plants/PlantSunSpawner.cs" id="3_te0pl"] [ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="4_b8hls"] [ext_resource type="Script" path="res://scripts/components/plants/behaviours/SunflowerBehaviour.cs" id="5_26je0"] -[sub_resource type="Animation" id="Animation_7b6ex"] +[sub_resource type="Animation" id="Animation_bfx6v"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") +tracks/0/path = NodePath("AnimationTree:parameters/conditions/produce") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [12] +"values": [false] } -[sub_resource type="Animation" id="Animation_w8qjp"] -resource_name = "idle" -length = 0.833342 -loop_mode = 2 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), -"update": 1, -"values": [4, 6, 8, 10, 12, 14] -} - -[sub_resource type="Animation" id="Animation_18upv"] -resource_name = "produce" -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [1, 3, 5, 7, 9, 11, 13, 15, 17] -} -tracks/1/type = "method" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("PlantSunSpawner") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0.5), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"Spawn" -}] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_piyjs"] +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ek2al"] _data = { -"RESET": SubResource("Animation_7b6ex"), -"idle": SubResource("Animation_w8qjp"), -"produce": SubResource("Animation_18upv") +"RESET": SubResource("Animation_bfx6v") } -[sub_resource type="RectangleShape2D" id="RectangleShape2D_626vr"] +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lkpmx"] +animation = &"sunflower/idle" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_hc6hn"] +animation = &"sunflower/produce" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_26fia"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_d2akw"] +advance_mode = 2 +advance_condition = &"produce" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sww40"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_enpal"] +states/sunflower_idle/node = SubResource("AnimationNodeAnimation_lkpmx") +states/sunflower_idle/position = Vector2(371, 100) +states/sunflower_produce/node = SubResource("AnimationNodeAnimation_hc6hn") +states/sunflower_produce/position = Vector2(624, 99) +transitions = ["Start", "sunflower_idle", SubResource("AnimationNodeStateMachineTransition_26fia"), "sunflower_idle", "sunflower_produce", SubResource("AnimationNodeStateMachineTransition_d2akw"), "sunflower_produce", "sunflower_idle", SubResource("AnimationNodeStateMachineTransition_sww40")] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_4xs4g"] size = Vector2(26, 48) -[node name="Sunflower" type="Node2D"] -use_parent_material = true -script = ExtResource("1_2wmcw") -_maxHP = 100 +[node name="Sunflower" instance=ExtResource("1_bikjn")] -[node name="Sprite" type="Sprite2D" parent="."] -use_parent_material = true +[node name="Sprite2D" parent="." index="0"] texture = ExtResource("2_fwcda") -hframes = 2 -vframes = 9 -frame = 12 +hframes = 9 +vframes = 2 +frame = 1 -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +[node name="AnimationPlayer" parent="." index="1"] libraries = { -"": SubResource("AnimationLibrary_piyjs") +"": SubResource("AnimationLibrary_ek2al"), +"sunflower": ExtResource("3_btsik") } -autoplay = "idle" -[node name="Hitbox" type="Area2D" parent="."] -collision_layer = 2 -collision_mask = 0 +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeStateMachine_enpal") +parameters/conditions/produce = false -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] -position = Vector2(0, 4) -shape = SubResource("RectangleShape2D_626vr") - -[node name="PlantSunSpawner" type="Node2D" parent="."] +[node name="PlantSunSpawner" type="Node2D" parent="." index="3"] position = Vector2(-2, 0) script = ExtResource("3_te0pl") _sunScene = ExtResource("4_b8hls") _amountPerSun = 25 -[node name="Behaviour" type="Node" parent="."] +[node name="Behaviour" type="Node" parent="." index="4"] script = ExtResource("5_26je0") -[node name="Timer" type="Timer" parent="Behaviour"] +[node name="Timer" type="Timer" parent="Behaviour" index="0"] wait_time = 5.0 autostart = true +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] +position = Vector2(0, 4) +shape = SubResource("RectangleShape2D_4xs4g") + [connection signal="timeout" from="Behaviour/Timer" to="Behaviour" method="Timeout"] diff --git a/scenes/entities/plants/wallnut.tscn b/scenes/entities/plants/wallnut.tscn index 07940d0..72d177e 100644 --- a/scenes/entities/plants/wallnut.tscn +++ b/scenes/entities/plants/wallnut.tscn @@ -1,117 +1,54 @@ -[gd_scene load_steps=11 format=3 uid="uid://dh6rm7o3taaek"] +[gd_scene load_steps=10 format=3 uid="uid://bq7imkpr2yqyr"] -[ext_resource type="Texture2D" uid="uid://dstqh1wc5dvmo" path="res://assets/sprites/atlases/plants/wallnut.png" id="1_571nl"] -[ext_resource type="Script" path="res://scripts/components/plants/RuntimePlantData.cs" id="1_mt5mt"] -[ext_resource type="Script" path="res://scripts/components/plants/behaviours/WallnutBehaviour.cs" id="3_tu4pm"] +[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_fluxn"] +[ext_resource type="Texture2D" uid="uid://dstqh1wc5dvmo" path="res://assets/sprites/atlases/plants/wallnut.png" id="2_o5tda"] +[ext_resource type="AnimationLibrary" uid="uid://0bdesb8j2mbo" path="res://resources/animations/plants/wallnut.res" id="3_xl65q"] +[ext_resource type="Script" path="res://scripts/components/plants/behaviours/HpBasedBehaviour.cs" id="4_cjtyy"] -[sub_resource type="Animation" id="Animation_s4r5j"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [0] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds5ry"] +animation = &"wallnut/idle_full" -[sub_resource type="Animation" id="Animation_lfaj3"] -resource_name = "idle_full" -length = 8.50002 -loop_mode = 1 -step = 0.25 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 2.25, 2.5, 2.75, 3, 3.25, 4.25, 4.5, 6.75, 7, 7.25, 7.5, 9.75), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [0, 3, 6, 9, 12, 15, 12, 9, 6, 3, 27, 30, 3] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_frsxy"] +animation = &"wallnut/idle_mid" -[sub_resource type="Animation" id="Animation_u73od"] -resource_name = "idle_low" -length = 3.00003 -loop_mode = 1 -step = 0.25 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32] -} +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7avgo"] +animation = &"wallnut/idle_low" -[sub_resource type="Animation" id="Animation_c8ofx"] -resource_name = "idle_mid" -length = 3.50005 -loop_mode = 1 -step = 0.25 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34] -} +[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_nij8v"] +blend_point_0/node = SubResource("AnimationNodeAnimation_ds5ry") +blend_point_0/pos = 1.0 +blend_point_1/node = SubResource("AnimationNodeAnimation_frsxy") +blend_point_1/pos = 0.7 +blend_point_2/node = SubResource("AnimationNodeAnimation_7avgo") +blend_point_2/pos = 0.3 +min_space = 0.0 +blend_mode = 1 -[sub_resource type="AnimationLibrary" id="AnimationLibrary_7mgid"] -_data = { -"RESET": SubResource("Animation_s4r5j"), -"idle_full": SubResource("Animation_lfaj3"), -"idle_low": SubResource("Animation_u73od"), -"idle_mid": SubResource("Animation_c8ofx") -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_ytjo1"] - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_523ui"] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_khltr"] size = Vector2(33, 46) -[node name="Wallnut" type="Node2D"] -script = ExtResource("1_mt5mt") +[node name="Wallnut" instance=ExtResource("1_fluxn")] _maxHP = 1000 -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +[node name="Sprite2D" parent="." index="0"] +texture = ExtResource("2_o5tda") +hframes = 12 +vframes = 3 + +[node name="AnimationPlayer" parent="." index="1"] libraries = { -"": SubResource("AnimationLibrary_7mgid"), -"wallnut": SubResource("AnimationLibrary_ytjo1") +"wallnut": ExtResource("3_xl65q") } -autoplay = "idle_full" -[node name="Sprite" type="Sprite2D" parent="."] -use_parent_material = true -texture = ExtResource("1_571nl") -hframes = 3 -vframes = 12 +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeBlendSpace1D_nij8v") +parameters/blend_position = 1.0 -[node name="Behaviour" type="Node" parent="."] -script = ExtResource("3_tu4pm") - -[node name="Hitbox" type="Area2D" parent="."] -collision_layer = 2 -collision_mask = 0 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] position = Vector2(3.5, 5) -shape = SubResource("RectangleShape2D_523ui") +shape = SubResource("RectangleShape2D_khltr") + +[node name="Behaviour" type="Node" parent="." index="4"] +script = ExtResource("4_cjtyy") [connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"] diff --git a/scenes/templates/plant_template.tscn b/scenes/templates/plant_template.tscn index 5b1bdef..8683501 100644 --- a/scenes/templates/plant_template.tscn +++ b/scenes/templates/plant_template.tscn @@ -10,6 +10,9 @@ use_parent_material = true [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +[node name="AnimationTree" type="AnimationTree" parent="."] +anim_player = NodePath("../AnimationPlayer") + [node name="Hitbox" type="Area2D" parent="."] collision_layer = 2 collision_mask = 0 diff --git a/scripts/components/level/PoolContainer.cs b/scripts/components/level/PoolContainer.cs index a90fef4..cf490c6 100644 --- a/scripts/components/level/PoolContainer.cs +++ b/scripts/components/level/PoolContainer.cs @@ -21,9 +21,37 @@ public partial class PoolContainer : Node public static PoolContainer Instance {get; private set;} - public Dictionary[] EntityField = { new Dictionary(), new Dictionary(), new Dictionary() }; + public Dictionary[] EntityField = { new(), new(), new() }; public override void _Ready() { Instance = this; } + public bool TryGetEntity(Vector2 key, out IEntity result, int layer = 1) + { + if (EntityField[layer].ContainsKey(key)) + { + result = EntityField[layer][key]; + } + else + { + result = null; + } + return EntityField[layer].ContainsKey(key) + && EntityField[layer][key] != null; + } + + public bool TryGetEntity(Vector2 key, out T result, int layer = 1) where T : class + { + if (EntityField[layer].ContainsKey(key)) + { + result = EntityField[layer][key] as T; + } + else + { + result = null; + } + return EntityField[layer].ContainsKey(key) + && EntityField[layer][key] != null + && result != null; + } } diff --git a/scripts/components/plants/RuntimePlantData.cs b/scripts/components/plants/RuntimePlantData.cs index d2174c7..ed780e3 100644 --- a/scripts/components/plants/RuntimePlantData.cs +++ b/scripts/components/plants/RuntimePlantData.cs @@ -11,7 +11,7 @@ public partial class RuntimePlantData : Node2D, IEntity { [Export] private int _maxHP; - [Export]private int _hp; + private int _hp; public int Hp => _hp; public int MaxHp => _maxHP; public int Line {get; set;} diff --git a/scripts/components/plants/behaviours/AloeBehaviour.cs b/scripts/components/plants/behaviours/AloeBehaviour.cs index e36f959..6233e8d 100644 --- a/scripts/components/plants/behaviours/AloeBehaviour.cs +++ b/scripts/components/plants/behaviours/AloeBehaviour.cs @@ -3,40 +3,46 @@ using Newlon.Components.Level; namespace Newlon.Components.Plants.Behaviours; -public partial class AloeBehaviour : Node +public partial class AloeBehaviour : BaseBehaviour { - [Export] private AnimationPlayer _player; [Export] private float _hpTreshold = 0.25f; private Timer _timer; private bool _charge = true; public override void _Ready() { + base._Ready(); _timer = GetNode("Timer"); } - - public override void _Process(double delta) { + _tree.Set("parameters/conditions/charged",_charge); + var checkPos = GetParent().GlobalPosition + Vector2.Right * Utility.TileWidth; - if(_charge && PoolContainer.Instance.EntityField[1].ContainsKey(checkPos) && PoolContainer.Instance.EntityField[1][checkPos] is RuntimePlantData plantData) + if(_charge && PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData)) { if((float)plantData.Hp / (float)plantData.MaxHp < _hpTreshold) { - plantData.Heal(3000 + 25 * plantData.MaxHp,GetParent()); _charge = false; - _player.Play("aloe/heal"); - _player.Queue("aloe/idle_used"); - _timer.Start(); + _tree.Set("parameters/conditions/heal",true); + _timer.Start(); } } } + public void Heal() + { + var checkPos = GetParent().GlobalPosition + Vector2.Right * Utility.TileWidth; + if (PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData)) + { + plantData.Heal(3000 + 25 * plantData.MaxHp, GetParent()); + GD.Print("IM TRYING"); + } + } + public void OnTimeout() { _charge = true; - _player.Play("aloe/recharge"); - _player.Queue("aloe/idle"); } } diff --git a/scripts/components/plants/behaviours/BaseBehaviour.cs b/scripts/components/plants/behaviours/BaseBehaviour.cs new file mode 100644 index 0000000..346160b --- /dev/null +++ b/scripts/components/plants/behaviours/BaseBehaviour.cs @@ -0,0 +1,11 @@ +using Godot; +using System; + +public abstract partial class BaseBehaviour : Node +{ + protected AnimationTree _tree; + public override void _Ready() + { + _tree = GetNode("../AnimationTree"); + } +} diff --git a/scripts/components/plants/behaviours/HpBasedBehaviour.cs b/scripts/components/plants/behaviours/HpBasedBehaviour.cs new file mode 100644 index 0000000..d49af31 --- /dev/null +++ b/scripts/components/plants/behaviours/HpBasedBehaviour.cs @@ -0,0 +1,18 @@ +using Godot; + +namespace Newlon.Components.Plants.Behaviours; + +public partial class HpBasedBehaviour : BaseBehaviour +{ + private RuntimePlantData _data; + public override void _Ready() + { + base._Ready(); + _data = GetParent(); + } + + public void OnHPChanged(int amount,Node origin) + { + _tree.Set("parameters/blend_position",(float)_data.Hp/_data.MaxHp); + } +} diff --git a/scripts/components/plants/behaviours/PeashooterBehaviour.cs b/scripts/components/plants/behaviours/PeashooterBehaviour.cs index c2eaf01..be36c8e 100644 --- a/scripts/components/plants/behaviours/PeashooterBehaviour.cs +++ b/scripts/components/plants/behaviours/PeashooterBehaviour.cs @@ -2,21 +2,15 @@ using Godot; namespace Newlon.Components.Plants.Behaviours; -public partial class PeashooterBehaviour : Node +public partial class PeashooterBehaviour : BaseBehaviour { - [Export] private AnimationPlayer _player; [Export] private Timer _shootTimer; [Export] private Eyesight _sight; - [Export] private string _libName; public override void _Process(double delta) { bool readyToShoot = _sight.EnemyDetected && _shootTimer.TimeLeft <= 0; - if(readyToShoot) - { - _player.Play(_libName+"/shoot"); - _player.Queue(_libName+"/idle"); - } + _tree.Set("parameters/conditions/ready",readyToShoot); } } diff --git a/scripts/components/plants/behaviours/PotatomineBehaviour.cs b/scripts/components/plants/behaviours/PotatomineBehaviour.cs index 35232a7..75c38c3 100644 --- a/scripts/components/plants/behaviours/PotatomineBehaviour.cs +++ b/scripts/components/plants/behaviours/PotatomineBehaviour.cs @@ -2,18 +2,15 @@ using Godot; namespace Newlon.Components.Plants.Behaviours; -public partial class PotatomineBehaviour : Node +public partial class PotatomineBehaviour : BaseBehaviour { - [Export] private AnimationPlayer _player; [Export] private Area2D _hitbox; [Export] private CollisionShape2D _unprimedShape; [Export] private CollisionShape2D _primedShape; - private bool _primed = false; public void Prime() { - _player.Play("prime"); - _player.Queue("idle_primed"); + _tree.Set("parameters/conditions/primed",true); _hitbox.Monitorable = false; @@ -25,6 +22,7 @@ public partial class PotatomineBehaviour : Node public void OnAreaEntered(Area2D area) { if (_primed == false) return; - GetNode("ExplosionTimer").Start(); + _tree.Set("parameters/conditions/explode",true); + _primed = false; } } diff --git a/scripts/components/plants/behaviours/SpikeweedBehaviour.cs b/scripts/components/plants/behaviours/SpikeweedBehaviour.cs index d175907..7e4d3e6 100644 --- a/scripts/components/plants/behaviours/SpikeweedBehaviour.cs +++ b/scripts/components/plants/behaviours/SpikeweedBehaviour.cs @@ -4,18 +4,18 @@ namespace Newlon.Components.Plants.Behaviours; public partial class SpikeweedBehaviour : Node { - [Export] private AnimationPlayer _player; + [Export] private AnimationTree _tree; private int _inCount = 0; public void OnHitboxEntered(Area2D _area) { if (_inCount++ == 0) - _player.Play("attack"); + _tree.Set("parameters/blend_position",1); } public void OnHitboxExited(Area2D _area) { if (--_inCount == 0) - _player.Play("idle"); + _tree.Set("parameters/blend_position",0); } } diff --git a/scripts/components/plants/behaviours/SunflowerBehaviour.cs b/scripts/components/plants/behaviours/SunflowerBehaviour.cs index 292c56f..735a8f5 100644 --- a/scripts/components/plants/behaviours/SunflowerBehaviour.cs +++ b/scripts/components/plants/behaviours/SunflowerBehaviour.cs @@ -4,17 +4,16 @@ namespace Newlon.Components.Plants.Behaviours; public partial class SunflowerBehaviour : Node { - private AnimationPlayer _player; + private AnimationTree _tree; public override void _Ready() { - _player = GetNode("../AnimationPlayer"); + _tree = GetNode("../AnimationTree"); } public void Timeout() { - _player.Play("produce"); - _player.Queue("idle"); + _tree.Set("parameters/conditions/produce",true); } } diff --git a/scripts/components/plants/behaviours/WallnutBehaviour.cs b/scripts/components/plants/behaviours/WallnutBehaviour.cs deleted file mode 100644 index b623fab..0000000 --- a/scripts/components/plants/behaviours/WallnutBehaviour.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Godot; - -namespace Newlon.Components.Plants.Behaviours; - -public partial class WallnutBehaviour : Node -{ - private AnimationPlayer _player; - private RuntimePlantData _data; - public override void _Ready() - { - _player = GetNode("../AnimationPlayer"); - _data = GetParent(); - } - - public void OnHPChanged(int amount) - { - - if(_data.Hp <= _data.MaxHp*2.0/3.0 && _data.Hp > _data.MaxHp/3.0) - { - _player.Play("idle_mid"); - } - else if(_data.Hp < _data.MaxHp/3.0) - { - _player.Play("idle_low"); - } - else - { - _player.Play("idle_full"); - } - } -} diff --git a/scripts/resources/PlantResource.cs b/scripts/resources/PlantResource.cs index 2164a26..ff43361 100644 --- a/scripts/resources/PlantResource.cs +++ b/scripts/resources/PlantResource.cs @@ -11,8 +11,8 @@ public partial class PlantResource : Resource public PackedScene Scene; [Export] public float ReloadTime; - [Export] - public float StartReloadTime; + [Export(PropertyHint.Range,"0,1,0.01")] + public float ReloadProgress; [Export] public Texture2D Preview; [Export] public int Layer = 1;