Overwrite textfarbe auch bei assets #7

Closed
opened 2026-09-12 15:03:50 +02:00 by admin · 0 comments

die textfarbe beim asset soll auch in diesem gold dargestellt werden, falls ein property des assets einen override hat.
ist somit relativ simpel: im prinzip genau das checken was im inspector erscheint wenn man das asset auswählt => gibt es wo einen override (gold) dann auch den assetname links im panel gold darstellen.


Umgesetzt (2026-09-09). Der Name einer Asset-Zeile im Assets-Panel ist gold, solange das
Asset irgendeine Property traegt, die der Inspector gold malen wuerde — dieselbe Farbe und
dasselbe Kriterium wie in der Hierarchie.

Die Regel steht als reine Funktion in src/core/properties/deviation.ts, neben dem schon
vorhandenen objectDeviates:

  • markedAssetSchema(asset) — die Zeilen, die der Asset-Inspector als "modified" markiert.
  • assetDeviates(asset) — ob davon eine von ihrem Schema-Default abweicht (isModified).

Panel und Inspector benutzen dieselbe Liste, statt die Bedingung zweimal zu formulieren:
buildAssetSection baut seine Property-Zeilen jetzt aus markedAssetSchema(asset) (das ersetzt
die Fallunterscheidung Behavior/Rest, die dort vorher stand). Damit kann die Liste keine
Abweichung behaupten, die der Inspector danach nicht zeigt.

Ein Sonderfall, der eine Entscheidung brauchte: die Variablen eines Behaviors. Sie sind Teil
von schemaForAsset, aber der Inspector markiert sie bewusst nie (setModified ist dort ein
No-op) — ihr Default ist auf der Variablen selbst deklariert, der Asset-Wert ist dieser
Default. Ein Behavior mit speed = 200 ist deshalb nicht gold. Sonst waere im E2E-Fixture der
"Mover" gold gewesen, ohne dass der Inspector irgendwo etwas markiert haette — genau der
Widerspruch, den die Notiz ausschliesst.

Belegt (E2E-Modul 04, sechs neue Checks ueber den Test-Hook __gm.assetRowColor, der die
tatsaechliche Label-Farbe der Zeile liest):

  • Crate (Hoehe 60 statt 100, eigene Farbe) → #f2c84b, Main camera (alles auf Default) → #e6e8ee
  • Mover (Variable speed = 200 gegen deklarierten Default 0) → #e6e8ee, wie der Inspector
  • ein ↺ zurueckgesetzt → bleibt gold, weil die zweite Abweichung noch steht
  • die zweite auch zurueckgesetzt → wird schlicht, ohne Reload; Undo bringt die Marke zurueck

Screenshot 15-asset-reset: im Panel sind "Level 1" (Hintergrundfarbe), "Crate" und
"Crate collider" gold, "Main camera", "Mover", "Spawner" und das frisch angelegte "Sprite" weiss.


Übernommen aus todo-notes/done/overwrite-textfarbe-auch-bei-assets.md beim Umzug auf das Issue-System (2026-09-12).

  • Angelegt: 2026-09-09 · 633f01c — Add five notes raised while the override work was running
  • Abgeschlossen: 2026-09-09 · e9634f0 — Paint an asset's name gold while any of its values deviates
  • Commits dazwischen: d7c8d3e Measure a deviation against the base, not the innermost template
  • Gemeldet von: admin
die textfarbe beim asset soll auch in diesem gold dargestellt werden, falls ein property des assets einen override hat. ist somit relativ simpel: im prinzip genau das checken was im inspector erscheint wenn man das asset auswählt => gibt es wo einen override (gold) dann auch den assetname links im panel gold darstellen. --- **Umgesetzt (2026-09-09).** Der Name einer Asset-Zeile im Assets-Panel ist gold, solange das Asset irgendeine Property traegt, die der Inspector gold malen wuerde — dieselbe Farbe und dasselbe Kriterium wie in der Hierarchie. Die Regel steht als reine Funktion in `src/core/properties/deviation.ts`, neben dem schon vorhandenen `objectDeviates`: - `markedAssetSchema(asset)` — die Zeilen, die der Asset-Inspector als "modified" markiert. - `assetDeviates(asset)` — ob davon eine von ihrem Schema-Default abweicht (`isModified`). **Panel und Inspector benutzen dieselbe Liste**, statt die Bedingung zweimal zu formulieren: `buildAssetSection` baut seine Property-Zeilen jetzt aus `markedAssetSchema(asset)` (das ersetzt die Fallunterscheidung Behavior/Rest, die dort vorher stand). Damit kann die Liste keine Abweichung behaupten, die der Inspector danach nicht zeigt. **Ein Sonderfall, der eine Entscheidung brauchte: die Variablen eines Behaviors.** Sie sind Teil von `schemaForAsset`, aber der Inspector markiert sie bewusst nie (`setModified` ist dort ein No-op) — ihr Default ist auf der Variablen selbst deklariert, der Asset-Wert *ist* dieser Default. Ein Behavior mit `speed = 200` ist deshalb nicht gold. Sonst waere im E2E-Fixture der "Mover" gold gewesen, ohne dass der Inspector irgendwo etwas markiert haette — genau der Widerspruch, den die Notiz ausschliesst. **Belegt** (E2E-Modul 04, sechs neue Checks ueber den Test-Hook `__gm.assetRowColor`, der die tatsaechliche Label-Farbe der Zeile liest): - Crate (Hoehe 60 statt 100, eigene Farbe) → `#f2c84b`, Main camera (alles auf Default) → `#e6e8ee` - Mover (Variable `speed` = 200 gegen deklarierten Default 0) → `#e6e8ee`, wie der Inspector - ein ↺ zurueckgesetzt → bleibt gold, weil die zweite Abweichung noch steht - die zweite auch zurueckgesetzt → wird schlicht, **ohne Reload**; Undo bringt die Marke zurueck Screenshot `15-asset-reset`: im Panel sind "Level 1" (Hintergrundfarbe), "Crate" und "Crate collider" gold, "Main camera", "Mover", "Spawner" und das frisch angelegte "Sprite" weiss. --- *Übernommen aus `todo-notes/done/overwrite-textfarbe-auch-bei-assets.md` beim Umzug auf das Issue-System (2026-09-12).* - **Angelegt:** 2026-09-09 · `633f01c` — Add five notes raised while the override work was running - **Abgeschlossen:** 2026-09-09 · `e9634f0` — Paint an asset's name gold while any of its values deviates - **Commits dazwischen:** `d7c8d3e` Measure a deviation against the base, not the innermost template - **Gemeldet von:** admin
admin added the todo-note label 2026-09-12 15:03:50 +02:00
admin closed this issue 2026-09-12 15:03:50 +02:00
admin added this to the Development project 2026-09-13 13:43:29 +02:00
admin moved this to Done in Development on 2026-09-13 13:45:11 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#7