diff --git a/addons/pvzadventure/AdventureLevelResource.cs b/addons/pvzadventure/AdventureLevelResource.cs index 7326c11..c228916 100644 --- a/addons/pvzadventure/AdventureLevelResource.cs +++ b/addons/pvzadventure/AdventureLevelResource.cs @@ -11,6 +11,7 @@ public partial class AdventureLevelResource : Resource [Export] public float standardWaveDelay; [Export] public float initialWaveDelay; [Export] public RewardResource reward; + [Export] public Array forbiddenPlants; [Export] public Array waves; [Export] public Array initialScenes = [.. new PackedScene[45]]; } diff --git a/assets/levels/video_level.tres b/assets/levels/video_level.tres new file mode 100644 index 0000000..1685362 --- /dev/null +++ b/assets/levels/video_level.tres @@ -0,0 +1,287 @@ +[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=64 format=3 uid="uid://dwd5oqr0tuvhv"] + +[ext_resource type="Resource" uid="uid://c268ghdrraxgr" path="res://assets/rewards/NerdusReward.tres" id="1_eqa0o"] +[ext_resource type="Script" uid="uid://bximdujbkj2n4" path="res://addons/pvzadventure/AdventureLevelResource.cs" id="1_r0wru"] +[ext_resource type="Script" uid="uid://cw7yc3i2lgcja" path="res://addons/pvzadventure/WaveEvent.cs" id="3_icaa5"] +[ext_resource type="Script" uid="uid://7rptlb5qr3b6" path="res://addons/pvzadventure/WaveData.cs" id="4_kc7t2"] +[ext_resource type="Script" uid="uid://dl12rj75tk2qi" path="res://addons/pvzadventure/RowSpawn.cs" id="5_66y5q"] +[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="6_66y5q"] +[ext_resource type="Resource" uid="uid://buvacn56kyy2p" path="res://assets/zombies/basic.tres" id="7_c21si"] +[ext_resource type="Resource" uid="uid://nceohd32fkxk" path="res://assets/zombies/conehead.tres" id="8_c21si"] +[ext_resource type="Resource" uid="uid://dkhjlu7u0vny6" path="res://assets/zombies/buckethead.tres" id="9_tuvrx"] +[ext_resource type="Resource" uid="uid://c38vfdw5b60xw" path="res://assets/zombies/hobo.tres" id="10_t4nit"] + +[sub_resource type="Resource" id="Resource_67vjw"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, null, null, ExtResource("7_c21si")]) + +[sub_resource type="Resource" id="Resource_c21si"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_67vjw")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_8mi8t"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("7_c21si"), null, null, null]) + +[sub_resource type="Resource" id="Resource_icaa5"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_8mi8t")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_w7y4b"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("7_c21si"), null, ExtResource("7_c21si"), null, null]) + +[sub_resource type="Resource" id="Resource_kc7t2"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_w7y4b")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_h4874"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("8_c21si"), null, null]) + +[sub_resource type="Resource" id="Resource_66y5q"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_h4874")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_tflu2"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("7_c21si"), null, null, ExtResource("7_c21si")]) + +[sub_resource type="Resource" id="Resource_o4ycu"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("7_c21si"), null, null, ExtResource("7_c21si"), null]) + +[sub_resource type="Resource" id="Resource_tuvrx"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_tflu2"), SubResource("Resource_o4ycu")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_j5brc"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("8_c21si"), null, ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_pu4uy"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("7_c21si"), null, null]) + +[sub_resource type="Resource" id="Resource_t4nit"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_j5brc"), SubResource("Resource_pu4uy")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_cce24"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("8_c21si"), null, ExtResource("7_c21si"), ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_60k6l"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, null, null, null]) + +[sub_resource type="Resource" id="Resource_kligk"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("8_c21si"), null, null, ExtResource("8_c21si")]) + +[sub_resource type="Resource" id="Resource_qx8xe"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_cce24"), SubResource("Resource_60k6l"), SubResource("Resource_kligk")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_r0qdt"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("7_c21si"), null, ExtResource("7_c21si"), null]) + +[sub_resource type="Resource" id="Resource_idcf6"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, null, null, ExtResource("8_c21si")]) + +[sub_resource type="Resource" id="Resource_pm6go"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("7_c21si"), null, ExtResource("7_c21si"), null, null]) + +[sub_resource type="Resource" id="Resource_hyvhe"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_r0qdt"), SubResource("Resource_idcf6"), SubResource("Resource_pm6go")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_n1jd7"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("7_c21si"), ExtResource("9_tuvrx"), ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_0tojl"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("7_c21si"), null, ExtResource("7_c21si"), null, ExtResource("7_c21si")]) + +[sub_resource type="Resource" id="Resource_clry7"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("7_c21si"), ExtResource("7_c21si"), ExtResource("8_c21si"), ExtResource("7_c21si")]) + +[sub_resource type="Resource" id="Resource_fbnvb"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("8_c21si"), null, ExtResource("7_c21si"), null]) + +[sub_resource type="Resource" id="Resource_8syff"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_n1jd7"), SubResource("Resource_0tojl"), SubResource("Resource_clry7"), SubResource("Resource_fbnvb")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = true + +[sub_resource type="Resource" id="Resource_ljbqu"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("8_c21si"), null, ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_x1qhy"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, null, null, ExtResource("8_c21si")]) + +[sub_resource type="Resource" id="Resource_jfmww"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_ljbqu"), SubResource("Resource_x1qhy")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_b6q86"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("7_c21si"), ExtResource("9_tuvrx"), null]) + +[sub_resource type="Resource" id="Resource_kkdeh"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("8_c21si"), null, null, null]) + +[sub_resource type="Resource" id="Resource_vrqir"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_b6q86"), SubResource("Resource_kkdeh")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_lux4m"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("7_c21si"), ExtResource("7_c21si"), ExtResource("7_c21si"), null]) + +[sub_resource type="Resource" id="Resource_8akqo"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("8_c21si"), null, ExtResource("9_tuvrx"), null, ExtResource("8_c21si")]) + +[sub_resource type="Resource" id="Resource_2seob"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_lux4m"), SubResource("Resource_8akqo")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_dnmud"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("8_c21si"), ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_2g220"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("8_c21si"), ExtResource("8_c21si"), ExtResource("7_c21si"), null, null]) + +[sub_resource type="Resource" id="Resource_6mt11"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("8_c21si"), ExtResource("7_c21si"), null]) + +[sub_resource type="Resource" id="Resource_geil0"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_dnmud"), SubResource("Resource_2g220"), SubResource("Resource_6mt11")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_lael2"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("8_c21si"), ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_ptm5g"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("9_tuvrx"), ExtResource("7_c21si"), ExtResource("7_c21si"), null]) + +[sub_resource type="Resource" id="Resource_ivdh0"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("8_c21si"), null, ExtResource("7_c21si"), null, ExtResource("8_c21si")]) + +[sub_resource type="Resource" id="Resource_lxb1x"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_lael2"), SubResource("Resource_ptm5g"), SubResource("Resource_ivdh0")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_a02hf"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("9_tuvrx"), ExtResource("9_tuvrx"), ExtResource("9_tuvrx"), null]) + +[sub_resource type="Resource" id="Resource_o5y12"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_a02hf")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_ojvab"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("7_c21si"), null, ExtResource("8_c21si"), ExtResource("8_c21si"), null]) + +[sub_resource type="Resource" id="Resource_680eh"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("9_tuvrx"), ExtResource("7_c21si"), null, ExtResource("9_tuvrx")]) + +[sub_resource type="Resource" id="Resource_diw66"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_ojvab"), SubResource("Resource_680eh")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_3yjvk"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, null, ExtResource("10_t4nit"), null, null]) + +[sub_resource type="Resource" id="Resource_vqnxn"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([null, ExtResource("9_tuvrx"), ExtResource("7_c21si"), ExtResource("9_tuvrx"), null]) + +[sub_resource type="Resource" id="Resource_78ix5"] +script = ExtResource("5_66y5q") +zombies = Array[ExtResource("6_66y5q")]([ExtResource("8_c21si"), ExtResource("8_c21si"), ExtResource("8_c21si"), ExtResource("8_c21si"), ExtResource("8_c21si")]) + +[sub_resource type="Resource" id="Resource_pwwqn"] +script = ExtResource("4_kc7t2") +zombiesOrdered = Array[ExtResource("5_66y5q")]([SubResource("Resource_3yjvk"), SubResource("Resource_vqnxn"), SubResource("Resource_78ix5")]) +events = Array[ExtResource("3_icaa5")]([]) +customWaveDelay = 0.0 +isHugeWave = true + +[resource] +script = ExtResource("1_r0wru") +startSun = 50 +wavePercentage = 0.5 +standardWaveDelay = 30.0 +initialWaveDelay = 20.0 +reward = ExtResource("1_eqa0o") +forbiddenPlants = Array[String](["wallnut", "aloe", "spikeweed"]) +waves = [SubResource("Resource_c21si"), SubResource("Resource_icaa5"), SubResource("Resource_kc7t2"), SubResource("Resource_66y5q"), SubResource("Resource_tuvrx"), SubResource("Resource_t4nit"), SubResource("Resource_qx8xe"), SubResource("Resource_hyvhe"), SubResource("Resource_8syff"), SubResource("Resource_jfmww"), SubResource("Resource_vrqir"), SubResource("Resource_2seob"), SubResource("Resource_geil0"), SubResource("Resource_lxb1x"), SubResource("Resource_o5y12"), SubResource("Resource_diw66"), SubResource("Resource_pwwqn")] +initialScenes = Array[PackedScene]([null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]) +metadata/_custom_type_script = "uid://bximdujbkj2n4" diff --git a/assets/rewards/SpikeweedReward.tres b/assets/rewards/SpikeweedReward.tres new file mode 100644 index 0000000..86bc7dd --- /dev/null +++ b/assets/rewards/SpikeweedReward.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://dlv4fkh4limub"] + +[ext_resource type="Resource" uid="uid://cas11tg6chiu4" path="res://assets/plants/Spikeweed.tres" id="1_wbex8"] +[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_4ynii"] +[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_ffr6n"] + +[resource] +script = ExtResource("3_ffr6n") +Plant = ExtResource("1_wbex8") +Scene = ExtResource("2_4ynii") +Name = "spikeweed" +Description = "rwd_spikeweed" +metadata/_custom_type_script = "uid://c8e40t5nbo83r" diff --git a/assets/sprites/atlases/atlas1.png b/assets/sprites/atlases/atlas1.png index d9cff53..ba8b828 100644 Binary files a/assets/sprites/atlases/atlas1.png and b/assets/sprites/atlases/atlas1.png differ diff --git a/assets/sprites/gui/ForbiddenPacket.tres b/assets/sprites/gui/ForbiddenPacket.tres new file mode 100644 index 0000000..96167e6 --- /dev/null +++ b/assets/sprites/gui/ForbiddenPacket.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://cjkwy3u0wuax3"] + +[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_3i5sg"] + +[resource] +atlas = ExtResource("1_3i5sg") +region = Rect2(475, 68, 39, 51) diff --git a/assets/sprites/gui/LockedPacket.tres b/assets/sprites/gui/LockedPacket.tres new file mode 100644 index 0000000..658668b --- /dev/null +++ b/assets/sprites/gui/LockedPacket.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://c1p5iswlquo4o"] + +[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_sbmc0"] + +[resource] +atlas = ExtResource("1_sbmc0") +region = Rect2(569, 74, 11, 17) diff --git a/scenes/gui/seedpacket.tscn b/scenes/gui/seedpacket.tscn index 379fee9..d49c4c4 100644 --- a/scenes/gui/seedpacket.tscn +++ b/scenes/gui/seedpacket.tscn @@ -1,10 +1,12 @@ -[gd_scene load_steps=10 format=3 uid="uid://e7vutg71l6f2"] +[gd_scene load_steps=12 format=3 uid="uid://e7vutg71l6f2"] [ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_77bw1"] [ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="3_q0tvq"] +[ext_resource type="Texture2D" uid="uid://cjkwy3u0wuax3" path="res://assets/sprites/gui/ForbiddenPacket.tres" id="4_6k60q"] [ext_resource type="Script" uid="uid://cn6ddajdtf4ep" path="res://scripts/gui/seedpackets/Seedpacket.cs" id="4_c6epd"] [ext_resource type="Script" uid="uid://chag6sgjsjb2u" path="res://scripts/gui/seedpackets/CostVeil.cs" id="4_gtmhg"] [ext_resource type="Shader" uid="uid://dcp5tqcec2oi3" path="res://assets/shaders/gui_masking.gdshader" id="5_s5861"] +[ext_resource type="Texture2D" uid="uid://c1p5iswlquo4o" path="res://assets/sprites/gui/LockedPacket.tres" id="5_tvxj3"] [ext_resource type="Texture2D" uid="uid://c1afy0ga6h1ic" path="res://assets/sprites/white_box.png" id="6_lp42h"] [ext_resource type="Script" uid="uid://ddi84kmmq1qla" path="res://scripts/gui/VeilResizer.cs" id="7_tv07f"] @@ -76,6 +78,32 @@ mouse_default_cursor_shape = 2 expand_mode = 1 stretch_mode = 5 +[node name="ForbiddenTexture" type="TextureRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_6k60q") + +[node name="LockedTexture" type="TextureRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 28.0 +offset_top = 38.0 +offset_right = -28.0 +offset_bottom = -38.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("5_tvxj3") +stretch_mode = 5 + [node name="CostVeil" type="ColorRect" parent="."] visible = false layout_mode = 1 @@ -84,6 +112,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 color = Color(0, 0, 0, 0.415686) script = ExtResource("4_gtmhg") diff --git a/scripts/gui/almanach/AlmanachGrid.cs b/scripts/gui/almanach/AlmanachGrid.cs index 911cec4..ff1a23c 100644 --- a/scripts/gui/almanach/AlmanachGrid.cs +++ b/scripts/gui/almanach/AlmanachGrid.cs @@ -28,7 +28,7 @@ public partial class AlmanachGrid : GridContainer } else { - var list = PlayerProgress.Instance.PlayerPlants; + var list = GameRegistry.GetPlants(); list.Sort((a, b) => { return a.Order - b.Order; @@ -39,6 +39,7 @@ public partial class AlmanachGrid : GridContainer AddChild(slot); slot.SetResource(resource); + slot.SetLocked(PlayerProgress.Instance.PlayerPlants.Contains(resource) == false); slot.SetHandler(new AlmanachHandler(slot)); } } diff --git a/scripts/gui/choose_your_seeds/GridLoader.cs b/scripts/gui/choose_your_seeds/GridLoader.cs index fba5db8..35f4e55 100644 --- a/scripts/gui/choose_your_seeds/GridLoader.cs +++ b/scripts/gui/choose_your_seeds/GridLoader.cs @@ -1,5 +1,6 @@ using Godot; using Newlon.Components.GUI.Seedpackets; +using Newlon.Components.Level; namespace Newlon.Components.GUI; @@ -11,7 +12,7 @@ public partial class GridLoader : GridContainer { _plantCard = ResourceLoader.Load(SEEDPACKED_UID); - var list = PlayerProgress.Instance.PlayerPlants; + var list = GameRegistry.GetPlants(); list.Sort((a, b) => { return a.Order - b.Order; @@ -22,7 +23,10 @@ public partial class GridLoader : GridContainer AddChild(slot); slot.SetResource(resource); - slot.SetHandler(new ChoosableHandler(slot)); + slot.SetForbidden(RuntimeLevelData.LevelResource.forbiddenPlants.Contains(resource.internal_id)); + slot.SetLocked(PlayerProgress.Instance.PlayerPlants.Contains(resource) == false); + var handler = new ChoosableHandler(slot); + slot.SetHandler(handler); } } } diff --git a/scripts/gui/menu_buttons.gd b/scripts/gui/menu_buttons.gd index 7db0f5e..9df0a36 100644 --- a/scripts/gui/menu_buttons.gd +++ b/scripts/gui/menu_buttons.gd @@ -2,7 +2,7 @@ extends Node func _on_play_button_pressed() -> void: - LevelController.call("StartLevel",preload("uid://dd3yegl1xo44m"),preload("uid://ds2js2vylygvy")) + LevelController.call("StartLevel",preload("uid://dd3yegl1xo44m"),preload("uid://dwd5oqr0tuvhv")) $ChannelPlayer.call("Play") diff --git a/scripts/gui/seedpackets/ChoosableHandler.cs b/scripts/gui/seedpackets/ChoosableHandler.cs index 40e2749..2dc29ce 100644 --- a/scripts/gui/seedpackets/ChoosableHandler.cs +++ b/scripts/gui/seedpackets/ChoosableHandler.cs @@ -18,7 +18,6 @@ public class ChoosableHandler : SeedpacketHandler, ISeedpacketPress var pregameHandler = new HotbarPregameHandler(hotbarSeedpacket); hotbarSeedpacket.SetHandler(pregameHandler); pregameHandler.Clicked += OnHotbarClicked; - AudioSequencer.Play("tap", Seedpacket.TapStream); } diff --git a/scripts/gui/seedpackets/CostVeil.cs b/scripts/gui/seedpackets/CostVeil.cs index 764adf4..d2b860c 100644 --- a/scripts/gui/seedpackets/CostVeil.cs +++ b/scripts/gui/seedpackets/CostVeil.cs @@ -16,6 +16,6 @@ public partial class CostVeil : ColorRect { //Visible = RuntimeLevelData.Instance.SunCount < packet.GetResource().Cost; - Visible = packet.disablePacket; + Visible = packet.disablePacket || packet._forbidden; } } diff --git a/scripts/gui/seedpackets/Seedpacket.cs b/scripts/gui/seedpackets/Seedpacket.cs index fc6b01c..7384d26 100644 --- a/scripts/gui/seedpackets/Seedpacket.cs +++ b/scripts/gui/seedpackets/Seedpacket.cs @@ -13,6 +13,8 @@ public partial class Seedpacket : TextureButton private TextureRect _icon; private Timer _timer; private SeedpacketHandler _handler; + public bool _forbidden; + public bool _locked; public bool disablePacket = false; @@ -22,7 +24,7 @@ public partial class Seedpacket : TextureButton public override void _Ready() { if (_resource != null) - UpdateContents(); + UpdateContents(); if (Prefab == null) { Prefab = ResourceLoader.Load(PATH_TO_PACKED_SCENE); @@ -44,10 +46,10 @@ public partial class Seedpacket : TextureButton } if (_handler is ISeedpacketProcess processHandler) processHandler.Process(); } - public void SetResource(DisplayResource resource ) + public void SetResource(DisplayResource resource) { _resource = resource; - + UpdateContents(); } @@ -77,6 +79,7 @@ public partial class Seedpacket : TextureButton public override void _Pressed() { GrabFocus(); + if (_forbidden || _locked) return; if (_handler is ISeedpacketPress pressHandler) pressHandler.Pressed(); } @@ -91,4 +94,14 @@ public partial class Seedpacket : TextureButton { if (_handler is ISeedpacketUnfocus unfocusHandler) unfocusHandler.OnUnfocused(); } + public void SetForbidden(bool value) + { + _forbidden = value; + GetNode("ForbiddenTexture").Visible = value; + } + public void SetLocked(bool value) + { + _locked = value; + GetNode("LockedTexture").Visible = value; + } } diff --git a/translations/plants.csv b/translations/plants.csv index 025a0ce..0656535 100644 --- a/translations/plants.csv +++ b/translations/plants.csv @@ -1,85 +1,67 @@ keys,en,ru aloe,Aloe,Алоэ -aloe_desc,"[p]Aloe heals injured plants.[/p] -[p]Health points: [color=DARK_RED]6 bites[/color][/p] -[p]Reload time: [color=DARK_RED]15 seconds[/color].[/p] -[p]Ability recharge time: [color=DARK_RED]20 seconds[/color].[/p] -[p]Heals plant when it has [color=DARK_RED]third[/color] of its health.[/p]","Алоэ лечит израненные растения. -Очки здоровья: [color=dark_red]6 укусов[/color]. +aloe_desc,"Health points: [color=DARK_RED]6 bites[/color] +Reload time: [color=DARK_RED]15 seconds[/color]. +Ability recharge time: [color=DARK_RED]20 seconds[/color]. +Heals plant when it has [color=DARK_RED]third[/color] of its health.","Очки здоровья: [color=dark_red]6 укусов[/color]. Время перезарядки: [color=dark_red]15 секунд[/color]. Время перезарядки способности: [color=dark_red]20 секунд[/color]. Лечит растения [color=DARK_RED]с третью[/color] здоровья." garlic,Garlic,Чеснок -garlic_desc,"[p]Redirects zombies that bite it.[/p] -[p]Health points: [color=DARK_RED]40 bites[/color][/p] -[p]Reload time: [color=DARK_RED]15 seconds[/color].[/p]","Перенаправляет зомби, которые его кусают. -Очки здоровья: [color=DARK_RED]40 укусов[/color] +garlic_desc,"Health points: [color=DARK_RED]40 bites[/color] +Reload time: [color=DARK_RED]15 seconds[/color].","Очки здоровья: [color=DARK_RED]40 укусов[/color] Время перезарядки: [color=DARK_RED]15 секунд[/color]." peashooter,Peashooter,Горохострел -peashooter_desc,"[p]Simply shoots peas at zombies on the lane[/p] -[p]Health points: [color=DARK_RED]6 bites[/color].[/p] -[p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] -[p]Pea damage: [color=DARK_RED]1 pea[/color].[/p] -[p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p]","Просто стреляет в зомби на линии. -Очки здоровья: [color=DARK_RED]6 укусов[/color]. +peashooter_desc,"Health points: [color=DARK_RED]6 bites[/color]. +Reload time: [color=DARK_RED]5 seconds[/color]. +Pea damage: [color=DARK_RED]1 pea[/color]. +Firerate: [color=DARK_RED]1.5 seconds[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон от гороха: [color=DARK_RED]1 горошина[/color]. Задержка стрельбы: [color=DARK_RED]1.5 секунды[/color]." potatomine,Potato mine,Картофельная мина -potatomine_desc,"[p]Explodes when stepped on. Needs some time to prime.[/p] -[p]Health points: [color=DARK_RED]4 bites[/color].[/p] -[p]Reload time: [color=DARK_RED]25 seconds[/color].[/p] -[p]Explosion damage: [color=DARK_RED]600 peas[/color].[/p] -[p]Prime time: [color=DARK_RED]15 seconds[/color].[/p]","Взрывается когда на неё наступают. Требует некоторое время для роста. -Очки здоровья: [color=DARK_RED]4 Укуса[/color]. +potatomine_desc,"Health points: [color=DARK_RED]4 bites[/color]. +Reload time: [color=DARK_RED]25 seconds[/color]. +Explosion damage: [color=DARK_RED]600 peas[/color]. +Prime time: [color=DARK_RED]15 seconds[/color].","Очки здоровья: [color=DARK_RED]4 Укуса[/color]. Время перезарядки: [color=DARK_RED]25 seconds[/color]. Урон от взрыва: [color=DARK_RED]600 горошин[/color]. Время роста: [color=DARK_RED]15 секунд[/color]." snowpea,Snowpea,Снежный горох -snowpea_desc,"[p]Shoots slowing peas at zombies.[/p] -[p]Health points: [color=DARK_RED]6 bites[/color].[/p] -[p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] -[p]Pea damage: [color=DARK_RED]1 pea[/color].[/p] -[p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p] -[p]Slow percentage: [color=STEEL_BLUE]25%[/color].[/p]","Стреляет замедляющими горошинами в зомби. -Очки здоровья: [color=DARK_RED]6 укусов[/color]. +snowpea_desc,"Health points: [color=DARK_RED]6 bites[/color]. +Reload time: [color=DARK_RED]5 seconds[/color]. +Pea damage: [color=DARK_RED]1 pea[/color]. +Firerate: [color=DARK_RED]1.5 seconds[/color]. +Slow percentage: [color=STEEL_BLUE]25%[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон от гороха: [color=DARK_RED]1 горошина[/color]. Задержка стрельбы: [color=DARK_RED]1.5 секунды[/color]. Процент замедления: [color=STEEL_BLUE]25%[/color]." spikeweed,Spikeweed,Колючка -spikeweed_desc,"[p]Attacks zombies that step on it.[/p] -[p]Health points: [color=DARK_RED]6 bites[/color].[/p] -[p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] -[p]Damage per second: [color=DARK_RED]0.9 peas[/color].[/p]","Атакует наступающих на неё зомби. -Очки здоровья: [color=DARK_RED]6 укусов[/color]. +spikeweed_desc,"Health points: [color=DARK_RED]6 bites[/color]. +Reload time: [color=DARK_RED]5 seconds[/color]. +Damage per second: [color=DARK_RED]0.9 peas[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон в секунду: [color=DARK_RED]0.9 горошин[/color]." sunflower,Sunflower,Подсолнух -sunflower_desc,"[p]Produces sun over time.[/p] -[p]Health points: [color=DARK_RED]6 bites[/color][/p] -[p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] -[p]Initial sun production time: [color=DARK_RED]12 seconds[/color].[/p] -[p]Sun production time: [color=DARK_RED]24 seconds[/color](After first sun produced).[/p]","Производит солнце время от времени. -Очки здоровья: [color=DARK_RED]6 укусов[/color] +sunflower_desc,"Health points: [color=DARK_RED]6 bites[/color] +Reload time: [color=DARK_RED]5 seconds[/color]. +Initial sun production time: [color=DARK_RED]12 seconds[/color]. +Sun production time: [color=DARK_RED]24 seconds[/color](After first sun produced).","Очки здоровья: [color=DARK_RED]6 укусов[/color] Время перезарядки: [color=DARK_RED]5 секунд[/color]. Изначальная задержка выработки солнца: [color=DARK_RED]12 секунд[/color]. Задержка выработки солнца: [color=DARK_RED]24 секунды[/color](После первого солнца)." threepeater,Threepeater,Тристрел -threepeater_desc,"[p]Shoots peas at zombies in three lanes.[/p] -[p]Health points: [color=DARK_RED]6 bites[/color].[/p] -[p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] -[p]Pea damage: [color=DARK_RED]1 pea[/color] ([color=DARK_RED]3 pea[/color] when in close quarters).[/p] -[p]Firerate: [color=DARK_RED]1.6 seconds[/color].[/p]","Стреляет в зомби по трём линиям. -Очки здоровья: [color=DARK_RED]6 укусов[/color]. +threepeater_desc,"Health points: [color=DARK_RED]6 bites[/color]. +Reload time: [color=DARK_RED]5 seconds[/color]. +Pea damage: [color=DARK_RED]1 pea[/color] ([color=DARK_RED]3 pea[/color] when in close quarters). +Firerate: [color=DARK_RED]1.6 seconds[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон от гороха: [color=DARK_RED]1 горошина[/color] ([color=DARK_RED]3 горошины[/color] вблизи). Задержка стрельбы: [color=DARK_RED]1.6 секунд[/color]." wallnut,Wallnut,Стенорех -wallnut_desc,"[p]Absorbs zombie damage. Does nothing special[/p] -[p]Health points: [color=DARK_RED]120 bites[/color][/p] -[p]Reload time: [color=DARK_RED]20 seconds[/color].[/p]","Принимает на себя урон от зомби. Ничего интересного. -Очки здоровья: [color=DARK_RED]120 укусов[/color] +wallnut_desc,"Health points: [color=DARK_RED]120 bites[/color] +Reload time: [color=DARK_RED]20 seconds[/color].","Очки здоровья: [color=DARK_RED]120 укусов[/color] Время перезарядки: [color=DARK_RED]20 секунд[/color]." nerdus,Pickly cactus,Колкий кактус nerdus_desc,"He is very critical about other’s behaviour. He likes to pay people back in kind. diff --git a/translations/plants.en.translation b/translations/plants.en.translation index 7bf2ec4..2b07ed4 100644 Binary files a/translations/plants.en.translation and b/translations/plants.en.translation differ diff --git a/translations/plants.ru.translation b/translations/plants.ru.translation index 0f82143..dd9c233 100644 Binary files a/translations/plants.ru.translation and b/translations/plants.ru.translation differ diff --git a/translations/rewards.csv b/translations/rewards.csv index 89b8c17..5b21923 100644 --- a/translations/rewards.csv +++ b/translations/rewards.csv @@ -8,6 +8,7 @@ rwd_snowpea,Shoots slowing peas at zombies.,Стреляет замедляющ rwd_sunflower,Produces sun.,Производит солнышки. rwd_threepeater,Shoots peas in three lanes.,Стреляет по трём линиям. rwd_wallnut,Protects plants from zombies.,Защищает растения от зомби. -,, +rwd_spikeweed,Attacks zombies that step on it,Атакует зомби которые наступают на него. moneybag,Money bag,Мешок с монетами rwd_moneybag,Now you have some money to buy new plants.,Теперь у вас есть деньги чтобы затариться в магазине. +rwd_peashooter,Simply shoots peas at zomibes.,Просто стреляет горошинами по зомби. diff --git a/translations/rewards.en.translation b/translations/rewards.en.translation index 0f219f6..dcc6bfe 100644 Binary files a/translations/rewards.en.translation and b/translations/rewards.en.translation differ diff --git a/translations/rewards.ru.translation b/translations/rewards.ru.translation index c1a9c70..03ce233 100644 Binary files a/translations/rewards.ru.translation and b/translations/rewards.ru.translation differ