Issue #6: F3 Debug View #11

Merged
tekki merged 4 commits from feature/debug-view into master 2026-03-21 14:07:07 +00:00
Collaborator

Closes #6

Was sich geändert hat

Neue Datei: DebugSystem.ts

  • Pathfinding-Visualisierung: cyan Linien + Ziel-Highlight in World Space (Depth 50)
  • Sammelt und liefert alle Debug-Daten per getDebugData(ptr): FPS, Maus-Weltkoords, Tile-Typ, Ressourcen/Gebäude/Crops auf dem Hovered-Tile, Nisse-Stats, Job-Stats
  • toggle() schaltet Linien-Grafik ein/aus

VillagerSystem.ts

  • getActivePaths() neu: liefert Position + Restpfad aller laufenden Nisse (für Pathfinding-Viz)
  • JSDoc auf allen bisher undokumentierten Methoden ergänzt

WorldSystem.ts

  • JSDoc auf allen Methoden ergänzt

GameScene.ts

  • DebugSystem registriert und in update() getickert
  • Event debugToggledebugSystem.toggle()
  • JSDoc auf create(), update(), shutdown() ergänzt

UIScene.ts

  • F3 togglet Debug-Panel + emittiert debugToggle an GameScene
  • Debug-Panel: Text-Overlay links oben (unter Build/Farm-Indikatoren) mit allen Daten
  • [F3] Debug in der Controls-Hint ergänzt
  • JSDoc auf allen bisher undokumentierten Methoden ergänzt

Test

  • F3 drücken: Panel erscheint, Pfade werden als cyan Linien gezeichnet
  • Maus über verschiedene Tiles: Tile-Typ + Inhalte aktualisieren sich
  • Nisse laufen lassen: Pfade werden live nachgezogen
  • F3 erneut: alles verschwindet
Closes #6 ## Was sich geändert hat ### Neue Datei: `DebugSystem.ts` - Pathfinding-Visualisierung: cyan Linien + Ziel-Highlight in World Space (Depth 50) - Sammelt und liefert alle Debug-Daten per `getDebugData(ptr)`: FPS, Maus-Weltkoords, Tile-Typ, Ressourcen/Gebäude/Crops auf dem Hovered-Tile, Nisse-Stats, Job-Stats - `toggle()` schaltet Linien-Grafik ein/aus ### `VillagerSystem.ts` - `getActivePaths()` neu: liefert Position + Restpfad aller laufenden Nisse (für Pathfinding-Viz) - JSDoc auf allen bisher undokumentierten Methoden ergänzt ### `WorldSystem.ts` - JSDoc auf allen Methoden ergänzt ### `GameScene.ts` - `DebugSystem` registriert und in `update()` getickert - Event `debugToggle` → `debugSystem.toggle()` - JSDoc auf `create()`, `update()`, `shutdown()` ergänzt ### `UIScene.ts` - F3 togglet Debug-Panel + emittiert `debugToggle` an GameScene - Debug-Panel: Text-Overlay links oben (unter Build/Farm-Indikatoren) mit allen Daten - `[F3] Debug` in der Controls-Hint ergänzt - JSDoc auf allen bisher undokumentierten Methoden ergänzt ## Test - F3 drücken: Panel erscheint, Pfade werden als cyan Linien gezeichnet - Maus über verschiedene Tiles: Tile-Typ + Inhalte aktualisieren sich - Nisse laufen lassen: Pfade werden live nachgezogen - F3 erneut: alles verschwindet
claude added 22 commits 2026-03-21 12:12:45 +00:00
- Scroll wheel now zooms toward the mouse cursor instead of screen center
- Middle mouse button held: pan camera by dragging
- Both actions respect current zoom level
Separate test environment at /test.html (own Vite entry, own Phaser
instance). ZoomTestScene renders a 50×50 tile grid with crosshair
markers and a live HUD overlay showing zoom, scroll, viewport in px
and tiles, mouse world/screen/tile coords, and renderer info.
Zoom uses plain cam.setZoom() — no mouse tracking — to observe
Phaser's default center-anchor behavior.
Vite dev server gets a /api/log middleware (POST appends to
game-test.log, DELETE clears it). ZoomTestScene writes a zoom event
with before/after state on every scroll, plus a full snapshot every
2 seconds. Log entries are newline-delimited JSON.
Text overlay now uses a dedicated HUD camera (zoom=1, fixed scroll)
so it's never scaled by the world zoom. World objects and HUD objects
are separated via camera ignore lists. Added red screen-center
crosshair to HUD layer as a precise alignment reference.
Implements scroll correction after cam.setZoom() so the world point
under the mouse stays fixed. Formula accounts for Phaser's
center-based zoom: scrollX += (mouseX - cw/2) * (1/zBefore - 1/zAfter).
Tab switches between the two test scenes in both directions.
Also fixes centerWorld formula in ZoomTestScene overlay and logs.
Replaces plain cam.setZoom() with zoom-to-mouse: after each zoom step
the scroll is corrected by (mouseOffset from center) * (1/zBefore - 1/zAfter),
keeping the world point under the cursor fixed. Also fixes getCenterWorld()
which previously divided by zoom incorrectly. Added JSDoc to all methods.
F3 toggles a debug overlay with:
- FPS
- Mouse world/tile coordinates
- Tile type under cursor
- Resources, buildings, crops on hovered tile
- Nisse count broken down by AI state (idle/walking/working/sleeping)
- Active jobs by type (chop/mine/farm)
- Pathfinding visualization: cyan lines + destination highlight
  drawn in world space via DebugSystem

Added DebugSystem to GameScene. VillagerSystem exposes
getActivePaths() for the path visualization. JSDoc added to all
previously undocumented methods in VillagerSystem, WorldSystem,
GameScene, and UIScene.
claude added 2 commits 2026-03-21 12:37:53 +00:00
claude added 1 commit 2026-03-21 13:58:20 +00:00
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
tekki approved these changes 2026-03-21 14:04:54 +00:00
Dismissed
tekki approved these changes 2026-03-21 14:06:58 +00:00
tekki merged commit 0c636ed5ec into master 2026-03-21 14:07:07 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tekki/nissefolk#11
No description provided.