Files

38 lines
889 B
GDScript

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