diff --git a/assets/theme-v2/css/gamefoundrystudio.css b/assets/theme-v2/css/gamefoundrystudio.css index 3f915bf6a..5886f125e 100644 --- a/assets/theme-v2/css/gamefoundrystudio.css +++ b/assets/theme-v2/css/gamefoundrystudio.css @@ -1153,6 +1153,48 @@ body.tool-focus-mode .tool-column:last-of-type { grid-row: 1 / span 2 } +.sprite-canvas-shell { + display: flex; + justify-content: center; + padding: 16px; + border: 1px solid var(--line); + border-radius: var(--radius-md); + background: var(--panel-soft) +} + +.sprite-canvas-grid { + --sprite-grid-size: 16; + display: grid; + grid-template-columns: repeat(var(--sprite-grid-size), minmax(0, 1fr)); + width: min(100%, 520px); + aspect-ratio: 1; + border: 1px solid var(--line); + background: var(--panel) +} + +.sprite-canvas-grid[data-sprites-grid-size="16"] { + --sprite-grid-size: 16 +} + +.sprite-canvas-grid[data-sprites-grid-size="32"] { + --sprite-grid-size: 32 +} + +.sprite-canvas-cell { + min-width: 0; + min-height: 0; + padding: 0; + border: 0; + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); + background: var(--card-background); + cursor: default +} + +.sprite-canvas-cell:disabled { + opacity: 1 +} + @media(max-width:980px) { .grid.cols-4, diff --git a/assets/toolbox/sprites/js/index.js b/assets/toolbox/sprites/js/index.js new file mode 100644 index 000000000..22ef6dc6f --- /dev/null +++ b/assets/toolbox/sprites/js/index.js @@ -0,0 +1,59 @@ +const DEFAULT_GRID_SIZE = 16; +const SUPPORTED_GRID_SIZES = Object.freeze([16, 32]); + +function gridLabel(size) { + return `Sprite Creator ${size} by ${size} pixel canvas`; +} + +function buttonForSize(size) { + return document.querySelector(`[data-sprites-grid-size="${size}"]`); +} + +function setGridSize(size) { + const grid = document.querySelector("[data-sprites-pixel-grid]"); + const status = document.querySelector("[data-sprites-grid-status]"); + if (!grid || !SUPPORTED_GRID_SIZES.includes(size)) { + return; + } + + grid.replaceChildren(); + grid.dataset.spritesGridSize = String(size); + grid.setAttribute("aria-label", gridLabel(size)); + + for (let index = 0; index < size * size; index += 1) { + const row = Math.floor(index / size) + 1; + const column = (index % size) + 1; + const cell = document.createElement("button"); + cell.className = "sprite-canvas-cell"; + cell.type = "button"; + cell.disabled = true; + cell.setAttribute("role", "gridcell"); + cell.setAttribute("aria-label", `Pixel row ${row}, column ${column}`); + cell.dataset.spritePixelRow = String(row); + cell.dataset.spritePixelColumn = String(column); + grid.append(cell); + } + + document.querySelectorAll("[data-sprites-grid-size]").forEach((button) => { + const isActive = button.dataset.spritesGridSize === String(size); + button.classList.toggle("primary", isActive); + button.setAttribute("aria-pressed", String(isActive)); + }); + + if (status) { + status.textContent = `Canvas display mode: ${size}x${size}. No pixel data is saved.`; + } +} + +function wireGridControls() { + SUPPORTED_GRID_SIZES.forEach((size) => { + const button = buttonForSize(size); + if (!button) { + return; + } + button.addEventListener("click", () => setGridSize(size)); + }); +} + +wireGridControls(); +setGridSize(DEFAULT_GRID_SIZE); diff --git a/dev/tests/playwright/tools/SpritesToolShell.spec.mjs b/dev/tests/playwright/tools/SpritesToolShell.spec.mjs index b2c3d9922..3b7805669 100644 --- a/dev/tests/playwright/tools/SpritesToolShell.spec.mjs +++ b/dev/tests/playwright/tools/SpritesToolShell.spec.mjs @@ -233,6 +233,13 @@ test("Sprite Creator shell loads with visible tool, canvas, details, and status } await expect(page.locator("main")).toContainText("Toolbar placeholders only"); await expect(page.locator("[data-sprites-pixel-grid]")).toBeVisible(); + await expect(page.locator("[data-sprites-pixel-grid] [role='gridcell']")).toHaveCount(256); + await expect(page.locator("[data-sprites-grid-status]")).toContainText("Canvas display mode: 16x16"); + await page.getByRole("button", { name: "32x32" }).click(); + await expect(page.locator("[data-sprites-pixel-grid]")).toHaveAttribute("aria-label", "Sprite Creator 32 by 32 pixel canvas"); + await expect(page.locator("[data-sprites-pixel-grid] [role='gridcell']")).toHaveCount(1024); + await expect(page.locator("[data-sprites-grid-status]")).toContainText("Canvas display mode: 32x32"); + await expect(page.getByRole("button", { name: "32x32" })).toHaveAttribute("aria-pressed", "true"); await expect(page.locator("[data-sprites-shell-status]")).toContainText("Shell ready"); await expect(page.locator("main")).toContainText("Palette/Colors keys only"); await expect(page.locator("main")).not.toContainText(/Not implemented yet|future rebuild work|Static wireframe only|Plan sprite creation/i); diff --git a/docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md b/docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md new file mode 100644 index 000000000..4d7d89ce7 --- /dev/null +++ b/docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md @@ -0,0 +1,62 @@ +# PR_26179_CHARLIE_024-sprites-canvas-grid + +Team: CHARLIE +Workflow: stacked feature workflow +Base branch: PR_26179_CHARLIE_023-sprites-toolbar-placeholders +Canonical ZIP path: dev/workspace/zip/PR_26179_CHARLIE_024-sprites-canvas-grid_delta.zip + +## Summary + +Added a visible Sprite Creator pixel canvas grid with 16x16 and 32x32 display modes. The grid is rendered by external JavaScript and styled through Theme V2 CSS. This PR adds display behavior only; no persistence, drawing, API, DB, schema, or authoritative browser product data was added. + +## Branch Validation + +PASS + +- Current branch: PR_26179_CHARLIE_024-sprites-canvas-grid +- Based on: PR_26179_CHARLIE_023-sprites-toolbar-placeholders +- No start_of_day files changed +- No DB/API/schema files changed +- No stale PR #219-#228 code copied + +## Requirement Checklist + +| Requirement | Status | Notes | +| --- | --- | --- | +| Add visible pixel canvas grid | PASS | Grid renders on page load. | +| Support 16x16 display mode | PASS | Default grid has 256 cells. | +| Support 32x32 display mode | PASS | Toggle renders 1024 cells. | +| No persistence | PASS | No storage/API/database writes. | +| No drawing behavior | PASS | Pixel cells are disabled display cells. | +| Theme V2 compliant | PASS | CSS added to shared Theme V2 stylesheet; no inline styles. | +| No DB/API/schema changes | PASS | Only shell, CSS, JS, test, reports changed. | + +## Validation Lane Report + +Commands: + +```text +node --check assets/toolbox/sprites/js/index.js +node --check dev/tests/playwright/tools/SpritesToolShell.spec.mjs +git diff --check -- toolbox/sprites/index.html assets/toolbox/sprites/js/index.js assets/theme-v2/css/gamefoundrystudio.css dev/tests/playwright/tools/SpritesToolShell.spec.mjs +rg --pcre2 -n -i "]+src=)|on(click|change|submit|input|load|error)=|imageDataUrl|local-mem|fake-login|MEM DB" toolbox/sprites/index.html assets/toolbox/sprites/js/index.js dev/tests/playwright/tools/SpritesToolShell.spec.mjs +npx playwright test dev/tests/playwright/tools/SpritesToolShell.spec.mjs --workers=1 --reporter=list --output= +``` + +Results: + +- Node syntax checks: PASS +- `git diff --check`: PASS +- Guard scan: PASS, no matches +- Targeted Playwright: PASS, 1 test passed + +## Manual Validation Notes + +1. Open `/toolbox/sprites/index.html` from the stacked branch. +2. Confirm the Pixel Grid renders in 16x16 mode by default. +3. Click 32x32 and confirm the grid updates and the status text changes. +4. Confirm no pixel drawing or save/load behavior exists yet. + +## ZIP Path + +`dev/workspace/zip/PR_26179_CHARLIE_024-sprites-canvas-grid_delta.zip` diff --git a/docs_build/dev/reports/codex_changed_files.txt b/docs_build/dev/reports/codex_changed_files.txt index 3947ffbc8..01ac40869 100644 --- a/docs_build/dev/reports/codex_changed_files.txt +++ b/docs_build/dev/reports/codex_changed_files.txt @@ -1,5 +1,7 @@ toolbox/sprites/index.html +assets/toolbox/sprites/js/index.js +assets/theme-v2/css/gamefoundrystudio.css dev/tests/playwright/tools/SpritesToolShell.spec.mjs -docs_build/dev/reports/PR_26179_CHARLIE_023-sprites-toolbar-placeholders.md +docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md docs_build/dev/reports/codex_changed_files.txt docs_build/dev/reports/codex_review.diff diff --git a/docs_build/dev/reports/codex_review.diff b/docs_build/dev/reports/codex_review.diff index dbe3b74aa..88ab1cceb 100644 --- a/docs_build/dev/reports/codex_review.diff +++ b/docs_build/dev/reports/codex_review.diff @@ -1,63 +1,162 @@ -diff --git a/dev/tests/playwright/tools/SpritesToolShell.spec.mjs b/dev/tests/playwright/tools/SpritesToolShell.spec.mjs -index 9187fe485..b2c3d9922 100644 ---- a/dev/tests/playwright/tools/SpritesToolShell.spec.mjs -+++ b/dev/tests/playwright/tools/SpritesToolShell.spec.mjs -@@ -9,6 +9,17 @@ import { getToolRegistrySnapshot } from "../../../../toolbox/toolRegistry.js"; - const __filename = fileURLToPath(import.meta.url); - const __dirname = path.dirname(__filename); - const repoRoot = path.resolve(__dirname, "..", "..", "..", ".."); -+const SPRITE_TOOLBAR_PLACEHOLDERS = [ -+ "Pencil", -+ "Eraser", -+ "Fill", -+ "Line", -+ "Rectangle", -+ "Circle", -+ "Picker", -+ "Move", -+ "Zoom", -+]; +diff --git a/assets/theme-v2/css/gamefoundrystudio.css b/assets/theme-v2/css/gamefoundrystudio.css +index 3f915bf6a..5886f125e 100644 +--- a/assets/theme-v2/css/gamefoundrystudio.css ++++ b/assets/theme-v2/css/gamefoundrystudio.css +@@ -1153,6 +1153,48 @@ body.tool-focus-mode .tool-column:last-of-type { + grid-row: 1 / span 2 + } + ++.sprite-canvas-shell { ++ display: flex; ++ justify-content: center; ++ padding: 16px; ++ border: 1px solid var(--line); ++ border-radius: var(--radius-md); ++ background: var(--panel-soft) ++} ++ ++.sprite-canvas-grid { ++ --sprite-grid-size: 16; ++ display: grid; ++ grid-template-columns: repeat(var(--sprite-grid-size), minmax(0, 1fr)); ++ width: min(100%, 520px); ++ aspect-ratio: 1; ++ border: 1px solid var(--line); ++ background: var(--panel) ++} ++ ++.sprite-canvas-grid[data-sprites-grid-size="16"] { ++ --sprite-grid-size: 16 ++} ++ ++.sprite-canvas-grid[data-sprites-grid-size="32"] { ++ --sprite-grid-size: 32 ++} ++ ++.sprite-canvas-cell { ++ min-width: 0; ++ min-height: 0; ++ padding: 0; ++ border: 0; ++ border-right: 1px solid var(--line); ++ border-bottom: 1px solid var(--line); ++ background: var(--card-background); ++ cursor: default ++} ++ ++.sprite-canvas-cell:disabled { ++ opacity: 1 ++} ++ + @media(max-width:980px) { - function contentTypeForPath(filePath) { - const extension = path.extname(filePath).toLowerCase(); -@@ -216,9 +227,11 @@ test("Sprite Creator shell loads with visible tool, canvas, details, and status - await expect(page.getByText("Canvas Setup")).toBeVisible(); - await expect(page.getByRole("heading", { level: 2, name: "Pixel Work Area" })).toBeVisible(); - await expect(page.getByRole("heading", { level: 2, name: "Sprite Details" })).toBeVisible(); -- await expect(page.getByRole("button", { name: "Pencil" })).toBeDisabled(); -- await expect(page.getByRole("button", { name: "Eraser" })).toBeDisabled(); -- await expect(page.getByRole("button", { name: "Fill" })).toBeDisabled(); -+ await expect(page.locator("[data-sprites-toolbar]")).toBeVisible(); -+ for (const toolName of SPRITE_TOOLBAR_PLACEHOLDERS) { -+ await expect(page.getByRole("button", { name: `${toolName} tool placeholder` })).toBeDisabled(); + .grid.cols-4, +diff --git a/assets/toolbox/sprites/js/index.js b/assets/toolbox/sprites/js/index.js +new file mode 100644 +index 000000000..22ef6dc6f +--- /dev/null ++++ b/assets/toolbox/sprites/js/index.js +@@ -0,0 +1,59 @@ ++const DEFAULT_GRID_SIZE = 16; ++const SUPPORTED_GRID_SIZES = Object.freeze([16, 32]); ++ ++function gridLabel(size) { ++ return `Sprite Creator ${size} by ${size} pixel canvas`; ++} ++ ++function buttonForSize(size) { ++ return document.querySelector(`[data-sprites-grid-size="${size}"]`); ++} ++ ++function setGridSize(size) { ++ const grid = document.querySelector("[data-sprites-pixel-grid]"); ++ const status = document.querySelector("[data-sprites-grid-status]"); ++ if (!grid || !SUPPORTED_GRID_SIZES.includes(size)) { ++ return; ++ } ++ ++ grid.replaceChildren(); ++ grid.dataset.spritesGridSize = String(size); ++ grid.setAttribute("aria-label", gridLabel(size)); ++ ++ for (let index = 0; index < size * size; index += 1) { ++ const row = Math.floor(index / size) + 1; ++ const column = (index % size) + 1; ++ const cell = document.createElement("button"); ++ cell.className = "sprite-canvas-cell"; ++ cell.type = "button"; ++ cell.disabled = true; ++ cell.setAttribute("role", "gridcell"); ++ cell.setAttribute("aria-label", `Pixel row ${row}, column ${column}`); ++ cell.dataset.spritePixelRow = String(row); ++ cell.dataset.spritePixelColumn = String(column); ++ grid.append(cell); ++ } ++ ++ document.querySelectorAll("[data-sprites-grid-size]").forEach((button) => { ++ const isActive = button.dataset.spritesGridSize === String(size); ++ button.classList.toggle("primary", isActive); ++ button.setAttribute("aria-pressed", String(isActive)); ++ }); ++ ++ if (status) { ++ status.textContent = `Canvas display mode: ${size}x${size}. No pixel data is saved.`; ++ } ++} ++ ++function wireGridControls() { ++ SUPPORTED_GRID_SIZES.forEach((size) => { ++ const button = buttonForSize(size); ++ if (!button) { ++ return; + } -+ await expect(page.locator("main")).toContainText("Toolbar placeholders only"); ++ button.addEventListener("click", () => setGridSize(size)); ++ }); ++} ++ ++wireGridControls(); ++setGridSize(DEFAULT_GRID_SIZE); +diff --git a/dev/tests/playwright/tools/SpritesToolShell.spec.mjs b/dev/tests/playwright/tools/SpritesToolShell.spec.mjs +index b2c3d9922..3b7805669 100644 +--- a/dev/tests/playwright/tools/SpritesToolShell.spec.mjs ++++ b/dev/tests/playwright/tools/SpritesToolShell.spec.mjs +@@ -233,6 +233,13 @@ test("Sprite Creator shell loads with visible tool, canvas, details, and status + } + await expect(page.locator("main")).toContainText("Toolbar placeholders only"); await expect(page.locator("[data-sprites-pixel-grid]")).toBeVisible(); ++ await expect(page.locator("[data-sprites-pixel-grid] [role='gridcell']")).toHaveCount(256); ++ await expect(page.locator("[data-sprites-grid-status]")).toContainText("Canvas display mode: 16x16"); ++ await page.getByRole("button", { name: "32x32" }).click(); ++ await expect(page.locator("[data-sprites-pixel-grid]")).toHaveAttribute("aria-label", "Sprite Creator 32 by 32 pixel canvas"); ++ await expect(page.locator("[data-sprites-pixel-grid] [role='gridcell']")).toHaveCount(1024); ++ await expect(page.locator("[data-sprites-grid-status]")).toContainText("Canvas display mode: 32x32"); ++ await expect(page.getByRole("button", { name: "32x32" })).toHaveAttribute("aria-pressed", "true"); await expect(page.locator("[data-sprites-shell-status]")).toContainText("Shell ready"); await expect(page.locator("main")).toContainText("Palette/Colors keys only"); -diff --git a/docs_build/dev/reports/PR_26179_CHARLIE_023-sprites-toolbar-placeholders.md b/docs_build/dev/reports/PR_26179_CHARLIE_023-sprites-toolbar-placeholders.md + await expect(page.locator("main")).not.toContainText(/Not implemented yet|future rebuild work|Static wireframe only|Plan sprite creation/i); +diff --git a/docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md b/docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md new file mode 100644 -index 000000000..b5925c595 +index 000000000..4d7d89ce7 --- /dev/null -+++ b/docs_build/dev/reports/PR_26179_CHARLIE_023-sprites-toolbar-placeholders.md -@@ -0,0 +1,68 @@ -+# PR_26179_CHARLIE_023-sprites-toolbar-placeholders ++++ b/docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md +@@ -0,0 +1,62 @@ ++# PR_26179_CHARLIE_024-sprites-canvas-grid + +Team: CHARLIE +Workflow: stacked feature workflow -+Base branch: PR_26179_CHARLIE_022-sprites-tool-shell -+Canonical ZIP path: dev/workspace/zip/PR_26179_CHARLIE_023-sprites-toolbar-placeholders_delta.zip ++Base branch: PR_26179_CHARLIE_023-sprites-toolbar-placeholders ++Canonical ZIP path: dev/workspace/zip/PR_26179_CHARLIE_024-sprites-canvas-grid_delta.zip + +## Summary + -+Added Sprite Creator toolbar placeholders for Pencil, Eraser, Fill, Line, Rectangle, Circle, Picker, Move, and Zoom. This PR intentionally adds visible controls only; no drawing behavior, persistence, API, DB, schema, or authoritative browser product data was added. ++Added a visible Sprite Creator pixel canvas grid with 16x16 and 32x32 display modes. The grid is rendered by external JavaScript and styled through Theme V2 CSS. This PR adds display behavior only; no persistence, drawing, API, DB, schema, or authoritative browser product data was added. + +## Branch Validation + +PASS + -+- Current branch: PR_26179_CHARLIE_023-sprites-toolbar-placeholders -+- Based on: PR_26179_CHARLIE_022-sprites-tool-shell ++- Current branch: PR_26179_CHARLIE_024-sprites-canvas-grid ++- Based on: PR_26179_CHARLIE_023-sprites-toolbar-placeholders +- No start_of_day files changed +- No DB/API/schema files changed +- No stale PR #219-#228 code copied @@ -66,29 +165,23 @@ index 000000000..b5925c595 + +| Requirement | Status | Notes | +| --- | --- | --- | -+| Add Pencil placeholder | PASS | Visible disabled control. | -+| Add Eraser placeholder | PASS | Visible disabled control. | -+| Add Fill placeholder | PASS | Visible disabled control. | -+| Add Line placeholder | PASS | Visible disabled control. | -+| Add Rectangle placeholder | PASS | Visible disabled control. | -+| Add Circle placeholder | PASS | Visible disabled control. | -+| Add Picker placeholder | PASS | Visible disabled control. | -+| Add Move placeholder | PASS | Visible disabled control. | -+| Add Zoom placeholder | PASS | Visible disabled control. | -+| No drawing behavior | PASS | Buttons remain disabled; no new runtime JS. | -+| No DB/API/schema changes | PASS | Changed only shell/test/report files. | -+| No browser-owned authoritative product data | PASS | No product persistence added. | -+| No stale PR #219-#228 code | PASS | Direct current-main stack edit only. | ++| Add visible pixel canvas grid | PASS | Grid renders on page load. | ++| Support 16x16 display mode | PASS | Default grid has 256 cells. | ++| Support 32x32 display mode | PASS | Toggle renders 1024 cells. | ++| No persistence | PASS | No storage/API/database writes. | ++| No drawing behavior | PASS | Pixel cells are disabled display cells. | ++| Theme V2 compliant | PASS | CSS added to shared Theme V2 stylesheet; no inline styles. | ++| No DB/API/schema changes | PASS | Only shell, CSS, JS, test, reports changed. | + +## Validation Lane Report + +Commands: + +```text ++node --check assets/toolbox/sprites/js/index.js +node --check dev/tests/playwright/tools/SpritesToolShell.spec.mjs -+node --check src/shared/toolbox/tool-metadata-inventory.js -+git diff --check -- toolbox/sprites/index.html dev/tests/playwright/tools/SpritesToolShell.spec.mjs -+rg --pcre2 -n -i "]+src=)|on(click|change|submit|input|load|error)=|imageDataUrl|local-mem|fake-login|MEM DB" toolbox/sprites/index.html dev/tests/playwright/tools/SpritesToolShell.spec.mjs ++git diff --check -- toolbox/sprites/index.html assets/toolbox/sprites/js/index.js assets/theme-v2/css/gamefoundrystudio.css dev/tests/playwright/tools/SpritesToolShell.spec.mjs ++rg --pcre2 -n -i "]+src=)|on(click|change|submit|input|load|error)=|imageDataUrl|local-mem|fake-login|MEM DB" toolbox/sprites/index.html assets/toolbox/sprites/js/index.js dev/tests/playwright/tools/SpritesToolShell.spec.mjs +npx playwright test dev/tests/playwright/tools/SpritesToolShell.spec.mjs --workers=1 --reporter=list --output= +``` + @@ -102,51 +195,63 @@ index 000000000..b5925c595 +## Manual Validation Notes + +1. Open `/toolbox/sprites/index.html` from the stacked branch. -+2. Confirm the Sprite Tools panel shows Pencil, Eraser, Fill, Line, Rectangle, Circle, Picker, Move, and Zoom. -+3. Confirm toolbar controls are placeholders only and disabled. -+4. Confirm there is no drawing behavior yet. ++2. Confirm the Pixel Grid renders in 16x16 mode by default. ++3. Click 32x32 and confirm the grid updates and the status text changes. ++4. Confirm no pixel drawing or save/load behavior exists yet. + +## ZIP Path + -+`dev/workspace/zip/PR_26179_CHARLIE_023-sprites-toolbar-placeholders_delta.zip` ++`dev/workspace/zip/PR_26179_CHARLIE_024-sprites-canvas-grid_delta.zip` diff --git a/docs_build/dev/reports/codex_changed_files.txt b/docs_build/dev/reports/codex_changed_files.txt -index 3f6b76a1b..3947ffbc8 100644 +index 3947ffbc8..01ac40869 100644 --- a/docs_build/dev/reports/codex_changed_files.txt +++ b/docs_build/dev/reports/codex_changed_files.txt -@@ -1,6 +1,5 @@ +@@ -1,5 +1,7 @@ toolbox/sprites/index.html --src/shared/toolbox/tool-metadata-inventory.js ++assets/toolbox/sprites/js/index.js ++assets/theme-v2/css/gamefoundrystudio.css dev/tests/playwright/tools/SpritesToolShell.spec.mjs --docs_build/dev/reports/PR_26179_CHARLIE_022-sprites-tool-shell.md -+docs_build/dev/reports/PR_26179_CHARLIE_023-sprites-toolbar-placeholders.md +-docs_build/dev/reports/PR_26179_CHARLIE_023-sprites-toolbar-placeholders.md ++docs_build/dev/reports/PR_26179_CHARLIE_024-sprites-canvas-grid.md docs_build/dev/reports/codex_changed_files.txt docs_build/dev/reports/codex_review.diff diff --git a/toolbox/sprites/index.html b/toolbox/sprites/index.html -index 8afd3b04c..cbedd6703 100644 +index cbedd6703..bf32a281b 100644 --- a/toolbox/sprites/index.html +++ b/toolbox/sprites/index.html -@@ -33,12 +33,19 @@ -
- Drawing Tools -
--

Choose the creation action that will shape the sprite canvas in the next data build.

--
-- -- -- -+

Choose the creation action that will shape the sprite canvas in a later editor slice.

-+
-+ -+ -+ -+ -+ -+ -+ -+ -+ -
-+

Toolbar placeholders only. Drawing behavior is not implemented in this PR.

+@@ -95,20 +95,14 @@ +
Canvas Preview
+

Pixel Grid

+
+-
+- +- +- +- +- +- +- +- +- +- +- +-
1,11,21,31,41,51,61,71,8
2,12,22,32,42,52,62,72,8
3,13,23,33,43,53,63,73,8
4,14,24,34,44,54,64,74,8
5,15,25,35,45,55,65,75,8
6,16,26,36,46,56,66,76,8
7,17,27,37,47,57,67,77,8
8,18,28,38,48,58,68,78,8
++
++ ++
-
-
++
++
++
++

Canvas display mode: 16x16. No pixel data is saved.

+ + +
+@@ -184,6 +178,7 @@ +
+ + ++ + + + diff --git a/toolbox/sprites/index.html b/toolbox/sprites/index.html index cbedd6703..bf32a281b 100644 --- a/toolbox/sprites/index.html +++ b/toolbox/sprites/index.html @@ -95,20 +95,14 @@

Pixel Work Area

Canvas Preview

Pixel Grid

-
- - - - - - - - - - - -
1,11,21,31,41,51,61,71,8
2,12,22,32,42,52,62,72,8
3,13,23,33,43,53,63,73,8
4,14,24,34,44,54,64,74,8
5,15,25,35,45,55,65,75,8
6,16,26,36,46,56,66,76,8
7,17,27,37,47,57,67,77,8
8,18,28,38,48,58,68,78,8
+
+ +
+
+
+
+

Canvas display mode: 16x16. No pixel data is saved.

@@ -184,6 +178,7 @@

Sprite Details

+