prometeu-studio/discussion/workflow/plans/PLN-0052-scene-workspace-wave-1-tilemap-editor.md
2026-04-15 07:21:59 +01:00

5.2 KiB

id ticket title status created completed tags
PLN-0052 studio-scene-workspace Implement Scene Workspace wave-1 tilemap editor abandoned 2026-04-14
studio
scene
workspace
tilemap
ui

Objective

Implement the wave-1 Tilemap experience for Scene Workspace according to DEC-0026.

Background

The accepted decision limits wave 1 to one visible tab, Tilemap, with four layers, independent layer dimensions, explicit tile presence semantics, scene-first navigation, and basic editing tools only.

Scope

Included

  • Left scene navigator.
  • Top tab strip with only Tilemap visible.
  • Central tilemap editing canvas.
  • Right-side tilemap details and tile palette regions.
  • Four-layer editing model with visibility and focus.
  • Basic painting, erasing, and tile selection.

Excluded

  • Camera boundaries.
  • Lights.
  • AABB authoring.
  • Placeholder tabs for unsupported aspects.
  • Advanced editing tools such as bucket fill, marquee, flood fill, or lock semantics.

Execution Steps

Step 1 - Build the workspace projection model

What: Create projection/view-state types for the scene navigator, active scene, active layer, tile palette, and tilemap details.

How: Follow the event-driven workspace framework already used by other Studio workspaces. Keep projection boundaries local so navigator, details, and palette can update without whole-workspace redraw.

File(s):

  • new projection and message classes under prometeu-studio/src/main/java/p/studio/workspaces/scene/

Step 2 - Build the left navigator and scene selection flow

What: Render a scene-first navigator that lists authoring scenes, not assets.

How: Introduce a custom navigator control inspired by Assets patterns but scoped to scene identity, with linked asset context rendered only as secondary status.

File(s):

  • new controls under prometeu-studio/src/main/java/p/studio/workspaces/scene/list/
  • prometeu-studio/src/main/java/p/studio/workspaces/scene/SceneWorkspace.java

Step 3 - Build the wave-1 Tilemap layout

What: Implement the single visible tab and its three-region body.

How: Compose:

  • central tilemap canvas;
  • right upper details panel;
  • right lower tile palette;
  • layer controls for visibility and focus.

Do not expose unsupported tabs.

File(s):

  • prometeu-studio/src/main/java/p/studio/workspaces/scene/SceneWorkspace.java
  • new controls under prometeu-studio/src/main/java/p/studio/workspaces/scene/tilemap/

Step 4 - Implement tile selection and painting

What: Support the basic editing interactions required by the decision.

How: Implement tile selection from the palette, paint on the active layer, erase by clearing explicit tile presence, and preserve valid glyph_id = 0 semantics.

File(s):

  • tilemap interaction classes under prometeu-studio/src/main/java/p/studio/workspaces/scene/tilemap/
  • scene model classes under prometeu-studio/src/main/java/p/studio/workspaces/scene/model/

Step 5 - Implement tileset resolution and layer detail rendering

What: Resolve glyph-bank-backed tileset data for the active scene/layer and show dimensions/details in the side panel.

How: Consume the scene-owned tileset choice, render available tiles and palette choices, and expose active layer dimensions and relevant properties without handing ownership to Assets.

File(s):

  • scene workspace service/projection classes
  • tile palette and detail controls under prometeu-studio/src/main/java/p/studio/workspaces/scene/tilemap/

Test Requirements

Unit Tests

  • Projection-state tests for active scene, layer visibility, and focus.
  • Tile painting tests that preserve explicit presence semantics.
  • Palette-selection tests that keep glyph_id = 0 valid.

Integration Tests

  • UI-oriented tests for scene selection, tile selection, paint, erase, and save-triggered refresh.

Manual Verification

  • Open Scene Workspace, create/open a scene, and confirm the navigator is scene-first.
  • Paint and erase on different layers with independent dimensions.
  • Verify layer visibility/focus changes do not corrupt scene data.
  • Verify only the Tilemap tab is visible in wave 1.

Acceptance Criteria

  • Scene Workspace renders a scene-first navigator.
  • Wave 1 exposes only the Tilemap tab.
  • The editor supports four layers with independent dimensions.
  • Painting and erasing respect explicit tile presence semantics.
  • Layer visibility and focus work in the tilemap editor.
  • Tile palette and details panels reflect the active scene/layer context.

Dependencies

  • DEC-0026-studio-scene-workspace.md
  • PLN-0049-scene-workspace-spec-and-boundary-propagation.md
  • PLN-0050-scene-workspace-shell-and-project-state-foundations.md
  • PLN-0051-scene-artifact-and-assets-handoff-contract.md

Risks

  • Overbuilding the first UI pass could quietly introduce unsupported aspect tabs or tools.
  • Canvas interaction code can become monolithic if projection boundaries are not enforced early.
  • Tileset rendering may drift toward asset-first ownership if scene-owned selection is not kept explicit.

Abandonment

Abandoned on 2026-04-15 because the parent decision DEC-0026 was explicitly abandoned by the user.