summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/01 - At Your Own Peril.wavbin0 -> 2304092 bytes
-rw-r--r--assets/01 - At Your Own Peril.wav.import24
-rw-r--r--assets/02 - Motivatia Eroului.wavbin0 -> 43276892 bytes
-rw-r--r--assets/02 - Motivatia Eroului.wav.import24
-rw-r--r--assets/03 - Serpent's Doorstep.wavbin0 -> 52780892 bytes
-rw-r--r--assets/03 - Serpent's Doorstep.wav.import24
-rw-r--r--assets/04 - Self Preservation.wavbin0 -> 49370972 bytes
-rw-r--r--assets/04 - Self Preservation.wav.import24
-rw-r--r--assets/05 - Challenge the Depths.wavbin0 -> 38465372 bytes
-rw-r--r--assets/05 - Challenge the Depths.wav.import24
-rw-r--r--assets/06 - The Temperature of Time.wavbin0 -> 51832412 bytes
-rw-r--r--assets/06 - The Temperature of Time.wav.import24
-rw-r--r--assets/07 - The Victim's Hall.wavbin0 -> 27314012 bytes
-rw-r--r--assets/07 - The Victim's Hall.wav.import24
-rw-r--r--assets/08 - Of Blood and Capes.wavbin0 -> 24330332 bytes
-rw-r--r--assets/08 - Of Blood and Capes.wav.import24
-rw-r--r--assets/09 - Riddle of Demise.wavbin0 -> 16293212 bytes
-rw-r--r--assets/09 - Riddle of Demise.wav.import24
-rw-r--r--assets/10 - Tainted Will.wavbin0 -> 17694812 bytes
-rw-r--r--assets/10 - Tainted Will.wav.import24
-rw-r--r--assets/11 - Death's Respite.wavbin0 -> 1351772 bytes
-rw-r--r--assets/11 - Death's Respite.wav.import24
-rw-r--r--assets/12 - Star's Breath.wavbin0 -> 1382492 bytes
-rw-r--r--assets/12 - Star's Breath.wav.import24
-rw-r--r--assets/13 - The Regret of Victory.wavbin0 -> 16128092 bytes
-rw-r--r--assets/13 - The Regret of Victory.wav.import24
-rw-r--r--assets/title.pngbin0 -> 31719 bytes
-rw-r--r--assets/title.png.import34
-rw-r--r--assets/title.xcfbin0 -> 92286 bytes
-rw-r--r--project.godot2
-rw-r--r--resources/oscillating_text.gdshader10
-rw-r--r--resources/oscillating_text.gdshader.uid1
-rw-r--r--scenes/Main.tscn52
-rw-r--r--scenes/game.tscn73
-rw-r--r--scenes/title.gd5
-rw-r--r--scenes/title.gd.uid1
-rw-r--r--scenes/title.tscn53
-rw-r--r--scenes/ui.tscn11
-rw-r--r--scenes/ui_option.tscn2
-rw-r--r--scripts/audio_looper.gd8
-rw-r--r--scripts/audio_looper.gd.uid1
-rw-r--r--scripts/game_stats_config.gd1
-rw-r--r--scripts/player.gd8
-rw-r--r--scripts/ui_panel.gd13
-rw-r--r--scripts/warlock.gd2
-rw-r--r--scripts/wyvern.gd2
46 files changed, 518 insertions, 73 deletions
diff --git a/assets/01 - At Your Own Peril.wav b/assets/01 - At Your Own Peril.wav
new file mode 100644
index 0000000..b33b3d4
--- /dev/null
+++ b/assets/01 - At Your Own Peril.wav
Binary files differ
diff --git a/assets/01 - At Your Own Peril.wav.import b/assets/01 - At Your Own Peril.wav.import
new file mode 100644
index 0000000..ca1cd2d
--- /dev/null
+++ b/assets/01 - At Your Own Peril.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://c3f0s3klwd1l5"
+path="res://.godot/imported/01 - At Your Own Peril.wav-78d54fbf312c5674cb02a58a72335fbc.sample"
+
+[deps]
+
+source_file="res://assets/01 - At Your Own Peril.wav"
+dest_files=["res://.godot/imported/01 - At Your Own Peril.wav-78d54fbf312c5674cb02a58a72335fbc.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/02 - Motivatia Eroului.wav b/assets/02 - Motivatia Eroului.wav
new file mode 100644
index 0000000..6cfd58c
--- /dev/null
+++ b/assets/02 - Motivatia Eroului.wav
Binary files differ
diff --git a/assets/02 - Motivatia Eroului.wav.import b/assets/02 - Motivatia Eroului.wav.import
new file mode 100644
index 0000000..eabde88
--- /dev/null
+++ b/assets/02 - Motivatia Eroului.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://fysavm3u40p2"
+path="res://.godot/imported/02 - Motivatia Eroului.wav-eef27c72dfeb655b2bb4bf2564f37126.sample"
+
+[deps]
+
+source_file="res://assets/02 - Motivatia Eroului.wav"
+dest_files=["res://.godot/imported/02 - Motivatia Eroului.wav-eef27c72dfeb655b2bb4bf2564f37126.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/03 - Serpent's Doorstep.wav b/assets/03 - Serpent's Doorstep.wav
new file mode 100644
index 0000000..0c2a1cd
--- /dev/null
+++ b/assets/03 - Serpent's Doorstep.wav
Binary files differ
diff --git a/assets/03 - Serpent's Doorstep.wav.import b/assets/03 - Serpent's Doorstep.wav.import
new file mode 100644
index 0000000..8cdf513
--- /dev/null
+++ b/assets/03 - Serpent's Doorstep.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dplee21ovrkkw"
+path="res://.godot/imported/03 - Serpent's Doorstep.wav-aedcbff1b8aa1da604b11b322fbc1743.sample"
+
+[deps]
+
+source_file="res://assets/03 - Serpent's Doorstep.wav"
+dest_files=["res://.godot/imported/03 - Serpent's Doorstep.wav-aedcbff1b8aa1da604b11b322fbc1743.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/04 - Self Preservation.wav b/assets/04 - Self Preservation.wav
new file mode 100644
index 0000000..2aa26b5
--- /dev/null
+++ b/assets/04 - Self Preservation.wav
Binary files differ
diff --git a/assets/04 - Self Preservation.wav.import b/assets/04 - Self Preservation.wav.import
new file mode 100644
index 0000000..5c86093
--- /dev/null
+++ b/assets/04 - Self Preservation.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://eat73dvukohu"
+path="res://.godot/imported/04 - Self Preservation.wav-f16a0d0d66c0426f9b83fd58736cd36a.sample"
+
+[deps]
+
+source_file="res://assets/04 - Self Preservation.wav"
+dest_files=["res://.godot/imported/04 - Self Preservation.wav-f16a0d0d66c0426f9b83fd58736cd36a.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/05 - Challenge the Depths.wav b/assets/05 - Challenge the Depths.wav
new file mode 100644
index 0000000..f555a53
--- /dev/null
+++ b/assets/05 - Challenge the Depths.wav
Binary files differ
diff --git a/assets/05 - Challenge the Depths.wav.import b/assets/05 - Challenge the Depths.wav.import
new file mode 100644
index 0000000..8afa448
--- /dev/null
+++ b/assets/05 - Challenge the Depths.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://baa7feyog7ad"
+path="res://.godot/imported/05 - Challenge the Depths.wav-b6a8468231ca5edcf6bda652d694a551.sample"
+
+[deps]
+
+source_file="res://assets/05 - Challenge the Depths.wav"
+dest_files=["res://.godot/imported/05 - Challenge the Depths.wav-b6a8468231ca5edcf6bda652d694a551.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/06 - The Temperature of Time.wav b/assets/06 - The Temperature of Time.wav
new file mode 100644
index 0000000..c338846
--- /dev/null
+++ b/assets/06 - The Temperature of Time.wav
Binary files differ
diff --git a/assets/06 - The Temperature of Time.wav.import b/assets/06 - The Temperature of Time.wav.import
new file mode 100644
index 0000000..9223f93
--- /dev/null
+++ b/assets/06 - The Temperature of Time.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://6kmoeyv6xfvr"
+path="res://.godot/imported/06 - The Temperature of Time.wav-94f4c19ffeb7a0bdad381494d0c635de.sample"
+
+[deps]
+
+source_file="res://assets/06 - The Temperature of Time.wav"
+dest_files=["res://.godot/imported/06 - The Temperature of Time.wav-94f4c19ffeb7a0bdad381494d0c635de.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/07 - The Victim's Hall.wav b/assets/07 - The Victim's Hall.wav
new file mode 100644
index 0000000..07b2ca8
--- /dev/null
+++ b/assets/07 - The Victim's Hall.wav
Binary files differ
diff --git a/assets/07 - The Victim's Hall.wav.import b/assets/07 - The Victim's Hall.wav.import
new file mode 100644
index 0000000..e7fb981
--- /dev/null
+++ b/assets/07 - The Victim's Hall.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://bixrivbcifxur"
+path="res://.godot/imported/07 - The Victim's Hall.wav-237d9026982ffb25c8c3737af551021c.sample"
+
+[deps]
+
+source_file="res://assets/07 - The Victim's Hall.wav"
+dest_files=["res://.godot/imported/07 - The Victim's Hall.wav-237d9026982ffb25c8c3737af551021c.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/08 - Of Blood and Capes.wav b/assets/08 - Of Blood and Capes.wav
new file mode 100644
index 0000000..bb33b20
--- /dev/null
+++ b/assets/08 - Of Blood and Capes.wav
Binary files differ
diff --git a/assets/08 - Of Blood and Capes.wav.import b/assets/08 - Of Blood and Capes.wav.import
new file mode 100644
index 0000000..b487137
--- /dev/null
+++ b/assets/08 - Of Blood and Capes.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://d2gtuehcm5cg0"
+path="res://.godot/imported/08 - Of Blood and Capes.wav-9612bb9fcdb3683ab22b7d7d5c4b2cec.sample"
+
+[deps]
+
+source_file="res://assets/08 - Of Blood and Capes.wav"
+dest_files=["res://.godot/imported/08 - Of Blood and Capes.wav-9612bb9fcdb3683ab22b7d7d5c4b2cec.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/09 - Riddle of Demise.wav b/assets/09 - Riddle of Demise.wav
new file mode 100644
index 0000000..79dc3f2
--- /dev/null
+++ b/assets/09 - Riddle of Demise.wav
Binary files differ
diff --git a/assets/09 - Riddle of Demise.wav.import b/assets/09 - Riddle of Demise.wav.import
new file mode 100644
index 0000000..d0c751a
--- /dev/null
+++ b/assets/09 - Riddle of Demise.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dv3042e2v5hsj"
+path="res://.godot/imported/09 - Riddle of Demise.wav-3161bf1b71554c26749a5c5a84cb5136.sample"
+
+[deps]
+
+source_file="res://assets/09 - Riddle of Demise.wav"
+dest_files=["res://.godot/imported/09 - Riddle of Demise.wav-3161bf1b71554c26749a5c5a84cb5136.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/10 - Tainted Will.wav b/assets/10 - Tainted Will.wav
new file mode 100644
index 0000000..20bd1b3
--- /dev/null
+++ b/assets/10 - Tainted Will.wav
Binary files differ
diff --git a/assets/10 - Tainted Will.wav.import b/assets/10 - Tainted Will.wav.import
new file mode 100644
index 0000000..a5aee6b
--- /dev/null
+++ b/assets/10 - Tainted Will.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://ceoevjs7grkj8"
+path="res://.godot/imported/10 - Tainted Will.wav-6ee8da02b084f9e198eebc4150127a23.sample"
+
+[deps]
+
+source_file="res://assets/10 - Tainted Will.wav"
+dest_files=["res://.godot/imported/10 - Tainted Will.wav-6ee8da02b084f9e198eebc4150127a23.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/11 - Death's Respite.wav b/assets/11 - Death's Respite.wav
new file mode 100644
index 0000000..124aad8
--- /dev/null
+++ b/assets/11 - Death's Respite.wav
Binary files differ
diff --git a/assets/11 - Death's Respite.wav.import b/assets/11 - Death's Respite.wav.import
new file mode 100644
index 0000000..70d1916
--- /dev/null
+++ b/assets/11 - Death's Respite.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://b6gqbdoic7lr4"
+path="res://.godot/imported/11 - Death's Respite.wav-d78eff091fd5b90aab746826ffd07ee9.sample"
+
+[deps]
+
+source_file="res://assets/11 - Death's Respite.wav"
+dest_files=["res://.godot/imported/11 - Death's Respite.wav-d78eff091fd5b90aab746826ffd07ee9.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/12 - Star's Breath.wav b/assets/12 - Star's Breath.wav
new file mode 100644
index 0000000..f23206c
--- /dev/null
+++ b/assets/12 - Star's Breath.wav
Binary files differ
diff --git a/assets/12 - Star's Breath.wav.import b/assets/12 - Star's Breath.wav.import
new file mode 100644
index 0000000..04e3a6f
--- /dev/null
+++ b/assets/12 - Star's Breath.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://c3jqn37jifgc7"
+path="res://.godot/imported/12 - Star's Breath.wav-396ee6ba84a7d65bbe516adcb5fb4eab.sample"
+
+[deps]
+
+source_file="res://assets/12 - Star's Breath.wav"
+dest_files=["res://.godot/imported/12 - Star's Breath.wav-396ee6ba84a7d65bbe516adcb5fb4eab.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/13 - The Regret of Victory.wav b/assets/13 - The Regret of Victory.wav
new file mode 100644
index 0000000..e080cf5
--- /dev/null
+++ b/assets/13 - The Regret of Victory.wav
Binary files differ
diff --git a/assets/13 - The Regret of Victory.wav.import b/assets/13 - The Regret of Victory.wav.import
new file mode 100644
index 0000000..38dd6fc
--- /dev/null
+++ b/assets/13 - The Regret of Victory.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://coam5ivql7fwj"
+path="res://.godot/imported/13 - The Regret of Victory.wav-d52e6650e3e41959ea96b81d9c8730ac.sample"
+
+[deps]
+
+source_file="res://assets/13 - The Regret of Victory.wav"
+dest_files=["res://.godot/imported/13 - The Regret of Victory.wav-d52e6650e3e41959ea96b81d9c8730ac.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/title.png b/assets/title.png
new file mode 100644
index 0000000..555b48a
--- /dev/null
+++ b/assets/title.png
Binary files differ
diff --git a/assets/title.png.import b/assets/title.png.import
new file mode 100644
index 0000000..bf572ee
--- /dev/null
+++ b/assets/title.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cgmfpwb1eb88v"
+path="res://.godot/imported/title.png-f520a0d529e74edf0d3ba77895c4527c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/title.png"
+dest_files=["res://.godot/imported/title.png-f520a0d529e74edf0d3ba77895c4527c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/assets/title.xcf b/assets/title.xcf
new file mode 100644
index 0000000..80f0db8
--- /dev/null
+++ b/assets/title.xcf
Binary files differ
diff --git a/project.godot b/project.godot
index 0d1189e..5725dca 100644
--- a/project.godot
+++ b/project.godot
@@ -11,7 +11,7 @@ config_version=5
[application]
config/name="pixel-defense-2"
-run/main_scene="uid://chwnewu8l45kj"
+run/main_scene="uid://cgoebhfu5udrc"
config/features=PackedStringArray("4.4", "GL Compatibility")
config/icon="res://icon.svg"
diff --git a/resources/oscillating_text.gdshader b/resources/oscillating_text.gdshader
new file mode 100644
index 0000000..cd26160
--- /dev/null
+++ b/resources/oscillating_text.gdshader
@@ -0,0 +1,10 @@
+shader_type canvas_item;
+
+uniform float height = 2.0;
+uniform float freq = 3.0;
+uniform float speed = 5.0;
+
+void vertex() {
+ VERTEX.y += height * sin((freq * UV.x) + speed * TIME);
+}
+
diff --git a/resources/oscillating_text.gdshader.uid b/resources/oscillating_text.gdshader.uid
new file mode 100644
index 0000000..6d40d6a
--- /dev/null
+++ b/resources/oscillating_text.gdshader.uid
@@ -0,0 +1 @@
+uid://d3ktu01mh01ao
diff --git a/scenes/Main.tscn b/scenes/Main.tscn
deleted file mode 100644
index 524c766..0000000
--- a/scenes/Main.tscn
+++ /dev/null
@@ -1,52 +0,0 @@
-[gd_scene load_steps=7 format=3 uid="uid://chwnewu8l45kj"]
-
-[ext_resource type="Script" uid="uid://i5bjnah05h14" path="res://scripts/wave_spawner.gd" id="2_0bbpv"]
-[ext_resource type="PackedScene" uid="uid://cdgeamr56c0mx" path="res://scenes/map.tscn" id="2_vcsgt"]
-[ext_resource type="PackedScene" uid="uid://cq6d7gmjbwl14" path="res://scenes/player.tscn" id="4_rarhs"]
-[ext_resource type="Script" uid="uid://bxnjjp3at6ht3" path="res://scripts/tower_manager.gd" id="4_vcsgt"]
-[ext_resource type="PackedScene" uid="uid://dycgp3yept14k" path="res://scenes/ui.tscn" id="5_vcsgt"]
-
-[sub_resource type="GDScript" id="GDScript_rarhs"]
-script/source = "extends Node
-
-var occupied_tiles = {}
-
-@export var tile_size = 16.0
-@export var grid_width = 20
-@export var grid_height = 15
-
-func is_tile_occupied(tile_position):
- return occupied_tiles.has(tile_position)
-
-func occupy_tile(tile_position):
- occupied_tiles[tile_position] = true
-
-func free_tile(tile_position):
- occupied_tiles.erase(tile_position)
-"
-
-[node name="Main" type="Node2D"]
-
-[node name="Player" parent="." instance=ExtResource("4_rarhs")]
-z_index = 2
-
-[node name="Map" parent="." instance=ExtResource("2_vcsgt")]
-
-[node name="PathSpawner" type="Node2D" parent="."]
-script = ExtResource("2_0bbpv")
-
-[node name="Timer" type="Timer" parent="PathSpawner"]
-autostart = true
-
-[node name="Defenders" type="Node" parent="."]
-script = ExtResource("4_vcsgt")
-
-[node name="GridManager" type="Node" parent="."]
-script = SubResource("GDScript_rarhs")
-
-[node name="PanelContainer" parent="." instance=ExtResource("5_vcsgt")]
-offset_top = 224.0
-offset_right = 320.0
-offset_bottom = 241.0
-
-[connection signal="timeout" from="PathSpawner/Timer" to="PathSpawner" method="_on_timer_timeout"]
diff --git a/scenes/game.tscn b/scenes/game.tscn
new file mode 100644
index 0000000..1df2ade
--- /dev/null
+++ b/scenes/game.tscn
@@ -0,0 +1,73 @@
+[gd_scene load_steps=15 format=3 uid="uid://chwnewu8l45kj"]
+
+[ext_resource type="PackedScene" uid="uid://cq6d7gmjbwl14" path="res://scenes/player.tscn" id="1_iywne"]
+[ext_resource type="PackedScene" uid="uid://cdgeamr56c0mx" path="res://scenes/map.tscn" id="2_p57ef"]
+[ext_resource type="Script" uid="uid://i5bjnah05h14" path="res://scripts/wave_spawner.gd" id="3_u5sy4"]
+[ext_resource type="Script" uid="uid://bxnjjp3at6ht3" path="res://scripts/tower_manager.gd" id="4_gee14"]
+[ext_resource type="PackedScene" uid="uid://dycgp3yept14k" path="res://scenes/ui.tscn" id="5_0tnpc"]
+[ext_resource type="AudioStream" uid="uid://eat73dvukohu" path="res://assets/04 - Self Preservation.wav" id="6_0tnpc"]
+[ext_resource type="AudioStream" uid="uid://6kmoeyv6xfvr" path="res://assets/06 - The Temperature of Time.wav" id="7_vtaks"]
+[ext_resource type="AudioStream" uid="uid://bixrivbcifxur" path="res://assets/07 - The Victim's Hall.wav" id="8_kvpfn"]
+[ext_resource type="AudioStream" uid="uid://dv3042e2v5hsj" path="res://assets/09 - Riddle of Demise.wav" id="9_dinhu"]
+[ext_resource type="AudioStream" uid="uid://fysavm3u40p2" path="res://assets/02 - Motivatia Eroului.wav" id="10_dinhu"]
+[ext_resource type="Script" uid="uid://1d5icis2ddhc" path="res://scripts/audio_looper.gd" id="10_vtaks"]
+[ext_resource type="AudioStream" uid="uid://d2gtuehcm5cg0" path="res://assets/08 - Of Blood and Capes.wav" id="11_kvuet"]
+
+[sub_resource type="GDScript" id="GDScript_rarhs"]
+script/source = "extends Node
+
+var occupied_tiles = {}
+
+@export var tile_size = 16.0
+@export var grid_width = 20
+@export var grid_height = 15
+
+func is_tile_occupied(tile_position):
+ return occupied_tiles.has(tile_position)
+
+func occupy_tile(tile_position):
+ occupied_tiles[tile_position] = true
+
+func free_tile(tile_position):
+ occupied_tiles.erase(tile_position)
+"
+
+[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_kvuet"]
+streams_count = 6
+stream_0/stream = ExtResource("6_0tnpc")
+stream_1/stream = ExtResource("7_vtaks")
+stream_2/stream = ExtResource("8_kvpfn")
+stream_3/stream = ExtResource("9_dinhu")
+stream_4/stream = ExtResource("10_dinhu")
+stream_5/stream = ExtResource("11_kvuet")
+
+[node name="game" type="Node2D"]
+
+[node name="Player" parent="." instance=ExtResource("1_iywne")]
+z_index = 2
+
+[node name="Map" parent="." instance=ExtResource("2_p57ef")]
+
+[node name="PathSpawner" type="Node2D" parent="."]
+script = ExtResource("3_u5sy4")
+
+[node name="Timer" type="Timer" parent="PathSpawner"]
+autostart = true
+
+[node name="Defenders" type="Node" parent="."]
+script = ExtResource("4_gee14")
+
+[node name="GridManager" type="Node" parent="."]
+script = SubResource("GDScript_rarhs")
+
+[node name="PanelContainer" parent="." instance=ExtResource("5_0tnpc")]
+offset_top = 224.0
+offset_right = 320.0
+offset_bottom = 241.0
+
+[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
+stream = SubResource("AudioStreamRandomizer_kvuet")
+volume_db = -4.0
+script = ExtResource("10_vtaks")
+
+[connection signal="timeout" from="PathSpawner/Timer" to="PathSpawner" method="_on_timer_timeout"]
diff --git a/scenes/title.gd b/scenes/title.gd
new file mode 100644
index 0000000..8242145
--- /dev/null
+++ b/scenes/title.gd
@@ -0,0 +1,5 @@
+extends Control
+
+func _input(event):
+ if event.is_action_pressed("ui_accept"):
+ get_tree().change_scene_to_file("res://scenes/game.tscn")
diff --git a/scenes/title.gd.uid b/scenes/title.gd.uid
new file mode 100644
index 0000000..163f43d
--- /dev/null
+++ b/scenes/title.gd.uid
@@ -0,0 +1 @@
+uid://cxmpltan4gkpt
diff --git a/scenes/title.tscn b/scenes/title.tscn
new file mode 100644
index 0000000..59450e7
--- /dev/null
+++ b/scenes/title.tscn
@@ -0,0 +1,53 @@
+[gd_scene load_steps=7 format=3 uid="uid://cgoebhfu5udrc"]
+
+[ext_resource type="Texture2D" uid="uid://cgmfpwb1eb88v" path="res://assets/title.png" id="1_4ignj"]
+[ext_resource type="Script" uid="uid://cxmpltan4gkpt" path="res://scenes/title.gd" id="1_wosw1"]
+[ext_resource type="AudioStream" uid="uid://coam5ivql7fwj" path="res://assets/13 - The Regret of Victory.wav" id="3_p6dhs"]
+[ext_resource type="Script" uid="uid://1d5icis2ddhc" path="res://scripts/audio_looper.gd" id="4_pyl7j"]
+[ext_resource type="Shader" uid="uid://d3ktu01mh01ao" path="res://resources/oscillating_text.gdshader" id="5_b3w7a"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_4rr2b"]
+shader = ExtResource("5_b3w7a")
+shader_parameter/height = 2.0
+shader_parameter/freq = 3.0
+shader_parameter/speed = 5.0
+
+[node name="Title" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_wosw1")
+
+[node name="TextureRect" type="TextureRect" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+texture = ExtResource("1_4ignj")
+expand_mode = 2
+
+[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
+stream = ExtResource("3_p6dhs")
+autoplay = true
+script = ExtResource("4_pyl7j")
+
+[node name="Label" type="Label" parent="."]
+material = SubResource("ShaderMaterial_4rr2b")
+layout_mode = 1
+anchors_preset = -1
+anchor_top = 0.916667
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_top = -28.0
+offset_bottom = -28.0
+grow_horizontal = 2
+grow_vertical = 0
+theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
+text = "press 'space'"
+horizontal_alignment = 1
+metadata/_edit_use_anchors_ = true
diff --git a/scenes/ui.tscn b/scenes/ui.tscn
index 5f10b53..74e591e 100644
--- a/scenes/ui.tscn
+++ b/scenes/ui.tscn
@@ -17,29 +17,28 @@ script = ExtResource("1_yev5y")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
-theme_override_constants/margin_left = 6
+theme_override_constants/margin_left = 1
theme_override_constants/margin_top = 0
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"]
layout_mode = 2
size_flags_vertical = 0
+theme_override_constants/separation = 1
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer"]
-clip_contents = true
+custom_minimum_size = Vector2(48, 0)
layout_mode = 2
-size_flags_horizontal = 0
-theme_override_constants/separation = -3
+theme_override_constants/separation = -4
[node name="Morale" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 8
-text = " Morale: "
[node name="Life" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 8
-text = "Life: "
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
+theme_override_constants/separation = 1
diff --git a/scenes/ui_option.tscn b/scenes/ui_option.tscn
index d89e8cd..21468c6 100644
--- a/scenes/ui_option.tscn
+++ b/scenes/ui_option.tscn
@@ -23,7 +23,7 @@ layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
-theme_override_constants/separation = -3
+theme_override_constants/separation = -4
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer"]
layout_mode = 2
diff --git a/scripts/audio_looper.gd b/scripts/audio_looper.gd
new file mode 100644
index 0000000..eae9f0f
--- /dev/null
+++ b/scripts/audio_looper.gd
@@ -0,0 +1,8 @@
+extends AudioStreamPlayer2D
+
+func _ready() -> void:
+ self.connect("finished", Callable(self,"_on_loop_sound").bind(self))
+ play()
+
+func _on_loop_sound(player):
+ player.play()
diff --git a/scripts/audio_looper.gd.uid b/scripts/audio_looper.gd.uid
new file mode 100644
index 0000000..7579a5a
--- /dev/null
+++ b/scripts/audio_looper.gd.uid
@@ -0,0 +1 @@
+uid://1d5icis2ddhc
diff --git a/scripts/game_stats_config.gd b/scripts/game_stats_config.gd
index 89d265c..38d9cd8 100644
--- a/scripts/game_stats_config.gd
+++ b/scripts/game_stats_config.gd
@@ -13,6 +13,7 @@ class_name GameStatsConfig
]
# defenders
+enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
@export var defenders : Array[Dictionary] = [
{
"desc": "Warlock",
diff --git a/scripts/player.gd b/scripts/player.gd
index d9ee0bd..f399f02 100644
--- a/scripts/player.gd
+++ b/scripts/player.gd
@@ -15,10 +15,10 @@ var dirs = {
}
var tower_ids = {
- "tower_action_one": 0,
- "tower_action_two": 1,
- "tower_action_three": 2,
- "tower_action_four": 3,
+ "tower_action_one": game_stats_config.defenders_index.WARLOCK,
+ "tower_action_two": game_stats_config.defenders_index.WYVERN,
+ "tower_action_three": game_stats_config.defenders_index.WARLOCK,
+ "tower_action_four": game_stats_config.defenders_index.WARLOCK,
}
signal curr_tile(tile_state)
diff --git a/scripts/ui_panel.gd b/scripts/ui_panel.gd
index 7d3cd7a..6d3ea5a 100644
--- a/scripts/ui_panel.gd
+++ b/scripts/ui_panel.gd
@@ -1,15 +1,14 @@
extends Panel
-var tile_set : TileSet = preload("res://resources/tiles.tres")
-var game_stats_config = preload("res://resources/game_stats_config.tres")
@onready var util = preload("res://scripts/util.gd")
-@export var object_name: String
-@export var cost: String
+@export var desc: String
+@export var cost: int
+@export var sprite_atlas : Vector2i
func _ready():
- var texture = util.get_tile_texture(game_stats_config.defenders[object_name.to_lower()]["sprite_panel"])
+ var texture = util.get_tile_texture(sprite_atlas)
$HBoxContainer/Texture.texture = texture
$HBoxContainer/Texture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
- $HBoxContainer/VBoxContainer/Label.text = object_name
- $HBoxContainer/VBoxContainer/Label2.text = cost
+ $HBoxContainer/VBoxContainer/Label.text = desc
+ $HBoxContainer/VBoxContainer/Label2.text = str(cost)
diff --git a/scripts/warlock.gd b/scripts/warlock.gd
index a3174d8..80d6e58 100644
--- a/scripts/warlock.gd
+++ b/scripts/warlock.gd
@@ -3,7 +3,7 @@ extends "res://scripts/base_defender.gd"
var projectile: PackedScene = preload("res://scenes/warlock_projectile.tscn")
func _ready():
- set_tower_stats(0)
+ set_tower_stats(game_stats_config.defenders_index.WARLOCK)
reset_tower_range()
reset_tower_sprite()
diff --git a/scripts/wyvern.gd b/scripts/wyvern.gd
index e9a1efe..a2822fe 100644
--- a/scripts/wyvern.gd
+++ b/scripts/wyvern.gd
@@ -6,7 +6,7 @@ var range_collision : CollisionShape2D
var firing : bool = false
func _ready():
- set_tower_stats(1)
+ set_tower_stats(game_stats_config.defenders_index.WYVERN)
reset_tower_range()
reset_tower_sprite()