Ajout de tableaux dans la partie templates / pages de lore : possibilité d'ajouter un tableau multiligne (par exemple pour faire des tableaux d'objets dans les boutiques) ; tableau type liste clé / valeur (pour des statistiques et ce genre de chose).
All checks were successful
Build & Push Images / build (brain) (push) Successful in 1m36s
Build & Push Images / build (core) (push) Successful in 1m53s
Build & Push Images / build-switcher (push) Successful in 25s
Build & Push Images / build (web) (push) Successful in 1m59s

Ajout de la possibilité de lié un PNJ à une page de lore
Ajout d'un graphe de liaison entre lore / PNJs
Passage en v.0.12.3-beta
This commit is contained in:
2026-06-12 13:23:46 +02:00
parent 7f519588b6
commit 14fc1c28fe
51 changed files with 1647 additions and 88 deletions

View File

@@ -6,8 +6,10 @@
* - 'IMAGE' : galerie d'images (rendu en app-image-gallery)
* - 'NUMBER' : valeur numerique (rendu en input number)
* - 'KEY_VALUE_LIST' : liste de paires {label, value} avec labels figes au template
* - 'TABLE' : tableau a colonnes figees (labels = noms de colonnes) et
* lignes libres ajoutees au remplissage (boutique, inventaire…)
*/
export type FieldType = 'TEXT' | 'IMAGE' | 'NUMBER' | 'KEY_VALUE_LIST';
export type FieldType = 'TEXT' | 'IMAGE' | 'NUMBER' | 'KEY_VALUE_LIST' | 'TABLE';
/**
* Variante de rendu pour un champ IMAGE. Miroir de
@@ -28,10 +30,45 @@ export interface TemplateField {
type: FieldType;
/** Uniquement pour type='IMAGE'. Absent/null = 'GALLERY'. */
layout?: ImageLayout | null;
/** Labels predefinis pour KEY_VALUE_LIST (ordre significatif). */
/**
* Labels predefinis (ordre significatif) :
* KEY_VALUE_LIST = libelles des lignes ; TABLE = noms des colonnes.
*/
labels?: string[] | null;
}
/**
* Construit un TemplateField propre pour un type donne (attributs par defaut,
* conservation des attributs compatibles de `previous` lors d'un changement de
* type). Partage par les editeurs de template du Lore (create/edit).
*/
export function buildLoreTemplateField(
name: string,
type: FieldType,
previous?: TemplateField
): TemplateField {
switch (type) {
case 'IMAGE':
return { name, type, layout: previous?.layout ?? 'GALLERY' };
case 'KEY_VALUE_LIST':
case 'TABLE':
// Les labels (lignes KV / colonnes TABLE) survivent au changement de type
// entre ces deux variantes.
return { name, type, labels: previous?.labels ?? [] };
default:
return { name, type: 'TEXT' };
}
}
/** Retire les libelles vides (lignes KV / colonnes TABLE) avant sauvegarde. */
export function cleanFieldLabels(fields: TemplateField[]): TemplateField[] {
return fields.map(f =>
f.type === 'KEY_VALUE_LIST' || f.type === 'TABLE'
? { ...f, labels: (f.labels ?? []).map(l => l.trim()).filter(l => !!l) }
: f
);
}
export interface Template {
id?: string;
loreId: string;