39 lines
2.1 KiB
Markdown
39 lines
2.1 KiB
Markdown
# Dauerhafte Charakterfarben
|
|
|
|
`falukant_data.character` enthält `hair_color` und `eye_color` als `VARCHAR(7)`.
|
|
Die Sequelize- und API-Felder heißen `hairColor` und `eyeColor`.
|
|
Erlaubt sind sechsstellige Hex-Farben einschließlich `#`, z. B. `#69432d`.
|
|
|
|
Migration: `20261104000001-add-character-appearance.cjs`.
|
|
Im Backend-Verzeichnis mit `npm run db:migrate` ausführen, bevor der neue
|
|
Backend-Code startet. Die Migration wird hier nur in einer isolierten
|
|
Testdatenbank ausgeführt; die produktive Datenbank wird nicht verändert.
|
|
|
|
Die Migration vergibt für bestehende Charaktere einmalig Farben aus einer
|
|
Palette mit sieben Haar- und sechs Augenfarben. Bereits vorhandene Werte
|
|
bleiben erhalten, auch beim erneuten Ausführen der Migration. Ein separater
|
|
DB-Trigger vergibt Farben für neue Charaktere, einschließlich roher INSERTs
|
|
des Rust-Daemons für NPCs und Neugeborene. NULL-Werte bei Updates behalten die
|
|
bisherige Farbe. Andere explizite, gültige Hex-Farben sind ebenfalls zulässig.
|
|
Die Farben ändern sich beim Altern nicht automatisch. Vererbung und Ergrauen
|
|
sind noch nicht implementiert; die aktuelle Palette ist eine Spielverteilung.
|
|
|
|
Familie (Partner, Kinder, Liebschaften), Taufliste, Direktoren sowie politische
|
|
und kirchliche Amtsträger liefern die Farben an die vorhandene 3D-Anzeige.
|
|
Die Spielerdaten und das Dashboard liefern sie ebenfalls. Die 3D-Komponenten
|
|
verwenden die gespeicherten Farben nur in den markierten Haar-/Irisflächen.
|
|
Unmarkierte Altersmodelle und die 2D-Porträts behalten ihre Originaltexturen.
|
|
Der Modell-Editor bleibt eine Vorschau ohne Schreibzugriff auf Charakterdaten.
|
|
|
|
Prüfung mit einer ausdrücklich bereitgestellten, wegwerfbaren Datenbank:
|
|
|
|
```bash
|
|
TEST_DATABASE_URL='postgresql://…/yourpart_development_test' \
|
|
node --test tools/characterAppearance.test.mjs
|
|
```
|
|
|
|
Der Integrationstest prüft Bestandsdaten, wiederholte und teilweise manuell
|
|
vorbereitete Migrationen, beide DB-Trigger zusammen, rohe INSERTs,
|
|
Sequelize-Erstellung/-Updates, Farbvalidierung und Rollback. Er verwirft
|
|
das Schema `falukant_data` ausschließlich in `yourpart_development_test`.
|