Files
tekton/tools/build_dasher_pack_headless.gd
T
2026-06-12 18:05:04 +08:00

49 lines
1.6 KiB
GDScript

extends SceneTree
# Headless equivalent of build_dasher_pack.gd.
# Run from CLI AFTER convert_dasher_animations_headless.gd:
# godot --headless --path /home/beng/Godot/Projects/tekton-enet --script res://tools/build_dasher_pack_headless.gd
#
# Produces: res://assets/characters/animations/dasher-pack.tres
const ANIM_DIR := "res://assets/characters/animations"
const OUTPUT := "res://assets/characters/animations/dasher-pack.res"
func _init() -> void:
print("[Build] Headless run starting...")
var combined := AnimationLibrary.new()
var dir := DirAccess.open(ANIM_DIR)
if not dir:
push_error("[Build] Cannot open %s" % ANIM_DIR)
quit(1)
return
var loaded: Array[String] = []
for fname in dir.get_files():
if not fname.begins_with("dasher_"): continue
if not fname.ends_with(".res"): continue
if fname == "dasher-pack.res": continue
var path := "%s/%s" % [ANIM_DIR, fname]
var res: Resource = load(path)
if not res is AnimationLibrary:
push_warning("[Build] %s is not an AnimationLibrary, skipping" % fname)
continue
var lib: AnimationLibrary = res
for anim_name in lib.get_animation_list():
if combined.has_animation(anim_name):
push_warning("[Build] Duplicate anim name '%s' in %s, skipping" % [anim_name, fname])
continue
combined.add_animation(anim_name, lib.get_animation(anim_name))
loaded.append("%s/%s" % [fname, anim_name])
var err := ResourceSaver.save(combined, OUTPUT)
if err != OK:
push_error("[Build] ResourceSaver.save failed: %d" % err)
quit(1)
return
print("[Build] Done. %d animation(s) written to %s" % [loaded.size(), OUTPUT])
for l in loaded:
print(" - %s" % l)
quit(0)