Initial project sync

This commit is contained in:
wxm
2026-07-06 22:55:14 -07:00
commit 8cca00d0da
1066 changed files with 58585 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
class_name ActionPatternExporter
extends RefCounted
const ACTION_DIR := "res://resources/actions"
static func export_patterns(action_dir := ACTION_DIR) -> Dictionary:
var patterns := {}
_collect_patterns(action_dir, patterns)
return patterns
static func to_text(action_dir := ACTION_DIR) -> String:
var patterns := export_patterns(action_dir)
var keys := patterns.keys()
keys.sort()
var lines: Array[String] = []
for key: String in keys:
lines.append("%s -> %s" % [key, patterns[key]])
return "\n".join(lines)
static func _collect_patterns(action_dir: String, patterns: Dictionary) -> void:
var dir := DirAccess.open(action_dir)
if dir == null:
return
var subdirs := dir.get_directories()
subdirs.sort()
for subdir: String in subdirs:
_collect_patterns("%s/%s" % [action_dir, subdir], patterns)
var files := dir.get_files()
files.sort()
for file_name: String in files:
if not file_name.ends_with(".tres"):
continue
var action: Resource = load("%s/%s" % [action_dir, file_name])
if action == null:
continue
if _is_air_only_action(action):
continue
var key := _pattern_key(action.get("input_pattern"))
if key.is_empty():
continue
patterns[key] = StringName(str(action.get("id")))
static func _pattern_key(pattern: Variant) -> String:
if not pattern is Array:
return ""
var key := ""
for symbol: Variant in pattern:
key += str(symbol)
return key.replace(" ", "").to_upper()
static func _is_air_only_action(action: Resource) -> bool:
var states = action.get("allowed_ground_states")
return states is Array and states.size() == 1 and states[0] == &"Airborne"