feat: add fullscreen mode and extract shared game engine

- Add new fullscreen game mode playable in a dedicated browser tab
- Extract shared game logic into `engine.js` to be used by both popup and fullscreen modes
- Implement self-protection to prevent closing the game tab or popup tab
- Update documentation and bump version to 1.1.0
This commit is contained in:
Janik Dietz 2026-08-04 08:02:53 +02:00
parent 0f566b02ac
commit 25fc6fb345
Signed by: Tronax
SSH key fingerprint: SHA256:2pKKXDZucWvaF/GzXNz0FY53EAO1YDLN80bqS+TTz/o
8 changed files with 1064 additions and 798 deletions

View file

@ -22,11 +22,29 @@ Pilot a spaceship, blast the tabs you no longer need, and they really get closed
## 🎮 Spielen
1. Auf das Toolbar-Icon klicken.
2. Wählen: **Aktuelles Fenster** oder **Alle Fenster**.
3. **SPIEL STARTEN** drücken.
4. Deine echten Tabs erscheinen als gegnerische Raumschiffe (mit echtem Favicon + Titel).
5. Schießen — jeder Tab, den du triffst, wird in Chrome **wirklich geschlossen**.
### Zwei Spielmodi
| Modus | Wie |
|---|---|
| **Popup** (kompakt, 420×600) | Toolbar-Icon klicken → **SPIEL STARTEN** |
| **Vollbild** (eigener Tab, bis 900×680) | Toolbar-Icon klicken → **🖥️ Im Vollbild spielen** |
Im Vollbild-Modus öffnet sich das Spiel in einem eigenen Tab. Dieser Tab
ist **geschützt** er taucht nie als Ziel auf und lässt sich nicht abschießen.
Perfekt, wenn du mehr Platz und eine bessere Übersicht willst.
### Ablauf
1. Modus wählen & Scope wählen: **Aktuelles Fenster** oder **Alle Fenster**.
2. **SPIEL STARTEN** drücken.
3. Deine echten Tabs erscheinen als gegnerische Raumschiffe (mit echtem Favicon + Titel).
4. Schießen — jeder Tab, den du triffst, wird in Chrome **wirklich geschlossen**.
> 🛡️ **Selbstschutz:** Folgende Tabs sind nie Ziele:
> - der Tab, der das Popup trägt (sonst würde sich das Spiel selbst beenden)
> - der Game-Tab im Vollbild-Modus
> - alle internen Chrome-Seiten (`chrome://`, `devtools://`, …)
> - alle Seiten dieser Extension selbst
### Steuerung
@ -53,9 +71,13 @@ Pilot a spaceship, blast the tabs you no longer need, and they really get closed
```
tab-shooter/
├── manifest.json # MV3-Manifest, Berechtigungen
├── popup.html # Overlay-UI: Start-, Spiel- & Game-Over-Screen
├── popup.css # Space-Theme Styling
├── popup.js # Game-Engine + Chrome-API-Anbindung
├── engine.js # Geteilte Game-Engine (Klasse TabShooterGame)
├── popup.html # Popup-UI (kompakt)
├── popup.css # Shared Space-Theme Styling
├── popup.js # Popup-Controller (nutzt engine.js)
├── game.html # Vollbild-UI (eigener Tab)
├── game.css # Vollbild-Overrides
├── game.js # Vollbild-Controller (nutzt engine.js)
├── background.js # Service Worker (MV3)
├── generate_icons.py # Icon-Generator (pure stdlib, keine Abhängigkeiten)
├── README.md