moved to new understanding of what a wave is
This commit is contained in:
@@ -1,22 +1,17 @@
|
|||||||
[gd_resource type="Resource" script_class="LevelSpecs" format=3 uid="uid://b67b70x1uf2el"]
|
[gd_resource type="Resource" script_class="LevelConfig" format=3 uid="uid://b67b70x1uf2el"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_yuhm2"]
|
[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_yuhm2"]
|
||||||
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_specs.gd" id="2_52rgn"]
|
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_config.gd" id="2_52rgn"]
|
||||||
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_vvycy"]
|
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_vvycy"]
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_5cjqa"]
|
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_5cjqa"]
|
||||||
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="3_ksxj8"]
|
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="3_ksxj8"]
|
||||||
[ext_resource type="Resource" uid="uid://cygfdfqhk2vhw" path="res://Levels/Level1/wave1.tres" id="6_xm2iu"]
|
[ext_resource type="Resource" uid="uid://cygfdfqhk2vhw" path="res://Levels/Level1/wave1.tres" id="6_xm2iu"]
|
||||||
[ext_resource type="Resource" uid="uid://bdqng70bpcvp8" path="res://Levels/Level1/wave2.tres" id="7_ginir"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dasqxcoenje00" path="res://Levels/Level1/wave3.tres" id="8_heo8u"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c0ln1sfxmvhaf" path="res://Levels/Level1/wave4.tres" id="9_5mf8a"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b8e1xvwr2f4pf" path="res://Levels/Level1/wave5.tres" id="10_skwnu"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bsmpkojn7bmqq" path="res://Levels/Level1/wave6.tres" id="11_rusuq"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cqm54pu03l510" path="res://Zones/Moat/zc_moat.tres" id="12_qh4uj"]
|
[ext_resource type="Resource" uid="uid://cqm54pu03l510" path="res://Zones/Moat/zc_moat.tres" id="12_qh4uj"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("2_52rgn")
|
script = ExtResource("2_52rgn")
|
||||||
hero_class = ExtResource("3_ksxj8")
|
hero_class = ExtResource("3_ksxj8")
|
||||||
allowed_cards = Array[ExtResource("1_yuhm2")]([ExtResource("2_vvycy")])
|
allowed_cards = Array[ExtResource("1_yuhm2")]([ExtResource("2_vvycy")])
|
||||||
waves = Array[ExtResource("3_5cjqa")]([ExtResource("6_xm2iu"), ExtResource("7_ginir"), ExtResource("8_heo8u"), ExtResource("9_5mf8a"), ExtResource("10_skwnu"), ExtResource("11_rusuq")])
|
waves = Array[ExtResource("3_5cjqa")]([ExtResource("6_xm2iu")])
|
||||||
zone = ExtResource("12_qh4uj")
|
zone = ExtResource("12_qh4uj")
|
||||||
metadata/_custom_type_script = "uid://dalgif6huggwg"
|
metadata/_custom_type_script = "uid://dalgif6huggwg"
|
||||||
|
|||||||
@@ -1,13 +1,33 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cygfdfqhk2vhw"]
|
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cygfdfqhk2vhw"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_ijigs"]
|
[ext_resource type="Script" uid="uid://3grc2j4bjrnw" path="res://enemy_group.gd" id="1_wj13r"]
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_tihwe"]
|
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_tihwe"]
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_ywnes"]
|
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_ywnes"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_wug4u"]
|
||||||
|
script = ExtResource("1_wj13r")
|
||||||
|
enemy = ExtResource("2_ywnes")
|
||||||
|
count = 4
|
||||||
|
metadata/_custom_type_script = "uid://3grc2j4bjrnw"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_1qdvn"]
|
||||||
|
script = ExtResource("1_wj13r")
|
||||||
|
enemy = ExtResource("2_ywnes")
|
||||||
|
count = 4
|
||||||
|
metadata/_custom_type_script = "uid://3grc2j4bjrnw"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_pwamm"]
|
||||||
|
script = ExtResource("1_wj13r")
|
||||||
|
enemy = ExtResource("2_ywnes")
|
||||||
|
count = 2
|
||||||
|
metadata/_custom_type_script = "uid://3grc2j4bjrnw"
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("2_tihwe")
|
script = ExtResource("2_tihwe")
|
||||||
enemies = Dictionary[ExtResource("1_ijigs"), int]({
|
enemy_groups = Dictionary[ExtResource("1_wj13r"), int]({
|
||||||
ExtResource("2_ywnes"): 10
|
SubResource("Resource_wug4u"): 0,
|
||||||
|
SubResource("Resource_1qdvn"): 1,
|
||||||
|
SubResource("Resource_pwamm"): 4
|
||||||
})
|
})
|
||||||
rewards_blank_cassette = true
|
rewards_blank_cassette = true
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://bdqng70bpcvp8"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_ddbxs"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_mjqnu"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_yby3c"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_yby3c")
|
|
||||||
enemies = Dictionary[ExtResource("1_ddbxs"), int]({
|
|
||||||
ExtResource("2_mjqnu"): 25
|
|
||||||
})
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://dasqxcoenje00"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_8j1mh"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_cyr3d"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_mvtl1"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="3_6mlj7"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_mvtl1")
|
|
||||||
enemies = Dictionary[ExtResource("1_8j1mh"), int]({
|
|
||||||
ExtResource("2_cyr3d"): 15,
|
|
||||||
ExtResource("3_6mlj7"): 5
|
|
||||||
})
|
|
||||||
rewards_blank_cassette = true
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://c0ln1sfxmvhaf"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_k10uy"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_6kjfn"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="2_htd28"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_6kjfn")
|
|
||||||
enemies = Dictionary[ExtResource("1_k10uy"), int]({
|
|
||||||
ExtResource("2_htd28"): 40
|
|
||||||
})
|
|
||||||
new_shop = true
|
|
||||||
bonus_cash = 20
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://b8e1xvwr2f4pf"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_evs1i"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_38p3i"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_gexw5"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="3_8y41r"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_gexw5")
|
|
||||||
enemies = Dictionary[ExtResource("1_evs1i"), int]({
|
|
||||||
ExtResource("2_38p3i"): 20,
|
|
||||||
ExtResource("3_8y41r"): 15
|
|
||||||
})
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://bsmpkojn7bmqq"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_asx4x"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_ltlqs"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_u1tse"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_ltlqs")
|
|
||||||
enemies = Dictionary[ExtResource("1_asx4x"), int]({
|
|
||||||
ExtResource("2_u1tse"): 40
|
|
||||||
})
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,26 +1,19 @@
|
|||||||
[gd_resource type="Resource" script_class="LevelSpecs" format=3 uid="uid://dffoufw4bnfn7"]
|
[gd_resource type="Resource" script_class="LevelConfig" format=3 uid="uid://dffoufw4bnfn7"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_rchhl"]
|
[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_rchhl"]
|
||||||
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_geygk"]
|
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_geygk"]
|
||||||
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_specs.gd" id="2_y3kr2"]
|
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_config.gd" id="2_y3kr2"]
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_05rhi"]
|
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_05rhi"]
|
||||||
[ext_resource type="Resource" uid="uid://b37r54q84vqoi" path="res://Cards/rocket_launcher.tres" id="3_xdjpy"]
|
[ext_resource type="Resource" uid="uid://b37r54q84vqoi" path="res://Cards/rocket_launcher.tres" id="3_xdjpy"]
|
||||||
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="4_ldc6i"]
|
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="4_ldc6i"]
|
||||||
[ext_resource type="Resource" uid="uid://7dqtd1owl7g3" path="res://Levels/Level2/wave1.tres" id="7_siv73"]
|
[ext_resource type="Resource" uid="uid://7dqtd1owl7g3" path="res://Levels/Level2/wave1.tres" id="7_siv73"]
|
||||||
[ext_resource type="Resource" uid="uid://dafixx8vfmr3h" path="res://Levels/Level2/wave2.tres" id="8_kee6w"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cricfym5wcf3w" path="res://Levels/Level2/wave3.tres" id="9_k6fmx"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cky3wcbc3kob0" path="res://Levels/Level2/wave4.tres" id="10_dd7gv"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b5wbmohc1ryla" path="res://Levels/Level2/wave5.tres" id="11_nmbqu"]
|
|
||||||
[ext_resource type="Resource" uid="uid://11e6ak5jg2pn" path="res://Levels/Level2/wave6.tres" id="12_p0fmg"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cvtuui3grpslm" path="res://Levels/Level2/wave7.tres" id="13_alfsy"]
|
|
||||||
[ext_resource type="Resource" uid="uid://7t61us4e01bb" path="res://Levels/Level2/wave8.tres" id="14_jyonc"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cqm54pu03l510" path="res://Zones/Moat/zc_moat.tres" id="15_movdo"]
|
[ext_resource type="Resource" uid="uid://cqm54pu03l510" path="res://Zones/Moat/zc_moat.tres" id="15_movdo"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("2_y3kr2")
|
script = ExtResource("2_y3kr2")
|
||||||
hero_class = ExtResource("4_ldc6i")
|
hero_class = ExtResource("4_ldc6i")
|
||||||
allowed_cards = Array[ExtResource("1_rchhl")]([ExtResource("2_geygk"), ExtResource("3_xdjpy")])
|
allowed_cards = Array[ExtResource("1_rchhl")]([ExtResource("2_geygk"), ExtResource("3_xdjpy")])
|
||||||
waves = Array[ExtResource("3_05rhi")]([ExtResource("7_siv73"), ExtResource("8_kee6w"), ExtResource("9_k6fmx"), ExtResource("10_dd7gv"), ExtResource("11_nmbqu"), ExtResource("12_p0fmg"), ExtResource("13_alfsy"), ExtResource("14_jyonc")])
|
waves = Array[ExtResource("3_05rhi")]([ExtResource("7_siv73")])
|
||||||
points_blocked = Array[int]([34, 33, 41, 40, 39, 47, 79, 86, 85, 78, 91, 84])
|
points_blocked = Array[int]([34, 33, 41, 40, 39, 47, 79, 86, 85, 78, 91, 84])
|
||||||
zone = ExtResource("15_movdo")
|
zone = ExtResource("15_movdo")
|
||||||
metadata/_custom_type_script = "uid://dalgif6huggwg"
|
metadata/_custom_type_script = "uid://dalgif6huggwg"
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://7dqtd1owl7g3"]
|
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://7dqtd1owl7g3"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_dhlut"]
|
[ext_resource type="Script" uid="uid://3grc2j4bjrnw" path="res://enemy_group.gd" id="1_t312x"]
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_50dab"]
|
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_50dab"]
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_iaotk"]
|
[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="2_juva6"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_76qlp"]
|
||||||
|
script = ExtResource("1_t312x")
|
||||||
|
enemy = ExtResource("2_juva6")
|
||||||
|
count = 15
|
||||||
|
metadata/_custom_type_script = "uid://3grc2j4bjrnw"
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("2_50dab")
|
script = ExtResource("2_50dab")
|
||||||
enemies = Dictionary[ExtResource("1_dhlut"), int]({
|
enemy_groups = Dictionary[ExtResource("1_t312x"), int]({
|
||||||
ExtResource("2_iaotk"): 5
|
SubResource("Resource_76qlp"): 2
|
||||||
})
|
})
|
||||||
rewards_blank_cassette = true
|
rewards_blank_cassette = true
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://dafixx8vfmr3h"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_rhace"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_l5n6q"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="2_n5glm"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_l5n6q")
|
|
||||||
enemies = Dictionary[ExtResource("1_rhace"), int]({
|
|
||||||
ExtResource("2_n5glm"): 6
|
|
||||||
})
|
|
||||||
new_shop = true
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cricfym5wcf3w"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_a61ug"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="2_3ov7j"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_47xps"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_47xps")
|
|
||||||
enemies = Dictionary[ExtResource("1_a61ug"), int]({
|
|
||||||
ExtResource("2_3ov7j"): 10
|
|
||||||
})
|
|
||||||
rewards_blank_cassette = true
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cky3wcbc3kob0"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_7c1qm"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_6m45b"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_n286l"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="3_qjnea"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="4_8uy8t"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_n286l")
|
|
||||||
enemies = Dictionary[ExtResource("1_7c1qm"), int]({
|
|
||||||
ExtResource("2_6m45b"): 6,
|
|
||||||
ExtResource("3_qjnea"): 2,
|
|
||||||
ExtResource("4_8uy8t"): 8
|
|
||||||
})
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://b5wbmohc1ryla"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_yfa3k"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_84e3q"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_ugnlg"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="3_3e1qp"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_84e3q")
|
|
||||||
enemies = Dictionary[ExtResource("1_yfa3k"), int]({
|
|
||||||
ExtResource("2_ugnlg"): 10,
|
|
||||||
ExtResource("3_3e1qp"): 10
|
|
||||||
})
|
|
||||||
rewards_blank_cassette = true
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://11e6ak5jg2pn"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_n1yiu"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_f752f"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="3_uomax"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="4_mu3r3"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="4_wrrsl"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_f752f")
|
|
||||||
enemies = Dictionary[ExtResource("1_n1yiu"), int]({
|
|
||||||
ExtResource("3_uomax"): 6,
|
|
||||||
ExtResource("4_mu3r3"): 3,
|
|
||||||
ExtResource("4_wrrsl"): 8
|
|
||||||
})
|
|
||||||
new_shop = true
|
|
||||||
bonus_cash = 3
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cvtuui3grpslm"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_j1606"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="2_6r48e"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_uttqy"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="3_ptl2k"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_uttqy")
|
|
||||||
enemies = Dictionary[ExtResource("1_j1606"), int]({
|
|
||||||
ExtResource("2_6r48e"): 35,
|
|
||||||
ExtResource("3_ptl2k"): 5
|
|
||||||
})
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://7t61us4e01bb"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_f4qev"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="2_3trsl"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="2_r8dsv"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="3_o75u5"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_3trsl")
|
|
||||||
enemies = Dictionary[ExtResource("1_f4qev"), int]({
|
|
||||||
ExtResource("2_r8dsv"): 25,
|
|
||||||
ExtResource("3_o75u5"): 5
|
|
||||||
})
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
@@ -1,19 +1,18 @@
|
|||||||
[gd_resource type="Resource" script_class="LevelSpecs" format=3 uid="uid://dgrcneuv4fut"]
|
[gd_resource type="Resource" script_class="LevelConfig" format=3 uid="uid://dgrcneuv4fut"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_ldkvi"]
|
[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_ldkvi"]
|
||||||
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_0atj5"]
|
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_0atj5"]
|
||||||
[ext_resource type="Resource" uid="uid://cvto66tp7rrst" path="res://Cards/gatling.tres" id="3_sbxeq"]
|
[ext_resource type="Resource" uid="uid://cvto66tp7rrst" path="res://Cards/gatling.tres" id="3_sbxeq"]
|
||||||
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="4_5rrxx"]
|
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="4_5rrxx"]
|
||||||
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_specs.gd" id="5_kje1i"]
|
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_config.gd" id="5_kje1i"]
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="6_gmv8c"]
|
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="6_gmv8c"]
|
||||||
[ext_resource type="Resource" uid="uid://cwy6wxuujgqbq" path="res://Levels/Level3/wave1.tres" id="7_43tyk"]
|
[ext_resource type="Resource" uid="uid://cwy6wxuujgqbq" path="res://Levels/Level3/wave1.tres" id="7_43tyk"]
|
||||||
[ext_resource type="Resource" uid="uid://c0jg2k4igwt7y" path="res://Levels/Level3/wave2.tres" id="8_mblpn"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dicfpbrig37m8" path="res://Zones/Cave/zc_cave.tres" id="9_sbxeq"]
|
[ext_resource type="Resource" uid="uid://dicfpbrig37m8" path="res://Zones/Cave/zc_cave.tres" id="9_sbxeq"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("5_kje1i")
|
script = ExtResource("5_kje1i")
|
||||||
hero_class = ExtResource("4_5rrxx")
|
hero_class = ExtResource("4_5rrxx")
|
||||||
allowed_cards = Array[ExtResource("1_ldkvi")]([ExtResource("2_0atj5"), ExtResource("3_sbxeq")])
|
allowed_cards = Array[ExtResource("1_ldkvi")]([ExtResource("2_0atj5"), ExtResource("3_sbxeq")])
|
||||||
waves = Array[ExtResource("6_gmv8c")]([ExtResource("7_43tyk"), ExtResource("8_mblpn")])
|
waves = Array[ExtResource("6_gmv8c")]([ExtResource("7_43tyk")])
|
||||||
zone = ExtResource("9_sbxeq")
|
zone = ExtResource("9_sbxeq")
|
||||||
metadata/_custom_type_script = "uid://dalgif6huggwg"
|
metadata/_custom_type_script = "uid://dalgif6huggwg"
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cwy6wxuujgqbq"]
|
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://cwy6wxuujgqbq"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_b6olw"]
|
[ext_resource type="Script" uid="uid://3grc2j4bjrnw" path="res://enemy_group.gd" id="1_6ssfe"]
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_b51i4"]
|
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="2_lvtoc"]
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_frc10"]
|
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_frc10"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_hrsx4"]
|
||||||
|
script = ExtResource("1_6ssfe")
|
||||||
|
enemy = ExtResource("2_lvtoc")
|
||||||
|
count = 4
|
||||||
|
metadata/_custom_type_script = "uid://3grc2j4bjrnw"
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("3_frc10")
|
script = ExtResource("3_frc10")
|
||||||
enemies = Dictionary[ExtResource("1_b6olw"), int]({
|
enemy_groups = Dictionary[ExtResource("1_6ssfe"), int]({
|
||||||
ExtResource("2_b51i4"): 10
|
SubResource("Resource_hrsx4"): 0
|
||||||
})
|
})
|
||||||
rewards_blank_cassette = true
|
rewards_blank_cassette = true
|
||||||
bonus_cash = 3
|
bonus_cash = 3
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
[gd_resource type="Resource" script_class="WaveConfig" format=3 uid="uid://c0jg2k4igwt7y"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_8x0w6"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="2_0iv0c"]
|
|
||||||
[ext_resource type="Script" uid="uid://bp6q371iypd06" path="res://Scripts/wave_config.gd" id="3_pap4a"]
|
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="3_t4518"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("3_pap4a")
|
|
||||||
enemies = Dictionary[ExtResource("1_8x0w6"), int]({
|
|
||||||
ExtResource("2_0iv0c"): 3,
|
|
||||||
ExtResource("3_t4518"): 10
|
|
||||||
})
|
|
||||||
new_shop = true
|
|
||||||
rewards_blank_cassette = true
|
|
||||||
bonus_cash = 19
|
|
||||||
metadata/_custom_type_script = "uid://bp6q371iypd06"
|
|
||||||
36
PCs/hud.gd
36
PCs/hud.gd
@@ -36,7 +36,6 @@ extends CanvasLayer
|
|||||||
var last_lives_count: int = Data.starting_lives
|
var last_lives_count: int = Data.starting_lives
|
||||||
var enemy_names: Array[String]
|
var enemy_names: Array[String]
|
||||||
var map_anchor: Node3D
|
var map_anchor: Node3D
|
||||||
var cards: Array[EnemyCardUI] = []
|
|
||||||
var feature_preview_tween: Tween
|
var feature_preview_tween: Tween
|
||||||
var enemy_count: int = 0
|
var enemy_count: int = 0
|
||||||
|
|
||||||
@@ -90,38 +89,6 @@ func set_blank_cassette_count(value: int) -> void:
|
|||||||
blank_cassette_label.text = str(value)
|
blank_cassette_label.text = str(value)
|
||||||
|
|
||||||
|
|
||||||
func show_wave_generation_anim(wave: Wave) -> void:
|
|
||||||
for card: EnemyCardUI in cards:
|
|
||||||
card.queue_free()
|
|
||||||
cards = []
|
|
||||||
var x: int = 0
|
|
||||||
var final_x_coords: Array[int] = [-550, -275, 0, 275, 550]
|
|
||||||
for card: EnemyCard in wave.enemy_groups:
|
|
||||||
var card_ui: EnemyCardUI = enemy_card_scene.instantiate()
|
|
||||||
card_ui.set_enemy(card)
|
|
||||||
add_child(card_ui)
|
|
||||||
cards.append(card_ui)
|
|
||||||
#$Control.add_child(card_ui)
|
|
||||||
card_ui.position = $Control2.position
|
|
||||||
var i: int = 0
|
|
||||||
var j: int = 0
|
|
||||||
for card: EnemyCardUI in cards:
|
|
||||||
var anchor: Vector2 = $Control3.position
|
|
||||||
anchor -= Vector2(int(card.get_child(0).size.x / 2.0), int(card.get_child(0).size.y / 2.0))
|
|
||||||
anchor.x += final_x_coords[i]
|
|
||||||
var tween: Tween = create_tween()
|
|
||||||
tween.tween_interval((0.3 * j) + (1.4 * int(j / 5.0)))
|
|
||||||
tween.tween_property(card, "position", anchor, 0.3)
|
|
||||||
tween.tween_interval(3.0)
|
|
||||||
tween.tween_property(card, "position", anchor + Vector2.UP * 700, 0.5)
|
|
||||||
tween.set_ease(Tween.EASE_OUT)
|
|
||||||
tween.set_trans(Tween.TRANS_QUINT)
|
|
||||||
i += 1
|
|
||||||
if i >= final_x_coords.size():
|
|
||||||
i = 0
|
|
||||||
j += 1
|
|
||||||
|
|
||||||
|
|
||||||
func set_energy_visible(value: bool) -> void:
|
func set_energy_visible(value: bool) -> void:
|
||||||
energy_pips.visible = value
|
energy_pips.visible = value
|
||||||
|
|
||||||
@@ -222,7 +189,8 @@ func enemy_count_down(enemy: Enemy) -> void:
|
|||||||
enemy_count_label.text = str(enemy_count)
|
enemy_count_label.text = str(enemy_count)
|
||||||
|
|
||||||
|
|
||||||
func set_upcoming_wave(value: Dictionary) -> void:
|
#the value dictionary should be enemy titles matched to how many of that enemy
|
||||||
|
func set_upcoming_wave(value: Dictionary[String, int]) -> void:
|
||||||
enemy_count = 0
|
enemy_count = 0
|
||||||
var frame_count: int = 0
|
var frame_count: int = 0
|
||||||
enemy_names = []
|
enemy_names = []
|
||||||
|
|||||||
@@ -128,9 +128,9 @@ func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
|
|||||||
button_collider.disabled = true
|
button_collider.disabled = true
|
||||||
$StaticBody3D/AudioStreamPlayer3D.play()
|
$StaticBody3D/AudioStreamPlayer3D.play()
|
||||||
#print("button pressed")
|
#print("button pressed")
|
||||||
#print(reply.game_manager.level_specs.waves)
|
#print(reply.game_manager.level_config.waves)
|
||||||
#print(reply.game_manager.level_specs.waves[0].station)
|
#print(reply.game_manager.level_config.waves[0].station)
|
||||||
#print(reply.game_manager.level_specs.waves[1].station)
|
#print(reply.game_manager.level_config.waves[1].station)
|
||||||
#for spec: WaveConfig in reply.game_manager.level_specs.waves:
|
#for spec: WaveConfig in reply.game_manager.level_config.waves:
|
||||||
# print(Data.Rarity.keys()[spec.station])
|
# print(Data.Rarity.keys()[spec.station])
|
||||||
find_cards(reply.hero_class.faction, reply.game_manager.level_specs.waves[reply.game_manager.wave - 1].station, reply.game_manager.level_specs.allowed_cards)
|
find_cards(reply.hero_class.faction, reply.game_manager.level_config.waves[reply.game_manager.wave - 1].station, reply.game_manager.level_config.allowed_cards)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
class_name LevelSpecs extends Resource
|
class_name LevelConfig
|
||||||
|
extends Resource
|
||||||
|
|
||||||
@export var hero_class: HeroClass
|
@export var hero_class: HeroClass
|
||||||
@export var allowed_cards: Array[Card]
|
@export var allowed_cards: Array[Card]
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
class_name EnemyCard
|
|
||||||
extends RefCounted
|
|
||||||
|
|
||||||
|
|
||||||
var enemy: Enemy = null
|
|
||||||
var count: int
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://brf6kradnuce8
|
|
||||||
@@ -14,7 +14,7 @@ signal enemy_spawned()
|
|||||||
|
|
||||||
var enemy_died_callback: Callable
|
var enemy_died_callback: Callable
|
||||||
var enemy_reached_goal_callback: Callable
|
var enemy_reached_goal_callback: Callable
|
||||||
var current_wave: Array[EnemyCard]
|
var current_wave: Array[EnemyGroup]
|
||||||
var enemy_types_to_spawn: Dictionary = {}
|
var enemy_types_to_spawn: Dictionary = {}
|
||||||
var enemy_spawn_timers: Dictionary = {}
|
var enemy_spawn_timers: Dictionary = {}
|
||||||
var enemies_spawned: Dictionary = {}
|
var enemies_spawned: Dictionary = {}
|
||||||
@@ -125,7 +125,7 @@ func networked_spawn_air_enemy(enemy_num: int, pos: Vector3, id1: int, id2: int)
|
|||||||
func spawn_wave() -> void:
|
func spawn_wave() -> void:
|
||||||
enemies_to_spawn = 0
|
enemies_to_spawn = 0
|
||||||
enemy_spawn_timers = {}
|
enemy_spawn_timers = {}
|
||||||
for card: EnemyCard in current_wave:
|
for card: EnemyGroup in current_wave:
|
||||||
enemy_types_to_spawn[card.enemy] += card.count
|
enemy_types_to_spawn[card.enemy] += card.count
|
||||||
enemies_to_spawn += card.count
|
enemies_to_spawn += card.count
|
||||||
#print(card.enemy.title + ": " + str(card.count))
|
#print(card.enemy.title + ": " + str(card.count))
|
||||||
@@ -135,6 +135,6 @@ func spawn_wave() -> void:
|
|||||||
done_spawning = false
|
done_spawning = false
|
||||||
|
|
||||||
|
|
||||||
func add_card(new_card: EnemyCard) -> void:
|
func add_card(new_card: EnemyGroup) -> void:
|
||||||
current_wave.append(new_card)
|
current_wave.append(new_card)
|
||||||
enemy_types_to_spawn[new_card.enemy] = 0
|
enemy_types_to_spawn[new_card.enemy] = 0
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ var shop_chance: float = 0.0
|
|||||||
var stats: RoundStats
|
var stats: RoundStats
|
||||||
var card_gameplay: bool = false
|
var card_gameplay: bool = false
|
||||||
var level_layout: FlowFieldData
|
var level_layout: FlowFieldData
|
||||||
var level_specs: LevelSpecs
|
var level_config: LevelConfig
|
||||||
|
|
||||||
|
|
||||||
#TODO: Create a reference to some generic Lobby object that wraps the multiplayer players list stuff
|
#TODO: Create a reference to some generic Lobby object that wraps the multiplayer players list stuff
|
||||||
@@ -92,23 +92,14 @@ func networked_set_wave(wave_number: int) -> void:
|
|||||||
|
|
||||||
|
|
||||||
##wave_count is number of upcoming waves this function should return
|
##wave_count is number of upcoming waves this function should return
|
||||||
func get_upcoming_waves(wave_count: int) -> Array[Wave]:
|
func get_upcoming_waves(wave_count: int) -> Array[WaveConfig]:
|
||||||
var waves: Array[Wave] = []
|
var waves: Array[WaveConfig] = []
|
||||||
var i: int = -1
|
waves.append_array(level_config.waves.slice(wave - 1))
|
||||||
for wave_config: WaveConfig in level_specs.waves.slice(wave - 1):
|
|
||||||
i += 1
|
|
||||||
var new_wave: Wave = Wave.new()
|
|
||||||
for enemy: Enemy in level_specs.waves[wave - 1 + i].enemies.keys():
|
|
||||||
var enemy_card: EnemyCard = EnemyCard.new()
|
|
||||||
enemy_card.enemy = enemy
|
|
||||||
enemy_card.count = level_specs.waves[wave - 1 + i].enemies[enemy]
|
|
||||||
new_wave.enemy_groups.append(enemy_card)
|
|
||||||
waves.append(new_wave)
|
|
||||||
if waves.size() < wave_count:
|
if waves.size() < wave_count:
|
||||||
var starting_wave: int = wave
|
var starting_wave: int = wave
|
||||||
for x: int in wave_count - waves.size():
|
for x: int in wave_count - waves.size():
|
||||||
var spawn_power: int = WaveManager.calculate_spawn_power(starting_wave + x, connected_players_nodes.size())
|
var spawn_power: int = WaveManager.calculate_spawn_power(starting_wave + x, connected_players_nodes.size())
|
||||||
var new_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
var new_wave: WaveConfig = WaveManager.generate_wave(spawn_power, level.enemy_pool, level.enemy_spawns.size())
|
||||||
waves.append(new_wave)
|
waves.append(new_wave)
|
||||||
return waves
|
return waves
|
||||||
|
|
||||||
@@ -118,7 +109,7 @@ func spawn_level(scene: PackedScene) -> void:
|
|||||||
var flow_field: FlowField = FlowField.new()
|
var flow_field: FlowField = FlowField.new()
|
||||||
level.flow_field = flow_field
|
level.flow_field = flow_field
|
||||||
level.add_child(flow_field)
|
level.add_child(flow_field)
|
||||||
flow_field.load_from_data(FlowFieldTool.load_flow_field_from_disc(level_specs.zone.flow_field_data_path))
|
flow_field.load_from_data(FlowFieldTool.load_flow_field_from_disc(level_config.zone.flow_field_data_path))
|
||||||
level.load_flow_field()
|
level.load_flow_field()
|
||||||
level.game_manager = self
|
level.game_manager = self
|
||||||
for x: EnemySpawner in level.enemy_spawns:
|
for x: EnemySpawner in level.enemy_spawns:
|
||||||
@@ -130,7 +121,7 @@ func spawn_level(scene: PackedScene) -> void:
|
|||||||
root_scene.add_child(level)
|
root_scene.add_child(level)
|
||||||
for spawner: EnemySpawner in level.enemy_spawns:
|
for spawner: EnemySpawner in level.enemy_spawns:
|
||||||
spawner.create_path()
|
spawner.create_path()
|
||||||
level.generate_obstacle(level_specs.points_blocked)
|
level.generate_obstacle(level_config.points_blocked)
|
||||||
|
|
||||||
|
|
||||||
func spawn_players() -> void:
|
func spawn_players() -> void:
|
||||||
@@ -186,16 +177,7 @@ func spawn_enemy_wave() -> void:
|
|||||||
wave_started.emit()
|
wave_started.emit()
|
||||||
|
|
||||||
|
|
||||||
func pre_generate_waves() -> Array[Wave]:
|
func set_wave_to_spawners(wave_thing: WaveConfig, wave_number: int) -> void:
|
||||||
var wave_list: Array[Wave] = []
|
|
||||||
for i: int in range(wave, wave_limit + 1):
|
|
||||||
var spawn_power: int = WaveManager.calculate_spawn_power(i, connected_players_nodes.size())
|
|
||||||
var generated_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
|
||||||
wave_list.append(generated_wave)
|
|
||||||
return wave_list
|
|
||||||
|
|
||||||
|
|
||||||
func set_wave_to_spawners(wave_thing: Wave, wave_number: int) -> void:
|
|
||||||
var spawners: Array[EnemySpawner] = level.enemy_spawns
|
var spawners: Array[EnemySpawner] = level.enemy_spawns
|
||||||
var ground_spawners: Array[EnemySpawner] = []
|
var ground_spawners: Array[EnemySpawner] = []
|
||||||
var air_spawners: Array[EnemySpawner] = []
|
var air_spawners: Array[EnemySpawner] = []
|
||||||
@@ -205,37 +187,35 @@ func set_wave_to_spawners(wave_thing: Wave, wave_number: int) -> void:
|
|||||||
else:
|
else:
|
||||||
air_spawners.append(spawner)
|
air_spawners.append(spawner)
|
||||||
var assignment_salt: int = 0
|
var assignment_salt: int = 0
|
||||||
for card: EnemyCard in wave_thing.enemy_groups:
|
for enemy_group: EnemyGroup in wave_thing.enemy_groups.keys():
|
||||||
assignment_salt += 1
|
assignment_salt += 1
|
||||||
if card.enemy.target_type == Data.EnemyType.LAND:
|
if enemy_group.enemy.target_type == Data.EnemyType.LAND:
|
||||||
ground_spawners[NoiseRandom.randi_in_range((wave_number * assignment_salt) - assignment_salt, 0, ground_spawners.size() - 1)].add_card(card)
|
ground_spawners[NoiseRandom.randi_in_range((wave_number * assignment_salt) - assignment_salt, 0, ground_spawners.size() - 1)].add_card(enemy_group)
|
||||||
else:
|
else:
|
||||||
air_spawners[NoiseRandom.randi_in_range((wave_number * assignment_salt) + assignment_salt, 0, air_spawners.size() - 1)].add_card(card)
|
air_spawners[NoiseRandom.randi_in_range((wave_number * assignment_salt) + assignment_salt, 0, air_spawners.size() - 1)].add_card(enemy_group)
|
||||||
|
|
||||||
|
|
||||||
func set_upcoming_wave() -> void:
|
func set_upcoming_wave() -> void:
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
if level_specs.waves.size() == 0:
|
if level_config.waves.size() == 0:
|
||||||
var spawn_power: int = WaveManager.calculate_spawn_power(wave, connected_players_nodes.size())
|
var spawn_power: int = WaveManager.calculate_spawn_power(wave, connected_players_nodes.size())
|
||||||
#var new_wave: Dictionary = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
#var new_wave: Dictionary = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
||||||
var new_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
var new_wave: WaveConfig = WaveManager.generate_wave(spawn_power, level.enemy_pool, level.enemy_spawns.size())
|
||||||
set_wave_to_spawners(new_wave, wave)
|
set_wave_to_spawners(new_wave, wave)
|
||||||
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
||||||
#networked_set_upcoming_wave.rpc(new_wave, 6 + floori(spawn_power / 70.0))
|
#networked_set_upcoming_wave.rpc(new_wave, 6 + floori(spawn_power / 70.0))
|
||||||
else:
|
else:
|
||||||
var new_wave: Wave = Wave.new()
|
var new_wave: WaveConfig = get_upcoming_waves(1)[0]
|
||||||
for enemy: Enemy in level_specs.waves[wave - 1].enemies.keys():
|
|
||||||
var enemy_card: EnemyCard = EnemyCard.new()
|
|
||||||
enemy_card.enemy = enemy
|
|
||||||
enemy_card.count = level_specs.waves[wave - 1].enemies[enemy]
|
|
||||||
new_wave.enemy_groups.append(enemy_card)
|
|
||||||
set_wave_to_spawners(new_wave, wave)
|
set_wave_to_spawners(new_wave, wave)
|
||||||
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
||||||
|
|
||||||
|
|
||||||
func temp_set_upcoming_wave(new_wave: Wave, coins: int) -> void:
|
func temp_set_upcoming_wave(new_wave: WaveConfig, coins: int) -> void:
|
||||||
pot = coins
|
pot = coins
|
||||||
connected_players_nodes[multiplayer.get_unique_id()].hud.set_upcoming_wave(new_wave.to_dict())
|
var dict: Dictionary[String, int] = {}
|
||||||
|
for enemy_group: EnemyGroup in new_wave.enemy_groups.keys():
|
||||||
|
dict[enemy_group.enemy.title] = enemy_group.count
|
||||||
|
connected_players_nodes[multiplayer.get_unique_id()].hud.set_upcoming_wave(dict)
|
||||||
|
|
||||||
|
|
||||||
@rpc("reliable", "call_local")
|
@rpc("reliable", "call_local")
|
||||||
@@ -285,9 +265,9 @@ func end_wave() -> void:
|
|||||||
var player: Hero = connected_players_nodes[peer_id] as Hero
|
var player: Hero = connected_players_nodes[peer_id] as Hero
|
||||||
player.hud.set_wave_count(wave)
|
player.hud.set_wave_count(wave)
|
||||||
player.currency += ceili(pot / connected_players_nodes.size())
|
player.currency += ceili(pot / connected_players_nodes.size())
|
||||||
player.currency += level_specs.waves[wave - 2].bonus_cash
|
player.currency += level_config.waves[wave - 2].bonus_cash
|
||||||
player.energy = Data.player_energy
|
player.energy = Data.player_energy
|
||||||
player.blank_cassettes += 1 if level_specs.waves[wave - 2].rewards_blank_cassette else 0
|
player.blank_cassettes += 1 if level_config.waves[wave - 2].rewards_blank_cassette else 0
|
||||||
#if wave % 2 == 0:
|
#if wave % 2 == 0:
|
||||||
# player.blank_cassettes += 1
|
# player.blank_cassettes += 1
|
||||||
if card_gameplay:
|
if card_gameplay:
|
||||||
@@ -301,7 +281,7 @@ func end_wave() -> void:
|
|||||||
#tower_base.enable_duration_sprites()
|
#tower_base.enable_duration_sprites()
|
||||||
tower_base.iterate_duration()
|
tower_base.iterate_duration()
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
if level_specs.waves[wave - 2].new_shop:
|
if level_config.waves[wave - 2].new_shop:
|
||||||
networked_spawn_shop.rpc()
|
networked_spawn_shop.rpc()
|
||||||
#if NoiseRandom.randf_in_range(23 * wave, 0.0, 1.0) <= shop_chance:
|
#if NoiseRandom.randf_in_range(23 * wave, 0.0, 1.0) <= shop_chance:
|
||||||
#networked_spawn_shop.rpc()
|
#networked_spawn_shop.rpc()
|
||||||
@@ -334,7 +314,7 @@ func setup() -> void:
|
|||||||
connected_players_nodes.clear()
|
connected_players_nodes.clear()
|
||||||
|
|
||||||
#Spawn new stuff
|
#Spawn new stuff
|
||||||
spawn_level(level_specs.zone.scene)
|
spawn_level(level_config.zone.scene)
|
||||||
|
|
||||||
#Set starting parameters
|
#Set starting parameters
|
||||||
game_active = false
|
game_active = false
|
||||||
@@ -342,7 +322,7 @@ func setup() -> void:
|
|||||||
objective_health = Data.starting_lives
|
objective_health = Data.starting_lives
|
||||||
wave = 1
|
wave = 1
|
||||||
stats = RoundStats.new()
|
stats = RoundStats.new()
|
||||||
wave_limit = level_specs.waves.size()
|
wave_limit = level_config.waves.size()
|
||||||
game_setup.emit()
|
game_setup.emit()
|
||||||
|
|
||||||
|
|
||||||
@@ -407,8 +387,10 @@ func continue_with_game() -> void:
|
|||||||
gamemode.endless = true
|
gamemode.endless = true
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||||
connected_players_nodes[multiplayer.get_unique_id()].unpause()
|
connected_players_nodes[multiplayer.get_unique_id()].unpause()
|
||||||
#TODO: This shouldn't happen. instead, the wave generator should generate level_specs waves
|
#TODO: This shouldn't happen. instead, the wave generator should generate level_config waves
|
||||||
level_specs.waves = []
|
#FIXME: this really needs to be changed because otherwise endless mode cant have shit like
|
||||||
|
#stations and shop respawns. it all needs to be part of the one system u know
|
||||||
|
level_config.waves = []
|
||||||
set_upcoming_wave()
|
set_upcoming_wave()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
class_name Wave
|
|
||||||
extends RefCounted
|
|
||||||
|
|
||||||
|
|
||||||
var enemy_groups: Array[EnemyCard]
|
|
||||||
|
|
||||||
|
|
||||||
func to_dict() -> Dictionary:
|
|
||||||
var dict: Dictionary = {}
|
|
||||||
for group: EnemyCard in enemy_groups:
|
|
||||||
var enemy_count: int = 0
|
|
||||||
enemy_count = group.count
|
|
||||||
if !dict.has(group.enemy.title):
|
|
||||||
dict[group.enemy.title] = 0
|
|
||||||
dict[group.enemy.title] += enemy_count
|
|
||||||
return dict
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://demkh5cq1f2bo
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
class_name WaveConfig extends Resource
|
class_name WaveConfig
|
||||||
|
extends Resource
|
||||||
|
|
||||||
@export var enemies: Dictionary[Enemy, int]
|
@export var enemy_groups: Dictionary[EnemyGroup, int]
|
||||||
@export var station: Data.Rarity
|
@export var station: Data.Rarity
|
||||||
@export var new_shop: bool
|
@export var new_shop: bool
|
||||||
@export var rewards_blank_cassette: bool
|
@export var rewards_blank_cassette: bool
|
||||||
|
|||||||
@@ -23,28 +23,26 @@ static func calculate_pot(wave_number: int, number_of_players: int) -> int:
|
|||||||
return ceili((3.0 * number_of_players) + (2.5 * wave_number))
|
return ceili((3.0 * number_of_players) + (2.5 * wave_number))
|
||||||
|
|
||||||
|
|
||||||
static func get_test_wave(spawn_pool: Array[Enemy]) -> Wave:
|
static func get_test_wave(spawn_pool: Array[Enemy]) -> WaveConfig:
|
||||||
var wave: Wave = Wave.new()
|
var wave: WaveConfig = WaveConfig.new()
|
||||||
for x: int in 3:
|
for x: int in 3:
|
||||||
var new_card: EnemyCard = EnemyCard.new()
|
wave.enemies[spawn_pool[0]] = 1
|
||||||
new_card.enemy = spawn_pool[0]
|
|
||||||
new_card.rarity = Data.Rarity.COMMON
|
|
||||||
wave.enemy_groups.append(new_card)
|
|
||||||
return wave
|
return wave
|
||||||
|
|
||||||
|
|
||||||
## Uses a spawn power budget to "buy" cards of enemies at random selection from
|
## Uses a spawn power budget to "buy" cards of enemies at random selection from
|
||||||
## the given spawn pool, returns the resulting wave but also assigns the cards
|
## the given spawn pool, returns the resulting wave but also assigns the cards
|
||||||
## among the given set of enemy spawners
|
## among the given set of enemy spawners
|
||||||
static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy]) -> Wave:
|
static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners: int) -> WaveConfig:
|
||||||
var wave: Wave = Wave.new()
|
var wave: WaveConfig = WaveConfig.new()
|
||||||
|
|
||||||
#print("Generating wave with " + str(points) + " points to spend")
|
#print("Generating wave with " + str(points) + " points to spend")
|
||||||
while spawn_power > 0:
|
while spawn_power > 0:
|
||||||
var new_card: EnemyCard = EnemyCard.new()
|
|
||||||
|
|
||||||
#First, choose an enemy at random
|
#First, choose an enemy at random
|
||||||
new_card.enemy = spawn_pool[NoiseRandom.randi_in_range(spawn_power, 0, spawn_pool.size() - 1)]
|
var enemy: Enemy = spawn_pool[NoiseRandom.randi_in_range(spawn_power, 0, spawn_pool.size() - 1)]
|
||||||
|
var enemy_group: EnemyGroup = EnemyGroup.new()
|
||||||
|
enemy_group.enemy = enemy
|
||||||
|
|
||||||
#Next, we have to figure out if we can actually buy that enemy
|
#Next, we have to figure out if we can actually buy that enemy
|
||||||
#and, if not, then we have to pick a different enemy, repeat until
|
#and, if not, then we have to pick a different enemy, repeat until
|
||||||
@@ -54,29 +52,29 @@ static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy]) -> Wave:
|
|||||||
var first_enemy_id: int = -1
|
var first_enemy_id: int = -1
|
||||||
while !enemy_chosen:
|
while !enemy_chosen:
|
||||||
#Next, determine what is the most groups we can afford
|
#Next, determine what is the most groups we can afford
|
||||||
most_enemies_afforded = int(spawn_power / new_card.enemy.spawn_power)
|
most_enemies_afforded = int(spawn_power / enemy.spawn_power)
|
||||||
if most_enemies_afforded > 0:
|
if most_enemies_afforded > 0:
|
||||||
enemy_chosen = true
|
enemy_chosen = true
|
||||||
else:
|
else:
|
||||||
#Even 1 group was too expensive, so we have to choose
|
#Even 1 group was too expensive, so we have to choose
|
||||||
#a different enemy and try this process again
|
#a different enemy and try this process again
|
||||||
var enemy_id: int = spawn_pool.find(new_card.enemy)
|
var enemy_id: int = spawn_pool.find(enemy)
|
||||||
enemy_id -= 1
|
enemy_id -= 1
|
||||||
if first_enemy_id == -1:
|
if first_enemy_id == -1:
|
||||||
first_enemy_id = enemy_id
|
first_enemy_id = enemy_id
|
||||||
if enemy_id < 0:
|
if enemy_id < 0:
|
||||||
new_card.enemy = spawn_pool[spawn_pool.size() - 1]
|
enemy = spawn_pool[spawn_pool.size() - 1]
|
||||||
else:
|
else:
|
||||||
new_card.enemy = spawn_pool[enemy_id]
|
enemy = spawn_pool[enemy_id]
|
||||||
most_enemies_afforded = 0
|
most_enemies_afforded = 0
|
||||||
if enemy_id == first_enemy_id:
|
if enemy_id == first_enemy_id:
|
||||||
return wave
|
return wave
|
||||||
#Now that we know how many we could afford, lets just choose a
|
#Now that we know how many we could afford, lets just choose a
|
||||||
#random number of groups
|
#random number of groups
|
||||||
var chosen_groups: int = NoiseRandom.randi_in_range(spawn_power, 1, most_enemies_afforded)
|
var chosen_groups: int = NoiseRandom.randi_in_range(spawn_power, 1, most_enemies_afforded)
|
||||||
new_card.count = chosen_groups * new_card.enemy.group_size
|
|
||||||
|
|
||||||
#Add that new enemy to the wave and spend the points!
|
#Add that new enemy to the wave and spend the points!
|
||||||
wave.enemy_groups.append(new_card)
|
enemy_group.count = chosen_groups * enemy.group_size
|
||||||
spawn_power -= chosen_groups * new_card.enemy.spawn_power
|
wave.enemy_groups[enemy_group] = NoiseRandom.randi_in_range(spawn_power, 0, spawners - 1)
|
||||||
|
spawn_power -= chosen_groups * enemy.spawn_power
|
||||||
return wave
|
return wave
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
class_name EnemyCardUI
|
|
||||||
extends Control
|
|
||||||
|
|
||||||
@export var enemy_name: Label
|
|
||||||
@export var enemy_rarity: TextureRect
|
|
||||||
@export var enemy_tex: TextureRect
|
|
||||||
@export var enemy_count: Label
|
|
||||||
|
|
||||||
|
|
||||||
func set_enemy(enemy: EnemyCard) -> void:
|
|
||||||
enemy_name.text = tr(enemy.enemy.title)
|
|
||||||
enemy_rarity.texture.region = Rect2(0.0, 92.0 - (23.0 * int(enemy.rarity)), 124.0, 23.0)
|
|
||||||
enemy_tex.texture = enemy.enemy.icon
|
|
||||||
if enemy.rarity == Data.Rarity.COMMON:
|
|
||||||
enemy_count.text = str(enemy.enemy.common_group)
|
|
||||||
elif enemy.rarity == Data.Rarity.UNCOMMON:
|
|
||||||
enemy_count.text = str(enemy.enemy.uncommon_group)
|
|
||||||
elif enemy.rarity == Data.Rarity.RARE:
|
|
||||||
enemy_count.text = str(enemy.enemy.rare_group)
|
|
||||||
elif enemy.rarity == Data.Rarity.EPIC:
|
|
||||||
enemy_count.text = str(enemy.enemy.epic_group)
|
|
||||||
elif enemy.rarity == Data.Rarity.LEGENDARY:
|
|
||||||
enemy_count.text = str(enemy.enemy.legendary_group)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://b8j7mw1xwisi
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
[gd_scene format=3 uid="uid://d17c77pqsi8oy"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b8j7mw1xwisi" path="res://UI/EnemyCard/enemy_card_ui.gd" id="1_i1ei4"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="2_3r04h"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://c7tnda7he8u5l" path="res://Assets/Textures/stars_legendary-Sheet.png" id="3_uu1bb"]
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uu1bb"]
|
|
||||||
bg_color = Color(0.691357, 0.691357, 0.691357, 1)
|
|
||||||
corner_radius_top_left = 15
|
|
||||||
corner_radius_top_right = 15
|
|
||||||
corner_radius_bottom_right = 15
|
|
||||||
corner_radius_bottom_left = 15
|
|
||||||
expand_margin_left = 5.0
|
|
||||||
expand_margin_top = 5.0
|
|
||||||
expand_margin_right = 5.0
|
|
||||||
expand_margin_bottom = 5.0
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4b8gd"]
|
|
||||||
resource_local_to_scene = true
|
|
||||||
atlas = ExtResource("3_uu1bb")
|
|
||||||
region = Rect2(0, 0, 124, 23)
|
|
||||||
|
|
||||||
[node name="EnemyCardUI" type="Control" unique_id=478697806 node_paths=PackedStringArray("enemy_name", "enemy_rarity", "enemy_tex", "enemy_count")]
|
|
||||||
layout_mode = 3
|
|
||||||
anchors_preset = 0
|
|
||||||
mouse_filter = 2
|
|
||||||
script = ExtResource("1_i1ei4")
|
|
||||||
enemy_name = NodePath("PanelContainer/HBoxContainer/EnemyName")
|
|
||||||
enemy_rarity = NodePath("PanelContainer/HBoxContainer/HBoxContainer/TextureRect")
|
|
||||||
enemy_tex = NodePath("PanelContainer/HBoxContainer/TextureRect")
|
|
||||||
enemy_count = NodePath("PanelContainer/HBoxContainer/HBoxContainer/Amount")
|
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="." unique_id=1907664316]
|
|
||||||
custom_minimum_size = Vector2(0, 300)
|
|
||||||
layout_mode = 0
|
|
||||||
offset_right = 241.0
|
|
||||||
offset_bottom = 138.0
|
|
||||||
mouse_filter = 2
|
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_uu1bb")
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="VBoxContainer" parent="PanelContainer" unique_id=1742421495]
|
|
||||||
layout_mode = 2
|
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="EnemyName" type="Label" parent="PanelContainer/HBoxContainer" unique_id=1041834460]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_vertical = 0
|
|
||||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
|
||||||
text = "enemy name"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/HBoxContainer" unique_id=799830247]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_vertical = 3
|
|
||||||
mouse_filter = 2
|
|
||||||
texture = ExtResource("2_3r04h")
|
|
||||||
expand_mode = 1
|
|
||||||
stretch_mode = 5
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/HBoxContainer" unique_id=763649452]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_vertical = 8
|
|
||||||
|
|
||||||
[node name="Amount" type="Label" parent="PanelContainer/HBoxContainer/HBoxContainer" unique_id=987748659]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
|
||||||
text = "15"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/HBoxContainer/HBoxContainer" unique_id=1523958658]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = SubResource("AtlasTexture_4b8gd")
|
|
||||||
stretch_mode = 5
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
class_name MainMenuLevelSelector extends PanelContainer
|
class_name MainMenuLevelSelector extends PanelContainer
|
||||||
|
|
||||||
signal level_selected(specs: LevelSpecs, side_chosen: int)
|
signal level_selected(specs: LevelConfig, side_chosen: int)
|
||||||
|
|
||||||
var side: int = 0
|
var side: int = 0
|
||||||
|
|
||||||
@export var levels: Array[LevelSpecs] = []
|
@export var levels: Array[LevelConfig] = []
|
||||||
|
|
||||||
func _on_button_pressed() -> void:
|
func _on_button_pressed() -> void:
|
||||||
side = 0
|
side = 0
|
||||||
@@ -18,7 +18,7 @@ func _on_button_2_pressed() -> void:
|
|||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var i: int = 0
|
var i: int = 0
|
||||||
for level: LevelSpecs in levels:
|
for level: LevelConfig in levels:
|
||||||
i += 1
|
i += 1
|
||||||
var button: Button = Button.new()
|
var button: Button = Button.new()
|
||||||
button.text = "Level " + str(i)
|
button.text = "Level " + str(i)
|
||||||
|
|||||||
@@ -118,11 +118,11 @@ func generate_seed() -> void:
|
|||||||
gamemode.rng_seed = randi()
|
gamemode.rng_seed = randi()
|
||||||
|
|
||||||
|
|
||||||
func level_selected(level: LevelSpecs, side: int) -> void:
|
func level_selected(level: LevelConfig, side: int) -> void:
|
||||||
generate_seed()
|
generate_seed()
|
||||||
gamemode.endless = true if side == 1 else false
|
gamemode.endless = true if side == 1 else false
|
||||||
gamemode.daily = false
|
gamemode.daily = false
|
||||||
game.level_specs = level
|
game.level_config = level
|
||||||
start_game()
|
start_game()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://UI/Menus/MainMenu/main_menu.gd" id="2_ivytu"]
|
[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://UI/Menus/MainMenu/main_menu.gd" id="2_ivytu"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="5_cwn2i"]
|
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="5_cwn2i"]
|
||||||
[ext_resource type="Script" uid="uid://bwsw4oq150v3p" path="res://UI/Menus/MainMenu/level_selecter_main_menu.gd" id="8_qshe4"]
|
[ext_resource type="Script" uid="uid://bwsw4oq150v3p" path="res://UI/Menus/MainMenu/level_selecter_main_menu.gd" id="8_qshe4"]
|
||||||
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_specs.gd" id="9_nt3t4"]
|
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://Scripts/Resources/level_config.gd" id="9_nt3t4"]
|
||||||
[ext_resource type="Resource" uid="uid://b67b70x1uf2el" path="res://Levels/Level1/specs.tres" id="10_kjkav"]
|
[ext_resource type="Resource" uid="uid://b67b70x1uf2el" path="res://Levels/Level1/specs.tres" id="10_kjkav"]
|
||||||
[ext_resource type="Resource" uid="uid://dffoufw4bnfn7" path="res://Levels/Level2/specs.tres" id="11_kjkav"]
|
[ext_resource type="Resource" uid="uid://dffoufw4bnfn7" path="res://Levels/Level2/specs.tres" id="11_kjkav"]
|
||||||
[ext_resource type="Resource" uid="uid://dgrcneuv4fut" path="res://Levels/Level3/specs.tres" id="12_eonxx"]
|
[ext_resource type="Resource" uid="uid://dgrcneuv4fut" path="res://Levels/Level3/specs.tres" id="12_eonxx"]
|
||||||
|
|||||||
5
enemy_group.gd
Normal file
5
enemy_group.gd
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
class_name EnemyGroup
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
@export var enemy: Enemy
|
||||||
|
@export var count: int
|
||||||
1
enemy_group.gd.uid
Normal file
1
enemy_group.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://3grc2j4bjrnw
|
||||||
@@ -39,7 +39,7 @@ export/convert_text_resources_to_binary=false
|
|||||||
|
|
||||||
[editor_plugins]
|
[editor_plugins]
|
||||||
|
|
||||||
enabled=PackedStringArray("res://addons/proton_scatter/plugin.cfg")
|
enabled=PackedStringArray()
|
||||||
|
|
||||||
[file_customization]
|
[file_customization]
|
||||||
|
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ signal closed()
|
|||||||
@export var enemy_desc_label: RichTextLabel
|
@export var enemy_desc_label: RichTextLabel
|
||||||
|
|
||||||
|
|
||||||
func set_waves(waves: Array[Wave], starting_wave_number: int) -> void:
|
func set_waves(waves: Array[WaveConfig], starting_wave_number: int) -> void:
|
||||||
var i: int = starting_wave_number
|
var i: int = starting_wave_number
|
||||||
for wave: Wave in waves:
|
for wave: WaveConfig in waves:
|
||||||
var enemy_row: EnemyRow = enemy_row_scene.instantiate() as EnemyRow
|
var enemy_row: EnemyRow = enemy_row_scene.instantiate() as EnemyRow
|
||||||
enemy_row.enemy_clicked.connect(set_enemy_desc)
|
enemy_row.enemy_clicked.connect(set_enemy_desc)
|
||||||
wave_vbox.add_child(enemy_row)
|
wave_vbox.add_child(enemy_row)
|
||||||
@@ -21,21 +21,14 @@ func set_waves(waves: Array[Wave], starting_wave_number: int) -> void:
|
|||||||
|
|
||||||
var enemy_dict: Dictionary[Enemy, int] = {}
|
var enemy_dict: Dictionary[Enemy, int] = {}
|
||||||
|
|
||||||
for group: EnemyCard in wave.enemy_groups:
|
for enemy_group: EnemyGroup in wave.enemy_groups:
|
||||||
if enemy_dict.has(group.enemy):
|
if !enemy_dict.has(enemy_group.enemy):
|
||||||
enemy_dict[group.enemy] += group_to_count(group)
|
enemy_dict[enemy_group.enemy] = 0
|
||||||
else:
|
enemy_dict[enemy_group.enemy] += enemy_group.count
|
||||||
enemy_dict[group.enemy] = group_to_count(group)
|
|
||||||
|
|
||||||
for enemy: Enemy in enemy_dict.keys():
|
for enemy: Enemy in enemy_dict.keys():
|
||||||
enemy_row.add_enemy_tag(enemy, enemy_dict[enemy])
|
enemy_row.add_enemy_tag(enemy, enemy_dict[enemy])
|
||||||
set_enemy_desc(waves[0].enemy_groups[0].enemy)
|
set_enemy_desc(waves[0].enemy_groups.keys()[0].enemy)
|
||||||
|
|
||||||
|
|
||||||
func group_to_count(group: EnemyCard) -> int:
|
|
||||||
var count: int = 0
|
|
||||||
count = group.count
|
|
||||||
return count
|
|
||||||
|
|
||||||
|
|
||||||
func set_enemy_desc(enemy: Enemy) -> void:
|
func set_enemy_desc(enemy: Enemy) -> void:
|
||||||
|
|||||||
Reference in New Issue
Block a user