147 lines
1.8 KiB
GDScript
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
|
|
)
|