diff --git a/web/src/app/campaigns/scene/scene-edit/scene-edit.component.html b/web/src/app/campaigns/scene/scene-edit/scene-edit.component.html index 2c1907c..2c0ae40 100644 --- a/web/src/app/campaigns/scene/scene-edit/scene-edit.component.html +++ b/web/src/app/campaigns/scene/scene-edit/scene-edit.component.html @@ -258,6 +258,8 @@ diff --git a/web/src/app/campaigns/scene/scene-view/scene-view.component.html b/web/src/app/campaigns/scene/scene-view/scene-view.component.html index dfa8e50..a375835 100644 --- a/web/src/app/campaigns/scene/scene-view/scene-view.component.html +++ b/web/src/app/campaigns/scene/scene-view/scene-view.component.html @@ -151,10 +151,22 @@

{{ r.description }}

}
- @if (r.enemies?.trim()) { + @if (r.enemies?.trim() || roomLinkedEnemies(r).length > 0) {
⚔️ Ennemis -

{{ r.enemies }}

+ @if (roomLinkedEnemies(r).length > 0) { +
+ @for (e of roomLinkedEnemies(r); track e.id) { + + {{ enemyLabel(e) }} + + } +
+ } + @if (r.enemies?.trim()) { +

{{ r.enemies }}

+ }
} @if (r.loot?.trim()) { diff --git a/web/src/app/campaigns/scene/scene-view/scene-view.component.ts b/web/src/app/campaigns/scene/scene-view/scene-view.component.ts index a6a12fd..d38b69b 100644 --- a/web/src/app/campaigns/scene/scene-view/scene-view.component.ts +++ b/web/src/app/campaigns/scene/scene-view/scene-view.component.ts @@ -13,7 +13,7 @@ import { EnemyService } from '../../../services/enemy.service'; import { PageService } from '../../../services/page.service'; import { LayoutService } from '../../../services/layout.service'; import { PageTitleService } from '../../../services/page-title.service'; -import { Scene } from '../../../services/campaign.model'; +import { Scene, Room } from '../../../services/campaign.model'; import { Page } from '../../../services/page.model'; import { Enemy } from '../../../services/enemy.model'; import { loadCampaignTreeData, buildCampaignSidebarConfig } from '../../campaign-tree.helper'; @@ -119,6 +119,13 @@ export class SceneViewComponent implements OnInit, OnDestroy { return level ? `${enemy.name} (${level})` : enemy.name; } + /** Fiches du bestiaire liées à une pièce (IDs orphelins ignorés). */ + roomLinkedEnemies(room: Room): Enemy[] { + return (room.enemyIds ?? []) + .map(id => this.availableEnemies.find(e => e.id === id)) + .filter((e): e is Enemy => !!e); + } + /** Résout le nom d'une pièce cible (pour afficher les sorties inter-pièces). */ roomNameById(scene: Scene | null, roomId: string): string { return scene?.rooms?.find(r => r.id === roomId)?.name ?? '(pièce supprimée)';