extends Node signal game_event_fired( event_name: StringName, cabinet_id: StringName ) var active_assignment: ScenarioAssignment func configure(assignment: ScenarioAssignment) -> void: if assignment == null: push_error("Cannot configure RoomRuntime with null assignment.") return active_assignment = assignment HardwareManager.configure(assignment.cabinet) print("") print("======= ROOM RUNTIME =======") print("Cabinet: ", assignment.cabinet.display_name) print("Game: ", assignment.game.display_name) print("Variant: ", assignment.variant) print("============================") print("") func fire_game_event(event_name: StringName) -> void: if active_assignment == null: push_error("RoomRuntime has no active assignment.") return print("") print( "[GAME EVENT] %s -> %s" % [ active_assignment.game.game_id, event_name ] ) game_event_fired.emit( event_name, active_assignment.cabinet.cabinet_id ) var actions := active_assignment.get_actions_for_event( event_name ) if actions.is_empty(): print("[SCENARIO] No hardware actions mapped.") return for action_id in actions: print( "[SCENARIO] %s -> %s" % [event_name, action_id] ) HardwareManager.trigger( action_id, { "game_event": event_name } )