## ConfigMgr — JSON 配置加载器（Autoload: ConfigMgr）
## 权威来源：architecture_design.md §2 数据层
extends Node

var _cache: Dictionary = {}  # { file_path: String → Dictionary }

## 加载 JSON 配置文件（带缓存）
func load_json(path: String) -> Dictionary:
	if _cache.has(path):
		return _cache[path]
	if not FileAccess.file_exists(path):
		push_warning("ConfigMgr: 文件不存在 %s" % path)
		return {}
	var text: String = FileAccess.get_file_as_string(path)
	var parsed = JSON.parse_string(text)
	if parsed == null:
		push_error("ConfigMgr: JSON 解析失败 %s" % path)
		return {}
	if parsed is Dictionary:
		_cache[path] = parsed
		return parsed
	push_error("ConfigMgr: JSON 根节点不是 Dictionary %s" % path)
	return {}

## 查询键值（支持点号路径，如 "enemies.basic.hp"）
func get_value(path: String, key: String, default_val = null):
	var data: Dictionary = load_json(path)
	var keys: PackedStringArray = key.split(".")
	var node = data
	for k in keys:
		if node is Dictionary and node.has(k):
			node = node[k]
		else:
			return default_val
	return node

## 清除缓存（热重载时调用）
func clear_cache() -> void:
	_cache.clear()
