Expand Glitch operations hub, cabinet authoring, deployment, and RFID support

Operator hub
- Introduce Escape Gallery branding and Glitch: the Dark Machine room views
- Add cabinet illustrations, Pac-Man marquee/gameplay artwork, and waiting states
- Add device feedback panels with RFID readings, input/output states, and stale status
- Add logged operator hardware interventions with request deduplication

Room and cabinet authoring
- Add a visual custom-PCB connection editor with per-cabinet device inventory
- Support device IDs, bindings, wiring notes, input polarity, and validation
- Add physical-room label/dimension toggles and editable doorway annotations
- Preserve doorway changes through undo, save, and revert
- Expand cabinet profiles, room layout, and Glitch scenario resources

Scenarios and gameplay
- Add per-assignment game configuration and runtime feature validation
- Add timed test wins and Frogger individual-home objectives
- Add the three-cabinet timed/score/Frogger test scenario
- Add Cabinet 1 Pac-Man RFID credits, credit sound, and CREDIT 0/1 display
- Require physical Start after an accepted scan and prevent duplicate credits

Pi hardware and deployment
- Add GPIO feedback sampling and a separate multiplexed RFID helper
- Validate reader pin ownership and input/output conflicts
- Add SSH cabinet startup and Pi desktop-session service support
- Add master packaging, site setup, SSH enrollment, and staged cabinet releases
- Verify deployment manifests and support explicit activation/status/log commands

Documentation and verification
- Consolidate the root README around the current architecture and setup workflow
- Add the complete master/Pi/RFID export and deployment walkthrough
- Document network isolation, credentials, card identification, and rollback
- Add PCB, room-editor, feedback, credit, deployment, and controller tests
- Isolate protocol tests from designer-edited cabinet configurations

Known limitations
- RFID helper compilation and physical Pi commissioning remain unverified
- Fleet provisioning does not yet configure RFID-only installations completely
- Broader Pac-Man tests retain a ghost-capture assertion failure
- Staged exports must be rebuilt and checked before deploying runtime 2.3
This commit is contained in:
Jeff Luke committed 2026-10-17 14:53:54 -07:00
1 parent 705ec31e0b
commit c1b2195834
90 files changed
+4969 -456

No files matched your search

+5 -2
View File
@@ -10,6 +10,8 @@ const DEATH_ANIMATION_SECONDS := 1.55
const DEATH_POP_SECONDS := 0.24
var model
var debug_grid := false
var credit_required := false
var credits := 0
func _ready() -> void:
texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
@@ -50,12 +52,13 @@ func _draw() -> void:
_text("HIGH SCORE", Vector2(80, 0))
_text(str(model.score).pad_zeros(2), Vector2(8, 8))
_text(str(model.high_score).pad_zeros(2), Vector2(88, 8))
if credit_required: _text("CREDIT %d" % credits, Vector2(120, 280))
for i in range(mini(model.lives - 1, 5)):
_sprite(Rect2(600, 16, 16, 16), Vector2(16 + i * 16, 280))
_text("L%d" % model.level, Vector2(192, 276), Color("ffb852"))
if not credit_required: _text("L%d" % model.level, Vector2(192, 276), Color("ffb852"))
match model.state:
"idle":
_banner("PRESS START", Color.YELLOW)
_banner("SCAN CARD" if credit_required and credits == 0 else "PRESS START", Color.YELLOW)
_text("ARROWS TO MOVE", Vector2(56, 256))
"ready":
_banner("READY!", Color.YELLOW)