Kleine Aufräumarbeiten: HUD-Frames, Builder-Listener, doppelter Kommentar #11

Open
opened 2026-10-18 23:23:36 +02:00 by gilli · 0 comments
Owner

Problem

Kleine Stellen, jede für sich harmlos, zusammen schwerer lesbar.

1. HUD schreibt pro Frame ~20 Felder ungeprüft. Hud.update() (src/hud.js:39-77) setzt alle textContent neu und ruft toLocaleString() auf, ohne auf Änderung zu prüfen. Hud.stages() (src/hud.js:79-88) macht es richtig: HTML vergleichen, nur bei Unterschied schreiben. Dasselbe Muster fehlt für den Rest.

2. Builder-Listener laufen in der Flugphase weiter. src/build.js:169-171 hängt pointerup und pointermove an window. Nach dem Start dreht der Builder-Preview-Turntable im Hintergrund mit, obwohl er nicht sichtbar ist.

3. Doppelter Dokumentationskommentar. src/render.js:466-480 trägt zwei fast identische /** Chase camera … */-Blöcke direkt untereinander.

4. Spielzustand aus einer CSS-Klasse abgeleitet. Game.key() (src/main.js:219) fragt document.getElementById('build').classList.contains('hidden'), um zu wissen, ob gebaut oder geflogen wird. Funktioniert, aber die UI-Klasse ist kein Spielzustand.

Vorschlag

1 und 2 sind echte Kleinigkeiten, 3 ist reine Textpflege. 4 erst anfassen, wenn ein richtiger Zustandsautomat kommt — sonst nur Kommentar hin.

Prüfung

npm test grün; in der Flugphase ändert sich builder.spin nicht mehr.

## Problem Kleine Stellen, jede für sich harmlos, zusammen schwerer lesbar. **1. HUD schreibt pro Frame ~20 Felder ungeprüft.** `Hud.update()` (`src/hud.js:39-77`) setzt alle `textContent` neu und ruft `toLocaleString()` auf, ohne auf Änderung zu prüfen. `Hud.stages()` (`src/hud.js:79-88`) macht es richtig: HTML vergleichen, nur bei Unterschied schreiben. Dasselbe Muster fehlt für den Rest. **2. Builder-Listener laufen in der Flugphase weiter.** `src/build.js:169-171` hängt `pointerup` und `pointermove` an `window`. Nach dem Start dreht der Builder-Preview-Turntable im Hintergrund mit, obwohl er nicht sichtbar ist. **3. Doppelter Dokumentationskommentar.** `src/render.js:466-480` trägt zwei fast identische `/** Chase camera … */`-Blöcke direkt untereinander. **4. Spielzustand aus einer CSS-Klasse abgeleitet.** `Game.key()` (`src/main.js:219`) fragt `document.getElementById('build').classList.contains('hidden')`, um zu wissen, ob gebaut oder geflogen wird. Funktioniert, aber die UI-Klasse ist kein Spielzustand. ## Vorschlag 1 und 2 sind echte Kleinigkeiten, 3 ist reine Textpflege. 4 erst anfassen, wenn ein richtiger Zustandsautomat kommt — sonst nur Kommentar hin. ## Prüfung `npm test` grün; in der Flugphase ändert sich `builder.spin` nicht mehr.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gilli/rocket-sim#11
No description provided.