2.1 KiB
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:
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.