summaryrefslogtreecommitdiff
path: root/scripts/base_defender.gd
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/base_defender.gd')
-rw-r--r--scripts/base_defender.gd38
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