Added Glitch Room Source code to Gitty
This commit is contained in:
commit
1ac9eb5644
505 files changed
+28504
No files matched your search
@@ -0,0 +1,102 @@
|
||||
class_name SimulatedHardwareBackend
|
||||
extends RefCounted
|
||||
|
||||
|
||||
signal pin_state_changed(
|
||||
cabinet_id: StringName,
|
||||
gpio_pin: int,
|
||||
active: bool,
|
||||
action_id: StringName,
|
||||
context: Dictionary
|
||||
)
|
||||
|
||||
signal trace_entry_created(
|
||||
entry: Dictionary
|
||||
)
|
||||
|
||||
|
||||
var pin_states: Dictionary = {}
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
|
||||
pin_states.clear()
|
||||
|
||||
|
||||
func activate_action(
|
||||
cabinet_id: StringName,
|
||||
action: HardwareAction,
|
||||
context: Dictionary
|
||||
) -> void:
|
||||
|
||||
if action == null:
|
||||
return
|
||||
|
||||
var gpio_active := action.active_high
|
||||
|
||||
_set_pin_state(
|
||||
cabinet_id,
|
||||
action,
|
||||
gpio_active,
|
||||
true,
|
||||
context
|
||||
)
|
||||
|
||||
|
||||
func deactivate_action(
|
||||
cabinet_id: StringName,
|
||||
action: HardwareAction,
|
||||
context: Dictionary
|
||||
) -> void:
|
||||
|
||||
if action == null:
|
||||
return
|
||||
|
||||
var gpio_active := not action.active_high
|
||||
|
||||
_set_pin_state(
|
||||
cabinet_id,
|
||||
action,
|
||||
gpio_active,
|
||||
false,
|
||||
context
|
||||
)
|
||||
|
||||
|
||||
func _set_pin_state(
|
||||
cabinet_id: StringName,
|
||||
action: HardwareAction,
|
||||
electrical_state: bool,
|
||||
logical_active: bool,
|
||||
context: Dictionary
|
||||
) -> void:
|
||||
|
||||
var key := "%s::%d" % [
|
||||
cabinet_id,
|
||||
action.gpio_pin
|
||||
]
|
||||
|
||||
pin_states[key] = electrical_state
|
||||
|
||||
var entry := {
|
||||
"type": &"gpio",
|
||||
"cabinet_id": cabinet_id,
|
||||
"action_id": action.action_id,
|
||||
"gpio_pin": action.gpio_pin,
|
||||
"electrical_state": electrical_state,
|
||||
"logical_active": logical_active,
|
||||
"active_high": action.active_high,
|
||||
"context": context.duplicate(),
|
||||
}
|
||||
|
||||
trace_entry_created.emit(
|
||||
entry
|
||||
)
|
||||
|
||||
pin_state_changed.emit(
|
||||
cabinet_id,
|
||||
action.gpio_pin,
|
||||
logical_active,
|
||||
action.action_id,
|
||||
context
|
||||
)
|
||||
Reference in new issue
Block a user