Refonte du système JDR + système de personnage joueurs / non joueurs :
Some checks failed
E2E Tests / e2e (push) Failing after 21s
Some checks failed
E2E Tests / e2e (push) Failing after 21s
- Système de templating dans le game system : en effet, les templates sont liés au game system car les fiches personnages ne sont pas forcément les même selon les jeux (perso Dnd possède + de compétences que Nimble par exemple) - changement des fiches personnages pour adapter le templating au niveau des campagnes et remplir des pages de perso
This commit is contained in:
@@ -1,18 +1,27 @@
|
||||
/**
|
||||
* Fiche de personnage joueur (PJ) d'une campagne.
|
||||
* MVP : markdownContent libre. Évolution prévue vers des fiches templatées
|
||||
* par GameSystem (stats structurées selon le JDR joué).
|
||||
* Refonte 2026-04-30 : abandon du markdownContent au profit d'un systeme
|
||||
* template-based pilote par le GameSystem de la campagne.
|
||||
* - portraitImageId / headerImageId : champs universels hard-codes
|
||||
* - values : Map<champ template TEXT/NUMBER, valeur>
|
||||
* - imageValues : Map<champ template IMAGE, liste d'IDs d'images>
|
||||
*/
|
||||
export interface Character {
|
||||
id?: string;
|
||||
name: string;
|
||||
markdownContent?: string | null;
|
||||
portraitImageId?: string | null;
|
||||
headerImageId?: string | null;
|
||||
values?: Record<string, string>;
|
||||
imageValues?: Record<string, string[]>;
|
||||
campaignId: string;
|
||||
order?: number;
|
||||
}
|
||||
|
||||
export interface CharacterCreate {
|
||||
name: string;
|
||||
markdownContent?: string | null;
|
||||
portraitImageId?: string | null;
|
||||
headerImageId?: string | null;
|
||||
values?: Record<string, string>;
|
||||
imageValues?: Record<string, string[]>;
|
||||
campaignId: string;
|
||||
}
|
||||
|
||||
@@ -1,24 +1,30 @@
|
||||
import { TemplateField } from './template-field.model';
|
||||
|
||||
/**
|
||||
* Interface TypeScript pour GameSystemDTO (jumeau du DTO Java).
|
||||
*
|
||||
* rulesMarkdown : markdown monolithique, sections découpées par titres H2
|
||||
* (## Combat, ## Classes, etc.). Le découpage et la sélection des sections
|
||||
* à injecter dans le prompt IA sont faits côté backend Java.
|
||||
* rulesMarkdown : markdown monolithique, sections decoupees par titres H2.
|
||||
* characterTemplate / npcTemplate : champs templates pilotant le rendu des
|
||||
* fiches PJ / PNJ d'une campagne adossee a ce systeme (cf. refonte 2026-04-30).
|
||||
*/
|
||||
export interface GameSystem {
|
||||
id?: string;
|
||||
name: string;
|
||||
description?: string | null;
|
||||
rulesMarkdown?: string | null;
|
||||
characterTemplate?: TemplateField[];
|
||||
npcTemplate?: TemplateField[];
|
||||
author?: string | null;
|
||||
isPublic?: boolean;
|
||||
}
|
||||
|
||||
/** Payload de création/mise à jour (sans id). */
|
||||
/** Payload de creation/mise a jour (sans id). */
|
||||
export interface GameSystemCreate {
|
||||
name: string;
|
||||
description?: string | null;
|
||||
rulesMarkdown?: string | null;
|
||||
characterTemplate?: TemplateField[];
|
||||
npcTemplate?: TemplateField[];
|
||||
author?: string | null;
|
||||
isPublic: boolean;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,23 @@
|
||||
/**
|
||||
* Fiche de personnage non-joueur (PNJ) d'une campagne.
|
||||
* MVP : markdownContent libre (description, motivation, stats, notes MJ).
|
||||
* Évolution prévue : templating partagé PJ/PNJ piloté par GameSystem.
|
||||
* Refonte 2026-04-30 : meme structure que Character (template-based).
|
||||
*/
|
||||
export interface Npc {
|
||||
id?: string;
|
||||
name: string;
|
||||
markdownContent?: string | null;
|
||||
portraitImageId?: string | null;
|
||||
headerImageId?: string | null;
|
||||
values?: Record<string, string>;
|
||||
imageValues?: Record<string, string[]>;
|
||||
campaignId: string;
|
||||
order?: number;
|
||||
}
|
||||
|
||||
export interface NpcCreate {
|
||||
name: string;
|
||||
markdownContent?: string | null;
|
||||
portraitImageId?: string | null;
|
||||
headerImageId?: string | null;
|
||||
values?: Record<string, string>;
|
||||
imageValues?: Record<string, string[]>;
|
||||
campaignId: string;
|
||||
}
|
||||
|
||||
15
web/src/app/services/template-field.model.ts
Normal file
15
web/src/app/services/template-field.model.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Interface TypeScript pour TemplateFieldDTO (kernel partage cote backend).
|
||||
* Decrit un champ d'un template (PJ, PNJ, Lore Page).
|
||||
*
|
||||
* type : "TEXT" | "IMAGE" | "NUMBER"
|
||||
* layout : "GALLERY" | "HERO" | "MASONRY" | "CAROUSEL", null sauf si type=IMAGE
|
||||
*/
|
||||
export type FieldType = 'TEXT' | 'IMAGE' | 'NUMBER';
|
||||
export type ImageLayout = 'GALLERY' | 'HERO' | 'MASONRY' | 'CAROUSEL';
|
||||
|
||||
export interface TemplateField {
|
||||
name: string;
|
||||
type: FieldType;
|
||||
layout?: ImageLayout | null;
|
||||
}
|
||||
Reference in New Issue
Block a user