70 lines
1.3 KiB
GDScript
70 lines
1.3 KiB
GDScript
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
|
|
}
|
|
)
|