extends Node func _ready() -> void: var room := RoomDefinition.new() var immediate_rule := RoomLogicRule.new() immediate_rule.rule_id = ( &"win_turns_on_light" ) immediate_rule.source_id = ( &"Cabinet01" ) immediate_rule.event_id = ( &"game_won" ) immediate_rule.target_id = ( &"StartLight01" ) immediate_rule.action_id = ( &"turn_on" ) immediate_rule.delay_seconds = ( 0.0 ) var delayed_rule := RoomLogicRule.new() delayed_rule.rule_id = ( &"win_unlocks_drawer" ) delayed_rule.source_id = ( &"Cabinet01" ) delayed_rule.event_id = ( &"game_won" ) delayed_rule.target_id = ( &"DrawerLock01" ) delayed_rule.action_id = ( &"unlock" ) delayed_rule.delay_seconds = ( 2.0 ) room.logic_rules = [ immediate_rule, delayed_rule, ] var engine := RoomLogicEngine.new() engine.configure( room ) engine.event_received.connect( func( source_id: StringName, event_id: StringName ) -> void: print( "[LOGIC TEST] EVENT ", source_id, ".", event_id ) ) engine.rule_triggered.connect( func( rule_id: StringName, _source_id: StringName, _event_id: StringName, _target_id: StringName, _action_id: StringName ) -> void: print( "[LOGIC TEST] RULE ", rule_id ) ) engine.action_requested.connect( func( target_id: StringName, action_id: StringName, rule_id: StringName ) -> void: print( "[LOGIC TEST] ACTION ", target_id, ".", action_id, " from ", rule_id, " at ", engine.get_simulation_time() ) ) print( "--- FIRE GAME WON ---" ) engine.emit_event( &"Cabinet01", &"game_won" ) print( "--- ADVANCE 1 SECOND ---" ) engine.advance( 1.0 ) print( "--- ADVANCE 1 MORE SECOND ---" ) engine.advance( 1.0 )