summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-23 11:28:51 -0400
committerbd <bdunahu@operationnull.com>2025-05-23 11:28:51 -0400
commitbc3589db94692fc4cdd4388dacff0f44fe8a2030 (patch)
treee85193cc6c765a640c019452768725bd8af95214
parentd67d2ac3463523be93915a0738a05c440f63ee67 (diff)
Move basic tower/enemy stats to separate resource
-rw-r--r--resources/game_stats_config.tres18
-rw-r--r--scenes/Main.tscn1
-rw-r--r--scripts/base_defender.gd2
-rw-r--r--scripts/cursor.gd7
-rw-r--r--scripts/game_data.gd7
-rw-r--r--scripts/game_stats_config.gd20
-rw-r--r--scripts/game_stats_config.gd.uid1
-rw-r--r--scripts/warlock.gd9
-rw-r--r--scripts/wyvern.gd12
9 files changed, 65 insertions, 12 deletions
diff --git a/resources/game_stats_config.tres b/resources/game_stats_config.tres
new file mode 100644
index 0000000..f5eaf7c
--- /dev/null
+++ b/resources/game_stats_config.tres
@@ -0,0 +1,18 @@
+[gd_resource type="Resource" script_class="GameStatsConfig" load_steps=2 format=3 uid="uid://d3x0o0033pf8m"]
+
+[ext_resource type="Script" uid="uid://dndluiku7wdi8" path="res://scripts/game_stats_config.gd" id="1_t0c0a"]
+
+[resource]
+script = ExtResource("1_t0c0a")
+starting_life = 20
+starting_morale = 10
+warlock_damage = 5.0
+warlock_fire_rate = 1.0
+warlock_defender_range = 75.0
+warlock_defender_cost = 10
+wyvern_damage = 2.0
+wyvern_fire_rate = 1.0
+wyvern_damage_tick_rate = 0.25
+wyvern_defender_range = 35.0
+wyvern_defender_cost = 15
+metadata/_custom_type_script = "uid://dndluiku7wdi8"
diff --git a/scenes/Main.tscn b/scenes/Main.tscn
index 78deb34..f18bbb2 100644
--- a/scenes/Main.tscn
+++ b/scenes/Main.tscn
@@ -27,6 +27,7 @@ func free_tile(tile_position):
[node name="Main" type="Node2D"]
[node name="Cursor" parent="." instance=ExtResource("4_rarhs")]
+z_index = 2
[node name="Map" parent="." instance=ExtResource("2_vcsgt")]
diff --git a/scripts/base_defender.gd b/scripts/base_defender.gd
index 66be11d..4ebe417 100644
--- a/scripts/base_defender.gd
+++ b/scripts/base_defender.gd
@@ -4,7 +4,7 @@ extends StaticBody2D
var defender_range : float
var fire_rate : float
-var damage : int
+var damage : float
var target : CharacterBody2D
func _on_fire_timer_timeout() -> void:
diff --git a/scripts/cursor.gd b/scripts/cursor.gd
index d36d5eb..d12f9e0 100644
--- a/scripts/cursor.gd
+++ b/scripts/cursor.gd
@@ -1,6 +1,7 @@
extends Node2D
@onready var tilemap = get_node("../Map/TileMapLayer")
+var game_stats_config = preload("res://resources/game_stats_config.tres")
@onready var map_config = preload("res://resources/map_generator_resource.tres")
var occupied_tiles = {}
@@ -11,14 +12,14 @@ var dirs = {"move_right": Vector2.RIGHT,
"move_left": Vector2.LEFT,
"move_up": Vector2.UP,
"move_down": Vector2.DOWN}
-var towers : Dictionary = {
+var towers : Dictionary[String, Dictionary] = {
"place_warlock": {
"scene": preload("res://scenes/warlock.tscn"),
- "cost": 10
+ "cost": game_stats_config.warlock_defender_cost
},
"place_wyvern": {
"scene": preload("res://scenes/wyvern.tscn"),
- "cost": 15
+ "cost": game_stats_config.wyvern_defender_cost
}
}
diff --git a/scripts/game_data.gd b/scripts/game_data.gd
index fd6a80e..7c82257 100644
--- a/scripts/game_data.gd
+++ b/scripts/game_data.gd
@@ -1,10 +1,11 @@
-
extends Node
+var game_stats_config = preload("res://resources/game_stats_config.tres")
+
signal life_changed
signal morale_changed
-var _life: int = 20
-var _morale: int = 10
+var _life: int = game_stats_config.starting_life
+var _morale: int = game_stats_config.starting_morale
func get_life() -> int:
return _life
diff --git a/scripts/game_stats_config.gd b/scripts/game_stats_config.gd
new file mode 100644
index 0000000..671e146
--- /dev/null
+++ b/scripts/game_stats_config.gd
@@ -0,0 +1,20 @@
+extends Resource
+class_name GameStatsConfig
+
+@export var starting_life : int = 20
+@export var starting_morale : int = 10
+
+@export var warlock_damage : float = 5.0
+@export var warlock_fire_rate : float = 1.0
+@export var warlock_defender_range : float = 75.0
+@export var warlock_defender_cost : int = 10
+
+@export var wyvern_damage : float = 2.0
+@export var wyvern_fire_rate : float = 1.0
+@export var wyvern_damage_tick_rate: float = 0.25
+@export var wyvern_defender_range : float = 35.0
+@export var wyvern_defender_cost : int = 15
+
+@export var fodder_damage : float = 1.0
+@export var fodder_speed : float = 30.0
+@export var fodder_health : float = 25.0
diff --git a/scripts/game_stats_config.gd.uid b/scripts/game_stats_config.gd.uid
new file mode 100644
index 0000000..0e78da8
--- /dev/null
+++ b/scripts/game_stats_config.gd.uid
@@ -0,0 +1 @@
+uid://dndluiku7wdi8
diff --git a/scripts/warlock.gd b/scripts/warlock.gd
index 058f86f..4048bb0 100644
--- a/scripts/warlock.gd
+++ b/scripts/warlock.gd
@@ -1,10 +1,15 @@
extends "res://scripts/base_defender.gd"
+var game_stats_config = preload("res://resources/game_stats_config.tres")
var projectile: PackedScene = preload("res://scenes/warlock_projectile.tscn")
+var range_collision : CollisionShape2D
func _ready():
- damage = 5
- fire_rate = 1.0
+ damage = game_stats_config.warlock_damage
+ fire_rate = game_stats_config.warlock_fire_rate
+ defender_range = game_stats_config.warlock_defender_range
+ range_collision = $Tower/CollisionShape2D
+ range_collision.shape.radius = defender_range
func _on_fire_timer_timeout():
select_target()
diff --git a/scripts/wyvern.gd b/scripts/wyvern.gd
index ecd92ad..f90c019 100644
--- a/scripts/wyvern.gd
+++ b/scripts/wyvern.gd
@@ -1,12 +1,18 @@
extends "res://scripts/base_defender.gd"
+var game_stats_config = preload("res://resources/game_stats_config.tres")
var projectile: PackedScene = preload("res://scenes/wyvern_projectile.tscn")
-var damage_tick_rate: float = 0.25
+var damage_tick_rate: float
+var range_collision : CollisionShape2D
var firing : bool = false
func _ready():
- damage = 2
- fire_rate = 1.0
+ damage = game_stats_config.wyvern_damage
+ fire_rate = game_stats_config.wyvern_fire_rate
+ damage_tick_rate = game_stats_config.wyvern_damage_tick_rate
+ defender_range = game_stats_config.wyvern_defender_range
+ range_collision = $Tower/CollisionShape2D
+ range_collision.shape.radius = defender_range
func _process(_delta):
select_target()