diff options
author | bd <bdunahu@operationnull.com> | 2025-05-24 14:08:17 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-24 14:08:17 -0400 |
commit | c38a303aad3c3c0d8114524e664da6ad721e21c4 (patch) | |
tree | 6fb27d2ff142e73bf59c3a0e5f7bed2fab49f844 /scripts/base_defender.gd | |
parent | 4948e4e35dadc749026a83d0a8402436a4b2ac44 (diff) |
Add logic to perform basic stat upgrades
Diffstat (limited to 'scripts/base_defender.gd')
-rw-r--r-- | scripts/base_defender.gd | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/scripts/base_defender.gd b/scripts/base_defender.gd index 424ce96..06ac34f 100644 --- a/scripts/base_defender.gd +++ b/scripts/base_defender.gd @@ -2,25 +2,30 @@ extends StaticBody2D @onready var sprite_node = $Sprite2D @onready var util = preload("res://scripts/util.gd") +@onready var game_stats_config = preload("res://resources/game_stats_config.tres") + +var tower_data : Dictionary +var tower_key : String -var defender_range : float -var fire_rate : float -var damage : float var target : CharacterBody2D -var idle_atlas_coords : Vector2i -var attack_atlas_coords : Vector2i var _idle_texture : Texture var _attack_texture : Texture -func _ready() -> void: - _idle_texture = util.get_tile_texture(idle_atlas_coords) - _attack_texture = util.get_tile_texture(attack_atlas_coords) +func set_tower_stats(tower_name : String): + tower_key = tower_name + tower_data = game_stats_config.defenders[tower_key] + +func reset_tower_range(): + $Tower/CollisionShape2D.shape.radius = tower_data["range"] + +func reset_tower_sprite(): + _idle_texture = util.get_tile_texture(tower_data["sprite_idle"]) + _attack_texture = util.get_tile_texture(tower_data["sprite_attacking"]) _idle_state() -func _on_fire_timer_timeout() -> void: - # extending classes override here - pass +func get_tower_key() -> String: + return tower_key func select_target() -> void: var targets : Array = _find_targets() @@ -56,7 +61,7 @@ func _on_tower_body_entered(_body: Node2D) -> void: var old_target : CharacterBody2D = target select_target() if old_target == null && old_target != target: - $FireTimer.start(fire_rate) + $FireTimer.start(tower_data["fire_rate"]) _on_fire_timer_timeout() func _attack_state(): @@ -64,3 +69,12 @@ func _attack_state(): func _idle_state(): sprite_node.texture = _idle_texture + +func apply_upgrade(effects: Dictionary): + for key in effects.keys(): + if key in tower_data: + tower_data[key] += effects[key] + +# extending classes should override below +func _on_fire_timer_timeout() -> void: + pass |