# Battle Screen - TODO

## Phase 2: Grid System

### Frontend
- [ ] `grid-overlay.tsx` - Verbessertes Grid-Rendering mit Snap-Preview
- [ ] `grid-config-modal.tsx` - Grid konfigurieren (nur GM)
  - Grid-Größe anpassen (Spalten x Reihen)
  - Grid-Offset für vorgezeichnete Maps einstellen
  - Live-Preview beim Anpassen
  - Zellenfarbe und Transparenz
- [ ] Snap-to-Grid beim Token-Platzieren
- [ ] Grid Ein-/Ausblenden Toggle (bereits vorhanden, verbessern)

---

## Phase 3: Token Management

### Frontend
- [ ] `add-pc-modal.tsx` - PCs aus Kampagne hinzufügen (mit Filter/Suche)
- [ ] `add-npc-modal.tsx` - NPCs aus Templates hinzufügen
- [ ] `create-combatant-modal.tsx` - Neues NPC-Template erstellen
  - Name, Level, HP, AC
  - Rettungswürfe (Fort, Ref, Will)
  - Wahrnehmung, Geschwindigkeit
  - Fähigkeiten mit Aktionskosten
  - Avatar-Upload
- [ ] `token-detail-panel.tsx` - Seitenpanel für Token-Details
  - HP-Management (Schaden/Heilung)
  - Zustand hinzufügen/entfernen
  - Notizen
  - Statistiken anzeigen (für NPCs)
- [ ] `initiative-tracker.tsx` - Initiativreihenfolge
  - Sortierte Liste aller Tokens
  - Aktueller Zug markiert
  - Nächster/Vorheriger Zug
  - Verzögern-Funktion

### Backend WebSocket Events
- [ ] `token_conditions_changed` - Zustände aktualisiert
- [ ] `turn_started` - Zug beginnt (für aktiven Token)
- [ ] `delay_turn` - Zug verzögern

---

## Phase 4: Player View

### Frontend
- [ ] `battle-player-view.tsx` - Route: `/campaigns/:id/battle/view`
  - Vollbild-Ansicht für Spieler (TV-Modus)
  - Read-only (keine Token-Manipulation)
  - Sync via gleicher WebSocket-Room
- [ ] `battle-tv-window.tsx` - Pop-out Window Logik
  - "TV-Modus öffnen" Button
  - Separates Browser-Fenster
  - Automatische Größenanpassung

### Berechtigungen
| Feature | GM View | Player View |
|---------|---------|-------------|
| Tokens bewegen | Ja | Nein |
| PC HP sehen | Ja (Zahlen) | Ja (Zahlen) |
| NPC HP sehen | Ja (Zahlen) | Nein (nur Blut-Effekt bei <20%) |
| NPC-Stats sehen | Ja | Nein |
| Initiative bearbeiten | Ja | Nein |
| Grid konfigurieren | Ja | Nein |

---

## Phase 5: Polish & Erweiterte Features

### Drag & Drop
- [ ] Touch-Support für mobile Geräte
- [ ] Drag-Preview mit Zielzelle hervorheben
- [ ] Multi-Select (Shift+Klick)
- [ ] Mehrere Tokens gleichzeitig bewegen

### Visuelle Verbesserungen
- [ ] Condition-Badges auf Tokens
  - Icon für häufige Zustände (Frightened, Slowed, etc.)
  - Anzahl bei gestuften Zuständen
- [ ] Blut-Effekt bei niedrigen HP (<20%)
- [ ] Token-Avatar anstatt Initialen (wenn vorhanden)
- [ ] Verschiedene Token-Formen (rund, eckig)
- [ ] Größen-Indikator für Large/Huge/Gargantuan

### Kampf-Tools
- [ ] `combat-log.tsx` - Letzte Aktionen anzeigen
  - Token bewegt
  - Schaden erhalten
  - Zustand hinzugefügt
  - Initiative geändert
- [ ] `measure-tool.tsx` - Entfernung messen
  - Klick & Drag für Linie
  - Entfernung in Fuß anzeigen
  - Diagonal-Bewegung nach PF2e-Regeln
- [ ] `area-tool.tsx` - Flächeneffekte
  - Kegel, Linie, Emanation, Burst
  - Größe einstellen
  - Betroffene Felder hervorheben

### Map-Features
- [ ] Fog of War (nur GM sieht alles)
- [ ] Mehrere Ebenen (Untergrund, Obergeschoss)
- [ ] Zoom & Pan
- [ ] Map-Marker / Notizen

---

## Technische Verbesserungen

### Performance
- [ ] Canvas-basiertes Rendering statt DOM für große Maps
- [ ] Token-Position nur bei Release senden (nicht während Drag)
- [ ] Lazy Loading für Token-Avatare

### Backend
- [ ] Combat Log in Datenbank speichern
- [ ] Battle Session Snapshots (Undo/Redo)
- [ ] Automatisches Aufräumen inaktiver Sessions

---

## Prioritäten

1. **Hoch** - Grid Config Modal (Phase 2)
2. **Hoch** - Initiative Tracker (Phase 3)
3. **Hoch** - Player View / TV-Modus (Phase 4)
4. **Mittel** - Token Detail Panel mit HP-Management
5. **Mittel** - Condition Badges
6. **Mittel** - Combatant Template erstellen
7. **Niedrig** - Measure Tool
8. **Niedrig** - Combat Log
9. **Niedrig** - Fog of War
