diff options
author | bd <bdunahu@operationnull.com> | 2025-05-20 21:01:48 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-20 21:01:48 -0400 |
commit | dc46bc748d45346c8062a46121e1d0f13c8af05a (patch) | |
tree | 75e94e7256955e264b69ca97add0866a154663de | |
parent | 835f302033070c949c045dd82e387ae8805e2710 (diff) |
Make animations more general
-rw-r--r-- | scenes/defenders/base_animation_handler.gd (renamed from scenes/defenders/warlock_animator.gd) | 16 | ||||
-rw-r--r-- | scenes/defenders/base_animation_handler.gd.uid | 1 | ||||
-rw-r--r-- | scenes/defenders/warlock.gd | 21 | ||||
-rw-r--r-- | scenes/defenders/warlock.tscn | 4 | ||||
-rw-r--r-- | scenes/defenders/warlock_animation_handler.gd | 6 | ||||
-rw-r--r-- | scenes/defenders/warlock_animation_handler.gd.uid (renamed from scenes/defenders/warlock_animator.gd.uid) | 0 | ||||
-rw-r--r-- | scenes/defenders/warlock_projectile.gd | 4 | ||||
-rw-r--r-- | scenes/levels/L1.tscn | 1 |
8 files changed, 35 insertions, 18 deletions
diff --git a/scenes/defenders/warlock_animator.gd b/scenes/defenders/base_animation_handler.gd index be14337..c9e7630 100644 --- a/scenes/defenders/warlock_animator.gd +++ b/scenes/defenders/base_animation_handler.gd @@ -2,10 +2,9 @@ extends Sprite2D @onready var tile_map = preload("res://assets/tilemap.png") -var idle = Rect2(496, 16, 16, 16) -var attack = Rect2(496, 32, 16, 16) - -var is_idle = true +var idle : Rect2 +var attack : Rect2 +var is_idle : bool = true func _ready(): update_texture() @@ -15,4 +14,11 @@ func update_texture(): atlas_texture.atlas = tile_map atlas_texture.region = idle if is_idle else attack texture = atlas_texture - print(atlas_texture.region) + +func attack_state(): + is_idle = false + update_texture() + +func idle_state(): + is_idle = true + update_texture() diff --git a/scenes/defenders/base_animation_handler.gd.uid b/scenes/defenders/base_animation_handler.gd.uid new file mode 100644 index 0000000..75b9ff2 --- /dev/null +++ b/scenes/defenders/base_animation_handler.gd.uid @@ -0,0 +1 @@ +uid://cb5we0gjjbcfu diff --git a/scenes/defenders/warlock.gd b/scenes/defenders/warlock.gd index b8d143b..fbc6a3f 100644 --- a/scenes/defenders/warlock.gd +++ b/scenes/defenders/warlock.gd @@ -4,7 +4,7 @@ extends StaticBody2D @onready var sprite_node = $Sprite2D var projectile = preload("res://scenes/defenders/warlock_projectile.tscn") -var path_name +var curr func select_target(targets): var tmp = [] @@ -13,29 +13,32 @@ func select_target(targets): tmp.append(i) # this is all to select the furthest target on the track - var curr = null + curr = null for i in tmp: if curr == null: curr = i.get_node("../") else: if i.get_parent().get_progress() > curr.get_progress(): curr = i.get_node("../") - path_name = null if (curr == null) else curr.get_parent().name func _on_tower_body_entered(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) - sprite_node.is_idle = true if (path_name == null) else false - sprite_node.update_texture() + handle_animation() func _on_tower_body_exited(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) - sprite_node.is_idle = true if (path_name == null) else false - sprite_node.update_texture() + handle_animation() func _on_fire_rate_timeout(): - if (path_name != null): + if (curr != null): var tmp_projectile = projectile.instantiate() - tmp_projectile.path_name = path_name + tmp_projectile.curr = curr tmp_projectile.projectile_damage = projectile_damage get_node("ProjectileContainer").call_deferred("add_child", tmp_projectile) tmp_projectile.global_position = $Aim.global_position + +func handle_animation(): + if (curr == null): + sprite_node.idle_state() + else: + sprite_node.attack_state() diff --git a/scenes/defenders/warlock.tscn b/scenes/defenders/warlock.tscn index 3ab694d..d306d41 100644 --- a/scenes/defenders/warlock.tscn +++ b/scenes/defenders/warlock.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=5 format=3 uid="uid://d27cf3jwfvbqu"] [ext_resource type="Script" uid="uid://dvhqpgw6vhayu" path="res://scenes/defenders/warlock.gd" id="1_rpypk"] -[ext_resource type="Script" uid="uid://6i27kmcpl7ix" path="res://scenes/defenders/warlock_animator.gd" id="2_rpypk"] +[ext_resource type="Script" uid="uid://6i27kmcpl7ix" path="res://scenes/defenders/warlock_animation_handler.gd" id="2_rpypk"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_wu3n4"] size = Vector2(16, 16) [sub_resource type="CircleShape2D" id="CircleShape2D_rpypk"] -radius = 64.0 +radius = 48.0 [node name="Warlock" type="StaticBody2D"] script = ExtResource("1_rpypk") diff --git a/scenes/defenders/warlock_animation_handler.gd b/scenes/defenders/warlock_animation_handler.gd new file mode 100644 index 0000000..49c2b8a --- /dev/null +++ b/scenes/defenders/warlock_animation_handler.gd @@ -0,0 +1,6 @@ +extends "res://scenes/defenders/base_animation_handler.gd" + +func _ready(): + idle = Rect2(496, 16, 16, 16) + attack = Rect2(496, 32, 16, 16) + update_texture() diff --git a/scenes/defenders/warlock_animator.gd.uid b/scenes/defenders/warlock_animation_handler.gd.uid index 4fa3cf7..4fa3cf7 100644 --- a/scenes/defenders/warlock_animator.gd.uid +++ b/scenes/defenders/warlock_animation_handler.gd.uid diff --git a/scenes/defenders/warlock_projectile.gd b/scenes/defenders/warlock_projectile.gd index 2757019..2188c38 100644 --- a/scenes/defenders/warlock_projectile.gd +++ b/scenes/defenders/warlock_projectile.gd @@ -2,13 +2,13 @@ extends CharacterBody2D var target var speed = 100 -var path_name = "" +var curr = "" var projectile_damage func _physics_process(_delta: float): var path_spawner_node = get_tree().get_root().get_node("Main/PathSpawner") for i in path_spawner_node.get_child_count(): - if path_spawner_node.get_child(i).name == path_name: + if path_spawner_node.get_child(i).name == curr.get_parent().name: target = path_spawner_node.get_child(i).get_child(0).get_child(0) # another tower destroyed this target diff --git a/scenes/levels/L1.tscn b/scenes/levels/L1.tscn index 323ba6f..1231f7a 100644 --- a/scenes/levels/L1.tscn +++ b/scenes/levels/L1.tscn @@ -13,6 +13,7 @@ curve = SubResource("Curve2D_tjuek") [node name="PathFollow2D" type="PathFollow2D" parent="."] position = Vector2(-8, 168) +rotates = false loop = false [node name="CrawlerSoldier" parent="PathFollow2D" instance=ExtResource("1_mao1c")] |