Toter Code und ungenutzte APIs in CORE/INPUT #9

Open
opened 2026-08-29 01:41:09 +02:00 by G1LL1 · 2 comments
G1LL1 commented 2026-08-29 01:41:09 +02:00 (Migrated from gitlab.g1ll1.com)

Komponente: CORE, INPUT, GAME
Betroffene Version: main @ 238ed66, index.html

AGENTS.md verlangt „Vermeide unnötige globale Variablen“ und „keine magischen Zahlen, wenn eine
Konstante sinnvoll ist“. Folgende Strukturen sind implementiert, aber nie wirksam – sie erzeugen
den Eindruck implementierter Features, die es nicht sind:

# Fundstelle Zeile(n) Befund
1 nextEdgeAfter(world, x) 485–495, Export 1287 Definiert und aus CORE exportiert, von CORE/RENDER/GAME niemals aufgerufen. Kanten-/Coyote-Logik läuft ausschließlich über groundAt().
2 INPUT.state.pauseEdge 2060 Nie geschrieben, nie gelesen (Pause läuft direkt über hooks.onPause()).
3 INPUT.state.restartEdge 2060 Wie oben (Restart über hooks.onRestart()).
4 INPUT.state.muteEdge 2060 Wie oben (Mute über hooks.onMute()).
5 INPUT.state.focusEdge 2059, Schreibzugriff 2120 Wird gesetzt, aber nie verbraucht – consume() enthält keinen focus-Anteil. Fokus funktioniert nur über den zweiten, separaten Listener in boot() (siehe Issue #8).
6 INPUT.state.pointerHook / cmd.hookGrabTarget 2061, 2084 hookGrabTarget wird in das Commando kopiert, aber von playerCmd() nie gelesen. state.pointerHook wird nie gesetzt (nur in consume() auf null zurückgesetzt). → „Haken direkt anklicken“ ist faktisch ein generischer Greifvorgang; eine gezielte Zielauswahl existiert nicht.
7 hook.disabled 941, 559, 1010 Wird beim Anlegen auf false gesetzt und in findGrab() abgefragt, aber nirgends auf true gesetzt. Der Mechanismus „Haken deaktivieren“ ist tot.
8 KEYMAP-Schlüssel "KeyW Jump" 2102 Kann von keinem Browser erzeugt werden (code ist KeyW, key ist w). Vermutlicher Tippfehler-Überrest; KeyW wird separat für reel behandelt (Zeile 2116).
9 makeBody(...).spin 549 Initialisiert, nie verwendet.
10 CSS-Selektor #countdown 191, 196 Existiert nicht im DOM (richtig wäre #countdownBg); beide Regeln greifen nicht. #countdown .overlay { background:none } ebenso wirkungslos.

Auswirkung

  • Irreführende API: Wer hook.disabled setzt oder auf cmd.hookGrabTarget baut, bekommt
    stillschweigend kein Verhalten.
  • Erschwerte Wartung der Ein-Datei-Struktur, gerade weil die Datei bewusst modular aufgebaut ist.
  • Issue #6 verstößt gegen die Anforderung „Haken direkt anklicken: greifen (wenn erreichbar)“ –
    das Anklicken funktioniert nur, weil danach generisch grab ausgelöst wird; der angeklickte
    Haken wird ignoriert (bei zwei erreichbaren Haken entscheidet findGrab()).

Lösungsvorschlag

  • Ungenutzte Felder/Funktionen entfernen (nextEdgeAfter, *Edge, spin, #countdown-CSS).
  • focusEdge zu einem echten Signal machen (in consume() aufnehmen) und den Doppel-Listener
    entfernen.
  • pointerHook/hookGrabTarget implementieren oder die Dokumentation/Tooltips anpassen, dass
    Anklicken generisch greift.
  • hook.disabled entfernen oder eine Nutzung (z. B. Haken nach grabs > N sperren) einbauen.
  • KEYMAP-Tippfehler bereinigen.

Dokumentiert in gitlab-issues/09-toter-code-ungenutzte-apis.md (Commit 238ed66). Alle Befunde ausgeführt und gemessen; Repro-Schritte im Text.

**Komponente:** CORE, INPUT, GAME **Betroffene Version:** `main` @ `238ed66`, `index.html` AGENTS.md verlangt „Vermeide unnötige globale Variablen“ und „keine magischen Zahlen, wenn eine Konstante sinnvoll ist“. Folgende Strukturen sind implementiert, aber nie wirksam – sie erzeugen den Eindruck implementierter Features, die es nicht sind: | # | Fundstelle | Zeile(n) | Befund | |---|---|---|---| | 1 | `nextEdgeAfter(world, x)` | 485–495, Export 1287 | Definiert und aus CORE exportiert, von CORE/RENDER/GAME **niemals aufgerufen**. Kanten-/Coyote-Logik läuft ausschließlich über `groundAt()`. | | 2 | `INPUT.state.pauseEdge` | 2060 | Nie geschrieben, nie gelesen (Pause läuft direkt über `hooks.onPause()`). | | 3 | `INPUT.state.restartEdge` | 2060 | Wie oben (Restart über `hooks.onRestart()`). | | 4 | `INPUT.state.muteEdge` | 2060 | Wie oben (Mute über `hooks.onMute()`). | | 5 | `INPUT.state.focusEdge` | 2059, Schreibzugriff 2120 | Wird gesetzt, aber nie verbraucht – `consume()` enthält keinen `focus`-Anteil. Fokus funktioniert nur über den zweiten, separaten Listener in `boot()` (siehe Issue #8). | | 6 | `INPUT.state.pointerHook` / `cmd.hookGrabTarget` | 2061, 2084 | `hookGrabTarget` wird in das Commando kopiert, aber von `playerCmd()` nie gelesen. `state.pointerHook` wird nie gesetzt (nur in `consume()` auf `null` zurückgesetzt). → „Haken direkt anklicken“ ist faktisch ein generischer Greifvorgang; eine gezielte Zielauswahl existiert nicht. | | 7 | `hook.disabled` | 941, 559, 1010 | Wird beim Anlegen auf `false` gesetzt und in `findGrab()` abgefragt, aber **nirgends** auf `true` gesetzt. Der Mechanismus „Haken deaktivieren“ ist tot. | | 8 | `KEYMAP`-Schlüssel `"KeyW Jump"` | 2102 | Kann von keinem Browser erzeugt werden (`code` ist `KeyW`, `key` ist `w`). Vermutlicher Tippfehler-Überrest; `KeyW` wird separat für `reel` behandelt (Zeile 2116). | | 9 | `makeBody(...).spin` | 549 | Initialisiert, nie verwendet. | | 10 | CSS-Selektor `#countdown` | 191, 196 | Existiert nicht im DOM (richtig wäre `#countdownBg`); beide Regeln greifen nicht. `#countdown .overlay { background:none }` ebenso wirkungslos. | ## Auswirkung * Irreführende API: Wer `hook.disabled` setzt oder auf `cmd.hookGrabTarget` baut, bekommt stillschweigend kein Verhalten. * Erschwerte Wartung der Ein-Datei-Struktur, gerade weil die Datei bewusst modular aufgebaut ist. * Issue #6 verstößt gegen die Anforderung „Haken direkt anklicken: greifen (wenn erreichbar)“ – das Anklicken funktioniert nur, weil danach generisch `grab` ausgelöst wird; der angeklickte Haken wird ignoriert (bei zwei erreichbaren Haken entscheidet `findGrab()`). ## Lösungsvorschlag * Ungenutzte Felder/Funktionen entfernen (`nextEdgeAfter`, `*Edge`, `spin`, `#countdown`-CSS). * `focusEdge` zu einem echten Signal machen (in `consume()` aufnehmen) und den Doppel-Listener entfernen. * `pointerHook`/`hookGrabTarget` implementieren oder die Dokumentation/Tooltips anpassen, dass Anklicken generisch greift. * `hook.disabled` entfernen oder eine Nutzung (z. B. Haken nach `grabs > N` sperren) einbauen. * KEYMAP-Tippfehler bereinigen. --- *Dokumentiert in `gitlab-issues/09-toter-code-ungenutzte-apis.md` (Commit `238ed66`). Alle Befunde ausgeführt und gemessen; Repro-Schritte im Text.*
G1LL1 commented 2026-08-29 01:45:27 +02:00 (Migrated from gitlab.g1ll1.com)

changed the description

changed the description
G1LL1 commented 2026-08-29 01:48:11 +02:00 (Migrated from gitlab.g1ll1.com)

changed the description

changed the description
Sign in to join this conversation.
No description provided.