From d2ef5ff6aa7b698eeaa474d4ea0f285e7e2049fd Mon Sep 17 00:00:00 2001 From: "Z. Cliffe Schreuders" Date: Fri, 21 Nov 2025 15:27:53 +0000 Subject: [PATCH] refactor: Convert scenarios to ERB templates - Move scenario JSON files to app/assets/scenarios/ - Rename to .erb extension (24 scenarios converted) - Keep .ink files in scenarios/ink/ for JIT compilation - Each scenario now in own directory - Add conversion script for future use --- .../biometric_breach/scenario.json.erb | 0 .../scenarios/ceo_exfil/scenario.json.erb | 0 .../scenarios/cybok_heist/scenario.json.erb | 0 .../scenario.json.erb | 0 .../npc-patrol-lockpick/scenario.json.erb | 0 .../npc-sprite-test2/scenario.json.erb | 0 .../scenarios/scenario1/scenario.json.erb | 0 .../scenarios/scenario2/scenario.json.erb | 0 .../scenarios/scenario3/scenario.json.erb | 0 .../scenarios/scenario4/scenario.json.erb | 0 .../test-multiroom-npc/scenario.json.erb | 0 .../test-npc-face-player/scenario.json.erb | 0 .../test-npc-patrol/scenario.json.erb | 0 .../test-npc-personal-space/scenario.json.erb | 0 .../test-npc-waypoints/scenario.json.erb | 0 .../test-rfid-multiprotocol/scenario.json.erb | 0 .../scenarios/test-rfid/scenario.json.erb | 0 .../scenario.json.erb | 0 .../test_horizontal_layout/scenario.json.erb | 0 .../test_mixed_room_sizes/scenario.json.erb | 0 .../scenario.json.erb | 0 .../test_vertical_layout/scenario.json.erb | 0 .../timed_messages_example/scenario.json.erb | 0 .../title-screen-demo/scenario.json.erb | 0 scripts/convert-scenarios.sh | 41 +++++++++++++++++++ 25 files changed, 41 insertions(+) rename scenarios/biometric_breach.json => app/assets/scenarios/biometric_breach/scenario.json.erb (100%) rename scenarios/ceo_exfil.json => app/assets/scenarios/ceo_exfil/scenario.json.erb (100%) rename scenarios/cybok_heist.json => app/assets/scenarios/cybok_heist/scenario.json.erb (100%) rename scenarios/npc-hub-demo-ghost-protocol.json => app/assets/scenarios/npc-hub-demo-ghost-protocol/scenario.json.erb (100%) rename scenarios/npc-patrol-lockpick.json => app/assets/scenarios/npc-patrol-lockpick/scenario.json.erb (100%) rename scenarios/npc-sprite-test2.json => app/assets/scenarios/npc-sprite-test2/scenario.json.erb (100%) rename scenarios/scenario1.json => app/assets/scenarios/scenario1/scenario.json.erb (100%) rename scenarios/scenario2.json => app/assets/scenarios/scenario2/scenario.json.erb (100%) rename scenarios/scenario3.json => app/assets/scenarios/scenario3/scenario.json.erb (100%) rename scenarios/scenario4.json => app/assets/scenarios/scenario4/scenario.json.erb (100%) rename scenarios/test-multiroom-npc.json => app/assets/scenarios/test-multiroom-npc/scenario.json.erb (100%) rename scenarios/test-npc-face-player.json => app/assets/scenarios/test-npc-face-player/scenario.json.erb (100%) rename scenarios/test-npc-patrol.json => app/assets/scenarios/test-npc-patrol/scenario.json.erb (100%) rename scenarios/test-npc-personal-space.json => app/assets/scenarios/test-npc-personal-space/scenario.json.erb (100%) rename scenarios/test-npc-waypoints.json => app/assets/scenarios/test-npc-waypoints/scenario.json.erb (100%) rename scenarios/test-rfid-multiprotocol.json => app/assets/scenarios/test-rfid-multiprotocol/scenario.json.erb (100%) rename scenarios/test-rfid.json => app/assets/scenarios/test-rfid/scenario.json.erb (100%) rename scenarios/test_complex_multidirection.json => app/assets/scenarios/test_complex_multidirection/scenario.json.erb (100%) rename scenarios/test_horizontal_layout.json => app/assets/scenarios/test_horizontal_layout/scenario.json.erb (100%) rename scenarios/test_mixed_room_sizes.json => app/assets/scenarios/test_mixed_room_sizes/scenario.json.erb (100%) rename scenarios/test_multiple_connections.json => app/assets/scenarios/test_multiple_connections/scenario.json.erb (100%) rename scenarios/test_vertical_layout.json => app/assets/scenarios/test_vertical_layout/scenario.json.erb (100%) rename scenarios/timed_messages_example.json => app/assets/scenarios/timed_messages_example/scenario.json.erb (100%) rename scenarios/title-screen-demo.json => app/assets/scenarios/title-screen-demo/scenario.json.erb (100%) create mode 100755 scripts/convert-scenarios.sh diff --git a/scenarios/biometric_breach.json b/app/assets/scenarios/biometric_breach/scenario.json.erb similarity index 100% rename from scenarios/biometric_breach.json rename to app/assets/scenarios/biometric_breach/scenario.json.erb diff --git a/scenarios/ceo_exfil.json b/app/assets/scenarios/ceo_exfil/scenario.json.erb similarity index 100% rename from scenarios/ceo_exfil.json rename to app/assets/scenarios/ceo_exfil/scenario.json.erb diff --git a/scenarios/cybok_heist.json b/app/assets/scenarios/cybok_heist/scenario.json.erb similarity index 100% rename from scenarios/cybok_heist.json rename to app/assets/scenarios/cybok_heist/scenario.json.erb diff --git a/scenarios/npc-hub-demo-ghost-protocol.json b/app/assets/scenarios/npc-hub-demo-ghost-protocol/scenario.json.erb similarity index 100% rename from scenarios/npc-hub-demo-ghost-protocol.json rename to app/assets/scenarios/npc-hub-demo-ghost-protocol/scenario.json.erb diff --git a/scenarios/npc-patrol-lockpick.json b/app/assets/scenarios/npc-patrol-lockpick/scenario.json.erb similarity index 100% rename from scenarios/npc-patrol-lockpick.json rename to app/assets/scenarios/npc-patrol-lockpick/scenario.json.erb diff --git a/scenarios/npc-sprite-test2.json b/app/assets/scenarios/npc-sprite-test2/scenario.json.erb similarity index 100% rename from scenarios/npc-sprite-test2.json rename to app/assets/scenarios/npc-sprite-test2/scenario.json.erb diff --git a/scenarios/scenario1.json b/app/assets/scenarios/scenario1/scenario.json.erb similarity index 100% rename from scenarios/scenario1.json rename to app/assets/scenarios/scenario1/scenario.json.erb diff --git a/scenarios/scenario2.json b/app/assets/scenarios/scenario2/scenario.json.erb similarity index 100% rename from scenarios/scenario2.json rename to app/assets/scenarios/scenario2/scenario.json.erb diff --git a/scenarios/scenario3.json b/app/assets/scenarios/scenario3/scenario.json.erb similarity index 100% rename from scenarios/scenario3.json rename to app/assets/scenarios/scenario3/scenario.json.erb diff --git a/scenarios/scenario4.json b/app/assets/scenarios/scenario4/scenario.json.erb similarity index 100% rename from scenarios/scenario4.json rename to app/assets/scenarios/scenario4/scenario.json.erb diff --git a/scenarios/test-multiroom-npc.json b/app/assets/scenarios/test-multiroom-npc/scenario.json.erb similarity index 100% rename from scenarios/test-multiroom-npc.json rename to app/assets/scenarios/test-multiroom-npc/scenario.json.erb diff --git a/scenarios/test-npc-face-player.json b/app/assets/scenarios/test-npc-face-player/scenario.json.erb similarity index 100% rename from scenarios/test-npc-face-player.json rename to app/assets/scenarios/test-npc-face-player/scenario.json.erb diff --git a/scenarios/test-npc-patrol.json b/app/assets/scenarios/test-npc-patrol/scenario.json.erb similarity index 100% rename from scenarios/test-npc-patrol.json rename to app/assets/scenarios/test-npc-patrol/scenario.json.erb diff --git a/scenarios/test-npc-personal-space.json b/app/assets/scenarios/test-npc-personal-space/scenario.json.erb similarity index 100% rename from scenarios/test-npc-personal-space.json rename to app/assets/scenarios/test-npc-personal-space/scenario.json.erb diff --git a/scenarios/test-npc-waypoints.json b/app/assets/scenarios/test-npc-waypoints/scenario.json.erb similarity index 100% rename from scenarios/test-npc-waypoints.json rename to app/assets/scenarios/test-npc-waypoints/scenario.json.erb diff --git a/scenarios/test-rfid-multiprotocol.json b/app/assets/scenarios/test-rfid-multiprotocol/scenario.json.erb similarity index 100% rename from scenarios/test-rfid-multiprotocol.json rename to app/assets/scenarios/test-rfid-multiprotocol/scenario.json.erb diff --git a/scenarios/test-rfid.json b/app/assets/scenarios/test-rfid/scenario.json.erb similarity index 100% rename from scenarios/test-rfid.json rename to app/assets/scenarios/test-rfid/scenario.json.erb diff --git a/scenarios/test_complex_multidirection.json b/app/assets/scenarios/test_complex_multidirection/scenario.json.erb similarity index 100% rename from scenarios/test_complex_multidirection.json rename to app/assets/scenarios/test_complex_multidirection/scenario.json.erb diff --git a/scenarios/test_horizontal_layout.json b/app/assets/scenarios/test_horizontal_layout/scenario.json.erb similarity index 100% rename from scenarios/test_horizontal_layout.json rename to app/assets/scenarios/test_horizontal_layout/scenario.json.erb diff --git a/scenarios/test_mixed_room_sizes.json b/app/assets/scenarios/test_mixed_room_sizes/scenario.json.erb similarity index 100% rename from scenarios/test_mixed_room_sizes.json rename to app/assets/scenarios/test_mixed_room_sizes/scenario.json.erb diff --git a/scenarios/test_multiple_connections.json b/app/assets/scenarios/test_multiple_connections/scenario.json.erb similarity index 100% rename from scenarios/test_multiple_connections.json rename to app/assets/scenarios/test_multiple_connections/scenario.json.erb diff --git a/scenarios/test_vertical_layout.json b/app/assets/scenarios/test_vertical_layout/scenario.json.erb similarity index 100% rename from scenarios/test_vertical_layout.json rename to app/assets/scenarios/test_vertical_layout/scenario.json.erb diff --git a/scenarios/timed_messages_example.json b/app/assets/scenarios/timed_messages_example/scenario.json.erb similarity index 100% rename from scenarios/timed_messages_example.json rename to app/assets/scenarios/timed_messages_example/scenario.json.erb diff --git a/scenarios/title-screen-demo.json b/app/assets/scenarios/title-screen-demo/scenario.json.erb similarity index 100% rename from scenarios/title-screen-demo.json rename to app/assets/scenarios/title-screen-demo/scenario.json.erb diff --git a/scripts/convert-scenarios.sh b/scripts/convert-scenarios.sh new file mode 100755 index 0000000..d5c34ad --- /dev/null +++ b/scripts/convert-scenarios.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Convert all scenario JSON files to ERB structure + +echo "Converting scenario files to ERB templates..." + +# Get all scenario JSON files +scenarios=$(ls scenarios/*.json 2>/dev/null | xargs -n1 basename | sed 's/\.json$//') + +# Process all scenarios +echo "" +echo "=== Processing Scenarios ===" +for scenario in $scenarios; do + if [ -f "scenarios/${scenario}.json" ]; then + echo "Processing: $scenario" + + # Create directory + mkdir -p "app/assets/scenarios/${scenario}" + + # Move and rename (just rename to .erb, don't modify content yet) + mv "scenarios/${scenario}.json" "app/assets/scenarios/${scenario}/scenario.json.erb" + + echo " ✓ Moved to app/assets/scenarios/${scenario}/scenario.json.erb" + else + echo " ⚠ File not found: scenarios/${scenario}.json (skipping)" + fi +done + +echo "" +echo "=== Summary ===" +echo "Converted files:" +find app/assets/scenarios -name "scenario.json.erb" | wc -l +echo "" +echo "Directory structure:" +ls -d app/assets/scenarios/*/ +echo "" +echo "✓ Conversion complete!" +echo "" +echo "IMPORTANT:" +echo "- Files have been renamed to .erb but content is still JSON" +echo "- ERB randomization (random_password, etc.) will be added in Phase 4" +echo "- For now, scenarios work as-is with static passwords"