# Lockpicking Minigame Refactoring - Project Index ## 🎯 Project Overview We are refactoring the **lockpicking minigame** (`js/minigames/lockpicking/lockpicking-game-phaser.js`) from a monolithic 4670-line class into a clean, modular architecture with 12 focused modules. ### Current State - **File Size:** 4,670 lines - **Class Count:** 1 (monolithic) - **Methods:** 50+ - **Maintainability:** Low - **Testability:** Low - **Reusability:** Low ### Target State - **File Sizes:** 100-1200 lines each - **Module Count:** 12 focused modules - **Methods:** 5-10 per module - **Maintainability:** High - **Testability:** High - **Reusability:** High --- ## 📚 Documentation Structure ### ⭐ NEW: PARENT_INSTANCE_PATTERN.md - THE KEY FEATURE! **Purpose:** Understand the parent instance pattern for state sharing **Contents:** - How the pattern works (with examples) - Why it's the safe approach - Complete generated module structure - Integration workflow (test → commit) - 11-phase complete refactoring plan **Read Time:** 20 minutes **Critical For:** Understanding how extracted modules access parent state **Next:** QUICKSTART_AUTO_INTEGRATION.md for hands-on use --- ### ⭐ NEW: QUICKSTART_AUTO_INTEGRATION.md - Execute This First! **Purpose:** One-command extraction with automatic main file integration **Contents:** - TL;DR: One command does everything - Phase 1 walkthrough (Lock Configuration) - How to verify extraction succeeded - All 11 phase commands (copy-paste ready) - Troubleshooting guide **Read Time:** 10 minutes **Action:** Run Phase 1 command and test **Next:** After first success, run Phase 2 --- ### 1. **QUICKSTART.md** ← Original Quick Start **Purpose:** Get started in 5 minutes **Contents:** - TL;DR quick reference - First extraction command (old method) - Common questions - Success criteria **Read Time:** 5 minutes **Note:** Consider using QUICKSTART_AUTO_INTEGRATION.md instead **Next:** Run Phase 1 extraction --- ### 2. **REFACTORING_SUMMARY.md** ← Read for Context **Purpose:** Executive overview of the entire project **Contents:** - What was created (3 deliverables) - Recommended extraction order (Phases 1-5) - Benefits of refactoring - Before/after metrics **Read Time:** 10 minutes **Next:** Choose your approach (learn vs. execute) ``` --- ### 3. **REFACTORING_PLAN.md** ← Deep Dive **Purpose:** Comprehensive technical analysis **Contents:** - Current architecture breakdown - 12 identified concerns (modules) - Dependency relationships - Phase grouping (low to high risk) - Testing strategy **Read Time:** 15 minutes **Next:** Understand module relationships --- ### 4. **IMPLEMENTATION_DETAILS.md** ← Important Read (NEW!) **Purpose:** How the refactoring actually works **Contents:** - Does the tool remove methods? (No, you must) - Does the new JS file get used? (Yes, but you must update calls) - How to handle shared state & dependencies - How to keep Phaser scene available - Complete workflow example - Implementation checklist - Common mistakes to avoid **Read Time:** 15 minutes **IMPORTANT:** Read this BEFORE you start extracting! **Next:** Understand the implementation requirements --- ### 5. **EXTRACTION_GUIDE.md** ← Implementation Manual **Purpose:** Step-by-step extraction instructions **Contents:** - Tool installation & setup - Basic usage examples - All 11 extraction phases (copy-paste commands) - Post-extraction workflow - Dependency handling - Troubleshooting guide **Read Time:** 20 minutes **Next:** Execute extractions one phase at a time --- ### 6. **MODULE_ARCHITECTURE.md** ← Visual Reference **Purpose:** Architecture diagrams and data flows **Contents:** - Current monolithic structure diagram - Proposed modular architecture - Module dependency graph - Phase timeline with risk levels - Data flow architecture - Integration points - Testing strategy per module - Rollback procedures **Read Time:** 15 minutes **Next:** Reference while implementing --- ### 7. **scripts/extract_lockpicking_methods.py** ← The Tool **Purpose:** Python utility to extract methods **Features:** - Exact code extraction (no modifications) - Method dependency detection - Class/object module generation - Flexible CLI interface - Full documentation **Usage:** `python3 scripts/extract_lockpicking_methods.py --help` **Next:** Use for each extraction phase --- ## 🚀 Quick Navigation ### I want to... **...understand the project in 30 seconds** → Read `QUICKSTART.md` (first section) **...see a diagram of the current/target architecture** → Read `MODULE_ARCHITECTURE.md` **...know why this refactoring matters** → Read `REFACTORING_SUMMARY.md` (benefits section) **...understand dependencies between modules** → Read `REFACTORING_PLAN.md` (dependency section) **...understand HOW the refactoring works (IMPORTANT!)** → Read `IMPLEMENTATION_DETAILS.md` ← **Must read before starting** **...extract the first module** → Run command in `QUICKSTART.md` **...extract all modules systematically** → Follow `EXTRACTION_GUIDE.md` (phases 1-11) **...understand what went wrong** → Check `EXTRACTION_GUIDE.md` (troubleshooting) **...rollback an extraction** → See `MODULE_ARCHITECTURE.md` (rollback strategy) --- ## 📋 Reading Paths ### Path 1: Executive (15 min) 1. `QUICKSTART.md` - Overview 2. `REFACTORING_SUMMARY.md` - Why it matters 3. Run Phase 1 extraction 4. `EXTRACTION_GUIDE.md` - Continue phases **Best for:** Managers, architects, quick start --- ### Path 2: Technical Deep Dive (60 min) 1. `QUICKSTART.md` - Overview 2. `REFACTORING_PLAN.md` - Architecture 3. `MODULE_ARCHITECTURE.md` - Diagrams 4. `EXTRACTION_GUIDE.md` - Implementation 5. Run all phases systematically **Best for:** Developers, technical leads, full understanding --- ### Path 3: Hands-On (30 min) 1. `QUICKSTART.md` - Get context 2. `EXTRACTION_GUIDE.md` - Section "Phase 1" 3. Run extraction command 4. Test game 5. Repeat phases 2-5 with testing **Best for:** Implementers, pragmatists, action-oriented --- ## 🔧 Tool Usage Quick Reference ### Extract Methods ```bash cd /home/cliffe/Files/Projects/Code/BreakEscape/BreakEscape python3 scripts/extract_lockpicking_methods.py \ --methods "method1,method2,method3" \ --output-file "js/minigames/lockpicking/module.js" ``` ### Show Help ```bash python3 scripts/extract_lockpicking_methods.py --help ``` ### See Dependencies ```bash python3 scripts/extract_lockpicking_methods.py \ --methods "method1,method2" \ --output-file "test.js" \ --show-dependencies ``` ### Full Example (Phase 1) ```bash python3 scripts/extract_lockpicking_methods.py \ --methods "saveLockConfiguration,loadLockConfiguration,clearLockConfiguration,getLockPinConfiguration,clearAllLockConfigurations,resetPinsToOriginalPositions" \ --output-file "js/minigames/lockpicking/lock-configuration.js" \ --object-mode \ --show-dependencies ``` --- ## 📊 Project Phases Overview | Phase | Module | LOC | Methods | Risk | Status | |-------|--------|-----|---------|------|--------| | 1 | Lock Configuration | 100 | 6 | Low | 🔵 Ready | | 2 | Lock Graphics | 200 | 3 | Low | 🔵 Ready | | 3 | Key Data Generator | 400 | 8 | Low | 🔵 Ready | | 4 | Pin System | 900 | 10 | Medium | 🔵 Ready | | 5 | Key Rendering | 1200 | 10 | Medium | 🔵 Ready | | 6 | Key Selection UI | 300 | 7 | High | 🔵 Ready | | 7 | Input Handlers | 200 | 5 | High | 🔵 Ready | | 8 | Completion | 150 | 3 | High | 🔵 Ready | | 9 | UI Elements | 400 | 6 | High | 🔵 Ready | | 10 | Mode Switching | 150 | 4 | High | 🔵 Ready | | 11 | Utilities | 300 | 8 | Medium | 🔵 Ready | | - | **TOTAL** | **5800** | **70** | - | 🔵 Ready | **Legend:** 🔵 Ready to extract | 🟢 Completed | 🟡 In progress | 🔴 Blocked --- ## ✅ Checklist for Success ### Before You Start - [ ] Read `QUICKSTART.md` - [ ] Verify Python 3 installed: `python3 --version` - [ ] Git repository is clean: `git status` - [ ] Game runs currently: `python3 -m http.server 8000` ### Phase 1 (Lock Configuration) - [ ] Run extraction command - [ ] Review generated `lock-configuration.js` - [ ] Update imports in main class - [ ] Test game loads - [ ] Test lock state persists - [ ] Commit to git ### Phases 2-5 (Core Modules) - [ ] Extract module - [ ] Update main class - [ ] Test functionality - [ ] Commit changes - [ ] Repeat for next phase ### Phases 6-11 (UI & Utilities) - [ ] Extract module - [ ] Test full feature set - [ ] Commit changes - [ ] Continue systematic extraction ### Final Verification - [ ] All 12 modules extracted - [ ] Main class down to ~1500 LOC - [ ] Game plays from start to finish - [ ] All features identical to original - [ ] Code is well-organized --- ## 🎓 Learning Resources ### Understanding the Tool ```bash # View tool source code cat scripts/extract_lockpicking_methods.py # Test tool on a subset python3 scripts/extract_lockpicking_methods.py \ --methods "shuffleArray" \ --output-file "test.js" \ --show-dependencies ``` ### Understanding the Architecture 1. Open `lockpicking-game-phaser.js` 2. Find method: `createPins()` 3. Note dependencies it calls 4. Compare with Pin System module extraction plan 5. See how methods group logically ### Understanding the Game Flow 1. Open `scenario_select.html` 2. Launch a lockpicking scenario 3. Observe: Load → Init → Create Graphics → Ready for input 4. Compare with `EXTRACTION_GUIDE.md` workflow diagram --- ## 🐛 Troubleshooting Guide ### "Module not found" Error ``` Error in browser console: "Cannot find module './lock-configuration.js'" ``` **Solution:** Verify file was created and path is correct in import statement ### "Game breaks after extraction" ``` ReferenceError: createPins is not defined ``` **Solution:** You removed the method but didn't update the call. Either re-add the method or update the call to use the module. ### "Extraction tool says method not found" ``` ❌ Method 'createLockBackground' not found ``` **Solution:** Check spelling (case-sensitive) and method exists in source file ### "Don't understand dependencies warning" ``` ⚠️ Dependencies: updatePinVisuals, this.scene.add.graphics() ``` **Solution:** This is informational. You don't need to do anything. The tool just tells you what the extracted methods call. ### "Want to undo an extraction" ```bash # Option 1: Delete the file rm js/minigames/lockpicking/lock-configuration.js # Option 2: Revert all changes git checkout -- . ``` --- ## 📞 Support Matrix | Question | Resource | |----------|----------| | Where do I start? | `QUICKSTART.md` | | Why refactor? | `REFACTORING_SUMMARY.md` → Benefits | | How do modules relate? | `MODULE_ARCHITECTURE.md` | | What's Phase 1? | `EXTRACTION_GUIDE.md` → Phase 1 section | | How to use tool? | `scripts/extract_lockpicking_methods.py --help` | | What are dependencies? | `REFACTORING_PLAN.md` → Dependency section | | Something broke | `EXTRACTION_GUIDE.md` → Troubleshooting | | Want to rollback | `MODULE_ARCHITECTURE.md` → Rollback Strategy | | Need visual diagram | `MODULE_ARCHITECTURE.md` | --- ## 🚀 Ready to Start? ### Step 1: Read Start with `QUICKSTART.md` (5 minutes) ### Step 2: Execute Run the Phase 1 extraction command (2 minutes) ### Step 3: Test Start server and verify game works (2 minutes) ### Step 4: Continue Follow `EXTRACTION_GUIDE.md` for phases 2-11 --- ## 📈 Success Metrics ### After Phase 1 ✓ Lock configuration extracted ✓ Game still loads ✓ No console errors ✓ Data persistence works ### After Phases 2-5 (Major Milestone) ✓ 5 core modules extracted ✓ Game fully playable ✓ All interactions working ✓ Main class ~2500 LOC ### After All 11 Phases ✓ 12 focused modules ✓ Main class ~1500 LOC ✓ Game identical to original ✓ Code highly maintainable ✓ Easy to test and extend --- ## 📝 Documentation Changelog | Version | Date | Changes | |---------|------|---------| | 1.0 | 2025-10-27 | Initial documentation suite | | - | - | QUICKSTART, REFACTORING_SUMMARY, REFACTORING_PLAN, EXTRACTION_GUIDE, MODULE_ARCHITECTURE, this INDEX | --- ## 🎯 Bottom Line **You have everything you need to refactor the lockpicking minigame from a 4670-line monolith into 12 clean, focused modules.** All pre-built commands are ready to copy-paste. Full documentation guides you through each step. The Python tool handles the heavy lifting. You just need to: 1. Extract methods using the tool 2. Update imports in the main class 3. Test the game 4. Commit your changes 5. Repeat **Estimated time:** 1-2 weeks of development with testing **Difficulty:** Medium (high reward, manageable risk) **Starting point:** `QUICKSTART.md` --- **Happy refactoring! 🚀**