初次提交

This commit is contained in:
2026-07-20 10:56:52 +08:00
commit 7bcc0026e0
462 changed files with 50191 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
## StatusRegistry — 状态效果注册表(Autoload: StatusRegistry
## 纯数据驱动:唯一来源 res://data/status_effects.json(游戏设计器「状态」面板维护)
extends Node
const STATUS_JSON: String = "res://data/status_effects.json"
var _registry: Dictionary = {} # { status_id: int → StatusTypeDef }
func _ready() -> void:
if not FileAccess.file_exists(STATUS_JSON):
push_error("StatusRegistry: 缺失 res://data/status_effects.json(无状态效果定义)")
return
var data = JSON.parse_string(FileAccess.get_file_as_string(STATUS_JSON))
if not (data is Dictionary):
push_error("StatusRegistry: status_effects.json 格式错误")
return
for k in data:
var sid: int = int(k)
var d: Dictionary = data[k]
var t := StatusTypeDef.new()
t.id = sid
t.display_name = String(d.get("name", "Status %d" % sid))
t.duration = float(d.get("duration", 3.0))
t.tick_interval = float(d.get("tick_interval", 1.0))
t.stack_mode = int(d.get("stack_mode", 0))
t.max_stacks = int(d.get("max_stacks", 1))
t.dot_damage_per_tick = float(d.get("dot_damage", 0.0))
t.dot_damage_type = int(d.get("dot_damage_type", 0))
t.vfx_id = String(d.get("vfx_id", ""))
t.is_combo_tracker = bool(d.get("is_combo_tracker", false))
_registry[sid] = t
func get_type(status_id: int) -> StatusTypeDef:
return _registry.get(status_id, null)
func has_type(status_id: int) -> bool:
return _registry.has(status_id)
func get_registry_size() -> int:
return _registry.size()