summaryrefslogtreecommitdiff
path: root/scenes
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-20 17:09:58 -0400
committerbd <bdunahu@operationnull.com>2025-05-20 17:09:58 -0400
commit2e1a04a94ee7e132ac2b4334e37978bb2a271c21 (patch)
tree2866fc9dcccf0dcc0ba22aaa2c5062ac0ca74850 /scenes
parent5daf4cc09c6fb40729607138260cc10acb422477 (diff)
Add cursor scene, ability to place Warlock tower anywhere
Diffstat (limited to 'scenes')
-rw-r--r--scenes/Main.tscn13
-rw-r--r--scenes/UI/cursor.gd39
-rw-r--r--scenes/UI/cursor.gd.uid1
-rw-r--r--scenes/UI/cursor.tscn12
-rw-r--r--scenes/crawlers/soldier.gd2
-rw-r--r--scenes/defenders/warlock.gd5
-rw-r--r--scenes/defenders/warlock.tscn1
-rw-r--r--scenes/defenders/warlock_projectile.gd2
8 files changed, 59 insertions, 16 deletions
diff --git a/scenes/Main.tscn b/scenes/Main.tscn
index a7af970..59c5e82 100644
--- a/scenes/Main.tscn
+++ b/scenes/Main.tscn
@@ -2,7 +2,7 @@
[ext_resource type="Texture2D" uid="uid://di2vybjsniag4" path="res://assets/tilemap.png" id="1_rvslj"]
[ext_resource type="Script" uid="uid://i5bjnah05h14" path="res://path_spawner.gd" id="2_0bbpv"]
-[ext_resource type="PackedScene" uid="uid://d27cf3jwfvbqu" path="res://scenes/defenders/warlock.tscn" id="3_0bbpv"]
+[ext_resource type="PackedScene" uid="uid://cq6d7gmjbwl14" path="res://scenes/UI/cursor.tscn" id="4_rarhs"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_tjuek"]
texture = ExtResource("1_rvslj")
@@ -1090,7 +1090,7 @@ sources/0 = SubResource("TileSetAtlasSource_tjuek")
[node name="Main" type="Node2D"]
[node name="L1" type="TileMapLayer" parent="."]
-tile_map_data = PackedByteArray("AAAAAAoAAAAIAAEAAGABAAoAAAAIAAEAAGACAAoAAAAIAAEAAGADAAoAAAAIAAEAAGAEAAoAAAAIAAEAAGAFAAoAAAAIAAEAAGAGAAoAAAAIAAEAAGAHAAoAAAAIAAEAAGAIAAoAAAAIAAEAAGAJAAoAAAAIAAEAAGAKAAoAAAAIAAEAAGALAAoAAAAIAAEAAGAMAAoAAAAIAAEAAGANAAoAAAAIAAEAAGAOAAoAAAAIAAEAAGAPAAoAAAAJAAEAADAPAAkAAAAIAAEAAAAPAAgAAAAIAAEAAAAPAAcAAAAIAAEAAAAPAAYAAAAJAAEAAFAOAAYAAAAIAAEAAGANAAYAAAAIAAEAAGAMAAYAAAAIAAEAAGALAAYAAAAIAAEAAGAKAAYAAAAIAAEAAGAJAAYAAAAIAAEAAGAIAAYAAAAIAAEAAGAHAAYAAAAIAAEAAGAGAAYAAAAIAAEAAGAFAAYAAAAIAAEAAGAEAAMAAAAJAAEAAAAEAAUAAAAIAAEAADAEAAQAAAAIAAEAADAFAAMAAAAIAAEAAGAGAAMAAAAIAAEAAGAHAAMAAAAIAAEAAGAIAAMAAAAIAAEAAGAJAAMAAAAIAAEAAGAKAAMAAAAIAAEAAGALAAMAAAAIAAEAAGAMAAMAAAAIAAEAAGANAAMAAAAIAAEAAGAOAAMAAAAIAAEAAGAPAAMAAAAIAAEAAGAQAAMAAAAIAAEAAGARAAMAAAAIAAEAAGASAAMAAAAIAAEAAGATAAMAAAAIAAEAAGAEAAYAAAAJAAEAAGA=")
+tile_map_data = PackedByteArray("AAAAAAoAAAAIAAEAAGABAAoAAAAIAAEAAGACAAoAAAAIAAEAAGADAAoAAAAIAAEAAGAEAAoAAAAIAAEAAGAFAAoAAAAIAAEAAGAGAAoAAAAIAAEAAGAHAAoAAAAIAAEAAGAIAAoAAAAIAAEAAGAJAAoAAAAIAAEAAGAKAAoAAAAIAAEAAGALAAoAAAAIAAEAAGAMAAoAAAAIAAEAAGANAAoAAAAIAAEAAGAOAAoAAAAIAAEAAGAPAAoAAAAJAAEAADAPAAkAAAAIAAEAAAAPAAgAAAAIAAEAAAAPAAcAAAAIAAEAAAAPAAYAAAAJAAEAAFAOAAYAAAAIAAEAAGANAAYAAAAIAAEAAGAMAAYAAAAIAAEAAGALAAYAAAAIAAEAAGAKAAYAAAAIAAEAAGAJAAYAAAAIAAEAAGAIAAYAAAAIAAEAAGAHAAYAAAAIAAEAAGAGAAYAAAAIAAEAAGAFAAYAAAAIAAEAAGAEAAMAAAAJAAEAAAAEAAUAAAAIAAEAADAEAAQAAAAIAAEAADAFAAMAAAAIAAEAAGAGAAMAAAAIAAEAAGAHAAMAAAAIAAEAAGAIAAMAAAAIAAEAAGAJAAMAAAAIAAEAAGAKAAMAAAAIAAEAAGALAAMAAAAIAAEAAGAMAAMAAAAIAAEAAGANAAMAAAAIAAEAAGAOAAMAAAAIAAEAAGAPAAMAAAAIAAEAAGAQAAMAAAAIAAEAAGARAAMAAAAIAAEAAGASAAMAAAAIAAEAAGATAAMAAAAIAAEAAGAEAAYAAAAJAAEAAGAHAAAAAAASABQAAAAGAAAAAAAAAAEAAAAFAAAAAAASABUAAAAEAAAAAAARABUAAAADAAAAAAAQABUAAAACAAAAAAAQABQAAAACAAEAAAAQABUAAAAHAAEAAAASABUAAAAGAAEAAAARABUAAAAFAAEAAAARABUAAAAEAAEAAAARABUAAAADAAEAAAARABUAAAAPAA4AAAALAAUAAAAQAA4AAAAIAAUAAAARAA4AAAAIAAUAAAASAA4AAAAIAAUAAAATAA0AAAAIAAUAAAATAA4AAAAIAAUAAAALAA4AAAAKAAUAAAAMAA4AAAAJAAUAAFANAA4AAAAJAAUAAFAOAA4AAAAJAAUAAFAPAA0AAAAKAAUAAAAQAA0AAAAJAAUAAFARAA0AAAAJAAUAAFASAAsAAAAKAAUAAAASAAwAAAAJAAUAAAASAA0AAAALAAUAAAATAAsAAAAJAAUAAFATAAwAAAAIAAUAAAATAAQAAAARAAkAAAATAAIAAAARAAkAAAAKAA4AAAATAAYAAAAMAA0AAAATAAYAAAAOAA0AAAABAAEAAAANAA0AAAASAAYAAAAQAAwAAAASAAYAAAALAA0AAAADAAIAAAARAAsAAAABAAEAAAARAAwAAAABAAEAAAAPAAwAAAAEAAEAAAASAAoAAAAEAAEAAAAMAAwAAAAGAAIAAAANAAwAAAACAAEAAAAJAA4AAAABAAEAAAAKAAwAAAABAAEAAAAOAAsAAAABAAEAAAARAAkAAAABAAEAAAARAAoAAAACAAEAAAAPAAsAAAACAAEAAAAIAA4AAAADAAEAAAAIAA0AAAAAAAEAAAAHAA0AAAACAAEAAAAHAA4AAAABAAMAAAAGAA4AAAABAAMAAAAFAA4AAAABAAMAAAAEAA4AAAABAAMAAAADAA4AAAABAAMAAAACAA4AAAABAAMAAAABAA4AAAABAAMAAAAAAA4AAAABAAMAAAAKAA0AAAAFAAIAAAAQAAcAAAADAAAAAAARAAcAAAADAAAAAAASAAcAAAADAAAAAAATAAcAAAADAAAAAAALAAwAAAAAAAIAAAACAAcAAAAAAAIAAAAGAAIAAAAAAAIAAAANAAQAAAAAAAIAAAABAAsAAAAAAAIAAAABAAEAAAAAAAIAAAAMAAAAAAAAAAIAAAARAAUAAAAAAAIAAAAEAAwAAAABAAEAAAAHAAcAAAABAAEAAAALAAEAAAABAAEAAAASAAgAAAABAAEAAAASAAEAAAABAAEAAAABAAUAAAABAAEAAAABAAkAAAATAAYAAAAOAAQAAAATAAYAAAATAAkAAAATAAYAAAABAA0AAAAdAAcAAAASAAkAAAAOAAoAAAABAAAAAAAOAAoAAAAAAAwAAAADAAEAAAACAAkAAAADAAEAAAACAAsAAAADAAEAAAAAAAgAAAADAAEAAAAAAAsAAAAEAAEAAAABAAgAAAAEAAEAAAAAAAYAAAAEAAEAAAAAAAcAAAAEAAEAAAACAAwAAAAEAAEAAAABAAwAAAAEAAIAAAAAAA0AAAAEAAIAAAABAAYAAAADAAIAAAACAAgAAAADAAIAAAAEAA0AAAADAAIAAAAGAAsAAAAEAAIAAAAGAA0AAAADAAEAAAAFAAwAAAABAAEAAAADAA0AAAABAAEAAAADAAwAAAAGAAIAAAANAAAAAAAQAA8AAAAOAAAAAAARAA8AAAAPAAAAAAARAA8AAAAQAAAAAAARAA8AAAARAAAAAAARAA8AAAASAAAAAAARAA8AAAATAAAAAAARAA8AAAACAAIAAAABAAEAAAADAAIAAAABAAEAAAABAAMAAAABAAEAAAAIAAEAAAABAAEAAAACAAUAAAADAAIAAAAAAAIAAAADAAIAAAABAAIAAAAGAAIAAAAIAAAAAAAFAAEAAAAKAAAAAAAFAAEAAAAIAAIAAAAFAAEAAAAAAAMAAAAAAAEAAAAAAAAAAAAAAAEAAAACAAQAAAAAAAEAAAACAAYAAAAFAAIAAAAJAAAAAAATAAYAAAALAAAAAAASAAYAAAAAAAQAAAAOAAYAAAAAAAkAAAAOAAYAAAAKAAsAAAAOAAYAAAAFAA0AAAAPAAYAAAATAAoAAAAPAAYAAAAMAAEAAAAPAAYAAAA=")
tile_set = SubResource("TileSet_47enk")
[node name="PathSpawner" type="Node2D" parent="."]
@@ -1100,15 +1100,8 @@ script = ExtResource("2_0bbpv")
wait_time = 2.0
autostart = true
-[node name="Warlock" parent="PathSpawner" instance=ExtResource("3_0bbpv")]
-position = Vector2(248, 40)
-
[node name="Defenders" type="Node" parent="."]
-[node name="Warlock" parent="Defenders" instance=ExtResource("3_0bbpv")]
-position = Vector2(168, 136)
-
-[node name="Warlock" parent="." instance=ExtResource("3_0bbpv")]
-position = Vector2(88, 88)
+[node name="Cursor" parent="." instance=ExtResource("4_rarhs")]
[connection signal="timeout" from="PathSpawner/Timer" to="PathSpawner" method="_on_timer_timeout"]
diff --git a/scenes/UI/cursor.gd b/scenes/UI/cursor.gd
new file mode 100644
index 0000000..158a2a4
--- /dev/null
+++ b/scenes/UI/cursor.gd
@@ -0,0 +1,39 @@
+extends Node2D
+
+var tile_size = 16.0
+var max_x = 20 * tile_size
+var max_y = 15 * tile_size
+
+var dirs = {"move_right": Vector2.RIGHT,
+ "move_left": Vector2.LEFT,
+ "move_up": Vector2.UP,
+ "move_down": Vector2.DOWN}
+var towers : Dictionary
+
+func _ready():
+ towers["place_warlock"] = preload("res://scenes/defenders/warlock.tscn")
+ position = position.snapped(Vector2.ONE * tile_size)
+ position += Vector2.ONE * tile_size/2
+
+func _unhandled_input(event):
+ for dir in dirs.keys():
+ if event.is_action_pressed(dir):
+ handle_move(dirs[dir])
+ return
+ for tower in towers.keys():
+ if event.is_action_pressed(tower):
+ handle_tower(towers[tower])
+ return
+
+func handle_tower(tower):
+ var tmp = tower.instantiate()
+ var path = get_tree().get_root().get_node("Main/Defenders")
+ path.add_child(tmp)
+ tmp.global_position = position
+
+func handle_move(dir):
+ position += dir * tile_size
+ position.x = max(position.x, tile_size / 2)
+ position.y = max(position.y, tile_size / 2)
+ position.x = min(position.x, max_x - (tile_size / 2))
+ position.y = min(position.y, max_y - (tile_size / 2))
diff --git a/scenes/UI/cursor.gd.uid b/scenes/UI/cursor.gd.uid
new file mode 100644
index 0000000..015cefa
--- /dev/null
+++ b/scenes/UI/cursor.gd.uid
@@ -0,0 +1 @@
+uid://bwiimenoyb5og
diff --git a/scenes/UI/cursor.tscn b/scenes/UI/cursor.tscn
new file mode 100644
index 0000000..9da5554
--- /dev/null
+++ b/scenes/UI/cursor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://cq6d7gmjbwl14"]
+
+[ext_resource type="Script" uid="uid://bwiimenoyb5og" path="res://scenes/UI/cursor.gd" id="1_4knn1"]
+[ext_resource type="Texture2D" uid="uid://di2vybjsniag4" path="res://assets/tilemap.png" id="2_gber1"]
+
+[node name="Cursor" type="Node2D"]
+script = ExtResource("1_4knn1")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("2_gber1")
+region_enabled = true
+region_rect = Rect2(576, 192, 16, 16)
diff --git a/scenes/crawlers/soldier.gd b/scenes/crawlers/soldier.gd
index 2db3f60..8cce02c 100644
--- a/scenes/crawlers/soldier.gd
+++ b/scenes/crawlers/soldier.gd
@@ -1,7 +1,7 @@
extends CharacterBody2D
@export var speed = 50.0
-@export var health = 40
+@export var health = 30
func _process(delta):
get_parent().set_progress(get_parent().get_progress() + speed * delta)
diff --git a/scenes/defenders/warlock.gd b/scenes/defenders/warlock.gd
index 18803be..de83f39 100644
--- a/scenes/defenders/warlock.gd
+++ b/scenes/defenders/warlock.gd
@@ -21,9 +21,8 @@ func select_target(targets):
curr = i.get_node("../")
path_name = null if (curr == null) else curr.get_parent().name
-func _on_tower_body_entered(body: Node2D):
- if "CrawlerSoldier" in body.name:
- select_target(get_node("Tower").get_overlapping_bodies())
+func _on_tower_body_entered(_body: Node2D):
+ select_target(get_node("Tower").get_overlapping_bodies())
func _on_tower_body_exited(_body: Node2D):
select_target(get_node("Tower").get_overlapping_bodies())
diff --git a/scenes/defenders/warlock.tscn b/scenes/defenders/warlock.tscn
index 7b097c5..47b760a 100644
--- a/scenes/defenders/warlock.tscn
+++ b/scenes/defenders/warlock.tscn
@@ -32,7 +32,6 @@ region_enabled = true
region_rect = Rect2(496, 16, 16, 16)
[node name="FireRate" type="Timer" parent="."]
-wait_time = 0.75
autostart = true
[connection signal="body_entered" from="Tower" to="." method="_on_tower_body_entered"]
diff --git a/scenes/defenders/warlock_projectile.gd b/scenes/defenders/warlock_projectile.gd
index b46ed29..0a1cff4 100644
--- a/scenes/defenders/warlock_projectile.gd
+++ b/scenes/defenders/warlock_projectile.gd
@@ -1,7 +1,7 @@
extends CharacterBody2D
var target
-var speed = 300
+var speed = 100
var path_name = ""
var projectile_damage