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 catalog := ContentCatalog.create_core() if catalog.is_valid(): for enemy in catalog.get_enemies(): _enemies[enemy.enemy_id] = enemy _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) values.sort_custom( func(first: EnemyDefinition, second: EnemyDefinition) -> bool: return String(first.enemy_id) < String(second.enemy_id) ) return values