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
+90
View File
@@ -0,0 +1,90 @@
extends SceneTree
var failures: Array[String] = []
func _init() -> void:
_run.call_deferred()
func _run() -> void:
var effect_definition_script: Script = load("res://resources/effects/effect_definition.gd")
var effect_instance_script: Script = load("res://resources/effects/effect_instance.gd")
var stat_modifier_script: Script = load("res://resources/effects/stat_modifier.gd")
var defense_modifier_script: Script = load("res://resources/effects/defense_modifier.gd")
var action_rule_modifier_script: Script = load("res://resources/effects/action_rule_modifier.gd")
_expect(effect_definition_script != null, "EffectDefinition script should load")
_expect(effect_instance_script != null, "EffectInstance script should load")
_expect(stat_modifier_script != null, "StatModifier script should load")
_expect(defense_modifier_script != null, "DefenseModifier script should load")
_expect(action_rule_modifier_script != null, "ActionRuleModifier script should load")
if effect_definition_script == null or effect_instance_script == null or stat_modifier_script == null or defense_modifier_script == null or action_rule_modifier_script == null:
_finish()
return
var definition: Resource = effect_definition_script.new()
definition.set("id", &"test_effect")
definition.set("duration_type", &"beats")
definition.set("duration", 4.0)
_expect_int(int(definition.get("max_stacks")), 1, "EffectDefinition max_stacks default")
var stat_modifier: Resource = stat_modifier_script.new()
stat_modifier.set("stat", &"damage")
stat_modifier.set("operation", "multiply")
stat_modifier.set("value", 1.2)
var stat_modifiers: Array[Resource] = [stat_modifier]
definition.set("stat_modifiers", stat_modifiers)
var defense_modifier: Resource = defense_modifier_script.new()
defense_modifier.set("defense_state", &"SuperArmor")
var defense_modifiers: Array[Resource] = [defense_modifier]
definition.set("defense_modifiers", defense_modifiers)
var action_rule_modifier: Resource = action_rule_modifier_script.new()
action_rule_modifier.set("block_movement", true)
var action_rule_modifiers: Array[Resource] = [action_rule_modifier]
definition.set("action_rule_modifiers", action_rule_modifiers)
var instance: RefCounted = effect_instance_script.call("create", definition, &"test")
_expect(instance != null, "EffectInstance.create should return an instance")
if instance != null:
_expect_float(float(instance.get("remaining")), 4.0, "EffectInstance should copy beat duration")
instance.call("tick_beats", 1.0)
_expect_float(float(instance.get("remaining")), 3.0, "EffectInstance should tick beat duration")
_expect_bool(bool(instance.call("matches_event_context", {"action_tags": [&"melee"]})), true, "EffectInstance should accept unrestricted context")
_expect_int((definition.get("stat_modifiers") as Array).size(), 1, "EffectDefinition should hold stat modifiers")
_expect_int((definition.get("defense_modifiers") as Array).size(), 1, "EffectDefinition should hold defense modifiers")
_expect_int((definition.get("action_rule_modifiers") as Array).size(), 1, "EffectDefinition should hold action rule modifiers")
_finish()
func _expect(condition: bool, label: String) -> void:
if not condition:
failures.append(label)
func _expect_bool(actual: bool, expected: bool, label: String) -> void:
if actual != expected:
failures.append("%s: expected %s, got %s" % [label, expected, actual])
func _expect_int(actual: int, expected: int, label: String) -> void:
if actual != expected:
failures.append("%s: expected %d, got %d" % [label, expected, actual])
func _expect_float(actual: float, expected: float, label: String) -> void:
if not is_equal_approx(actual, expected):
failures.append("%s: expected %.3f, got %.3f" % [label, expected, actual])
func _finish() -> void:
if failures.is_empty():
print("PASS effect resources")
quit(0)
else:
for failure: String in failures:
push_error(failure)
quit(1)