class_name SimulationEnemies extends RefCounted static var _enemies: Dictionary = {} static var _cache_valid := false static func _ensure_cache() -> void: if _cache_valid: return _enemies = {} var raider := EnemyDefinition.new() raider.enemy_id = &"enemy_raider" raider.display_name = "Raider" raider.kind = SimulationIds.COMBATANT_KIND_RAIDER raider.weapon_id = SimulationIds.ITEM_SWORD raider.health = 60.0 raider.move_speed = 3.5 raider.body_color = Color(0.4, 0.13, 0.1, 1.0) raider.accent_color = Color(0.55, 0.55, 0.58, 1.0) _enemies[raider.enemy_id] = raider var wolf := EnemyDefinition.new() wolf.enemy_id = &"enemy_wolf" wolf.display_name = "Wolf" wolf.kind = SimulationIds.COMBATANT_KIND_WOLF wolf.weapon_id = SimulationIds.ITEM_CLAW wolf.health = 40.0 wolf.move_speed = 4.2 wolf.body_color = Color(0.32, 0.32, 0.34, 1.0) wolf.accent_color = Color(0.95, 0.5, 0.12, 1.0) wolf.visual_scale = Vector3(0.8, 0.8, 0.8) _enemies[wolf.enemy_id] = wolf _cache_valid = true static func invalidate_cache() -> void: _cache_valid = false static func get_enemy(enemy_id: StringName) -> EnemyDefinition: _ensure_cache() return _enemies.get(enemy_id) as EnemyDefinition static func get_all() -> Array[EnemyDefinition]: _ensure_cache() var values: Array[EnemyDefinition] = [] for enemy in _enemies.values(): values.append(enemy) return values