Files
room_glitch/tests/test_room_logic_engine.gd
T

147 lines
1.8 KiB
GDScript

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
)