diff options
author | bd <bdunahu@operationnull.com> | 2025-05-20 17:09:58 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-20 17:09:58 -0400 |
commit | 2e1a04a94ee7e132ac2b4334e37978bb2a271c21 (patch) | |
tree | 2866fc9dcccf0dcc0ba22aaa2c5062ac0ca74850 | |
parent | 5daf4cc09c6fb40729607138260cc10acb422477 (diff) |
Add cursor scene, ability to place Warlock tower anywhere
-rw-r--r-- | assets/tilemap.png | bin | 25142 -> 25227 bytes | |||
-rw-r--r-- | assets/tilemap.xcf | bin | 225375 -> 224101 bytes | |||
-rw-r--r-- | project.godot | 32 | ||||
-rw-r--r-- | scenes/Main.tscn | 13 | ||||
-rw-r--r-- | scenes/UI/cursor.gd | 39 | ||||
-rw-r--r-- | scenes/UI/cursor.gd.uid | 1 | ||||
-rw-r--r-- | scenes/UI/cursor.tscn | 12 | ||||
-rw-r--r-- | scenes/crawlers/soldier.gd | 2 | ||||
-rw-r--r-- | scenes/defenders/warlock.gd | 5 | ||||
-rw-r--r-- | scenes/defenders/warlock.tscn | 1 | ||||
-rw-r--r-- | scenes/defenders/warlock_projectile.gd | 2 |
11 files changed, 91 insertions, 16 deletions
diff --git a/assets/tilemap.png b/assets/tilemap.png Binary files differindex c355393..1476bc1 100644 --- a/assets/tilemap.png +++ b/assets/tilemap.png diff --git a/assets/tilemap.xcf b/assets/tilemap.xcf Binary files differindex d09afac..afaa9e8 100644 --- a/assets/tilemap.xcf +++ b/assets/tilemap.xcf diff --git a/project.godot b/project.godot index e1c8696..6366b7d 100644 --- a/project.godot +++ b/project.godot @@ -22,6 +22,38 @@ window/size/viewport_height=240 window/size/mode=2 window/stretch/mode="viewport" +[input] + +move_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":76,"key_label":0,"unicode":108,"location":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":72,"key_label":0,"unicode":104,"location":0,"echo":false,"script":null) +] +} +move_up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":75,"key_label":0,"unicode":107,"location":0,"echo":false,"script":null) +] +} +move_down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":74,"key_label":0,"unicode":106,"location":0,"echo":false,"script":null) +] +} +place_warlock={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} + [rendering] textures/canvas_textures/default_texture_filter=0 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 |