Refactor rhythm action architecture

This commit is contained in:
wxm
2026-07-02 09:47:52 -07:00
parent fc941cf08d
commit e62ed84518
124 changed files with 7516 additions and 2440 deletions

View File

@@ -4,34 +4,53 @@ var failures: Array[String] = []
func _init() -> void:
var scene: PackedScene = load("res://scenes/main/main.tscn")
_run.call_deferred()
func _run() -> void:
var scene: PackedScene = load("res://scenes/ui/main_ui.tscn")
if scene == null:
push_error("Could not load main.tscn")
push_error("Could not load main_ui.tscn")
quit(1)
return
var main: Node = scene.instantiate()
var required_nodes := [
"RhythmFeedback/RhythmTrack",
"RhythmFeedback/RhythmTrack/LeftRod",
"RhythmFeedback/RhythmTrack/RightRod",
"RhythmFeedback/RhythmTrack/CenterBase",
"RhythmFeedback/RhythmTrack/CenterFlash",
"RhythmFeedback/RhythmTrack/LeftMover",
"RhythmFeedback/RhythmTrack/RightMover",
"RhythmFeedback/RhythmTrack/BlueBallLeft1",
"RhythmFeedback/RhythmTrack/BlueBallRight1",
"RhythmFeedback/JudgementLabel",
]
for node_path: String in required_nodes:
if not main.has_node(node_path):
var ui := scene.instantiate()
root.add_child(ui)
await process_frame
for node_path: String in [
"RhythmTrack",
"RhythmTrack/JudgementLabel",
"RhythmTrack/ChartMarkerContainer",
"ComboWindow",
"StatusBars/HealthBar",
"StatusBars/EnergyBar",
"StatusBars/ChargeBar",
]:
if not ui.has_node(node_path):
failures.append("Missing rhythm UI node: %s" % node_path)
if main.has_method("_update_rhythm_track") == false:
failures.append("Main script missing _update_rhythm_track")
main.free()
var bus := _event_bus()
bus.emit_signal("action_judged", &"skill_a", {"label": "perfect", "diff": 0.0})
await process_frame
var label := ui.get_node("RhythmTrack/JudgementLabel") as Label
if not label.text.contains("SKILL_A"):
failures.append("RhythmTrack should render EventBus judgement text")
ui.free()
_finish()
func _event_bus() -> Node:
var bus := root.get_node_or_null("EventBus")
if bus == null:
bus = load("res://autoload/event_bus.gd").new()
bus.name = "EventBus"
root.add_child(bus)
return bus
func _finish() -> void:
if failures.is_empty():
print("PASS rhythm ui")
quit(0)