Refactor rhythm action architecture
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user