diff --git a/README.md b/README.md index 7b45fb1..05c1b1e 100644 --- a/README.md +++ b/README.md @@ -79,15 +79,16 @@ The local development server runs on `http://localhost:5173` by default. Vite wi | Path | Description | |------------------------------|------------------------------------------------------------| | `index.html` | HTML entry point | -| `public/assets` | Static assets (images) served at runtime | -| `public/style.css` | Global layout styles and CSS variables | +| `public/assets` | Static assets + pixel-art authoring source (JSX canvas) | | `src/main.js` | Application bootstrap | | `src/App.svelte` | Scene router | | `src/scenes/` | Game scenes (MainMenu, Game, Guide, Settings, etc.) | | `src/components/` | Reusable UI components (GameBoard, PlayerSprite, etc.) | | `src/lib/game/` | Pure JS game engine (grid, player, guards, turns, history) | +| `src/lib/pixel/` | Pixel-art renderer + palette + sprite/tile/UI/scene art | | `src/lib/levels/` | Level definitions (12 levels) | | `src/lib/` | Audio, localization, progress persistence | +| `src/styles/theme.css` | Global layout styles and CSS variables | ## Game Architecture diff --git a/docs/code-standards.md b/docs/code-standards.md index f5b02c6..caefcd1 100644 --- a/docs/code-standards.md +++ b/docs/code-standards.md @@ -40,24 +40,34 @@ src/ │ ├── components/ # Reusable UI components │ ├── Button.svelte -│ ├── GameBoard.svelte # CSS grid rendering -│ ├── GameHud.svelte # Level/lives/turns display -│ ├── PlayerSprite.svelte # Positioned player div -│ ├── GuardSprite.svelte # Colored guard circle/diamond +│ ├── GameBoard.svelte # Grid of pixel tiles +│ ├── GameHud.svelte # Pixel hearts + pixel icons + level/turns +│ ├── PlayerSprite.svelte # Pixel rabbit +│ ├── GuardSprite.svelte # Pixel veggie dispatched by guard.type │ ├── PauseMenu.svelte -│ └── DetectionPopup.svelte +│ ├── DetectionPopup.svelte +│ ├── LevelCompletePopup.svelte +│ └── ControlsOverlay.svelte │ ├── lib/ │ ├── game/ # Pure JS game engine (no framework) │ │ ├── grid-system.js │ │ ├── player.js -│ │ ├── guards.js # Base + 6 guard subclasses (including ChaserGuard) -│ │ ├── turn-manager.js +│ │ ├── guards.js # Base + 6 guard subclasses; capture()/apply() contract +│ │ ├── turn-manager.js # Uses guard.capture()/apply() for non-destructive preview │ │ ├── level-manager.js # GUARD_REGISTRY factory pattern │ │ ├── game-history.js # Undo/redo system -│ │ ├── princess-mechanic.js # Level 12 escalating detection +│ │ ├── princess-mechanic.js # Level 12 escalating detection; capture()/apply() │ │ └── touch-controls.js # Mobile swipe support │ │ +│ ├── pixel/ # Pixel-art rendering pipeline +│ │ ├── Pixel.svelte # String-art + palette → SVG rects +│ │ ├── palette.js # NNTV color constants +│ │ ├── art-characters.js # Rabbit, princess, 6 veggie guards +│ │ ├── art-tiles.js # 16×16 board tiles +│ │ ├── art-ui.js # Hearts, moon, logo, icons +│ │ └── art-scenes.js # 80×N act backdrops + sceneForLevel(n) +│ │ │ ├── levels/ │ │ └── levels.js # 12 level definitions │ │ @@ -166,6 +176,8 @@ All visual constants centralized in `src/styles/theme.css` as CSS variables: Component-scoped `