Plusieurs ajouts :
Some checks failed
Build & Push Images / build (brain) (push) Has been cancelled
Build & Push Images / build (core) (push) Has been cancelled
Build & Push Images / build (web) (push) Has been cancelled
Build & Push Images / build-switcher (push) Has been cancelled

- Possibilité de configurer des lieux dans une scène : permet de configurer un donjon par exemple avec les pièces, les trésors par pièce, la narration..... Mise en place également de conditions permettant de conditionner le déblocage des quêtes.
- Possibilité de transformé un arc en instance non linéaire afin de faire un hub. Permet de jouer de préparer des campagnes type Dragon of Icespire peak plus facilement.
- Configuration de partie : chaque partie va contenir les séances, ce qui permettra de suivre le déblocage des conditions pour les quêtes.

Passage en 0.9.1-beta
This commit is contained in:
2026-06-03 15:44:48 +02:00
parent e3fc96a1bc
commit 504c4b7b6c
147 changed files with 5347 additions and 392 deletions

View File

@@ -11,6 +11,7 @@ import { catchError, switchMap, filter, map } from 'rxjs/operators';
import { of } from 'rxjs';
import { SessionService } from '../../services/session.service';
import { Session } from '../../services/session.model';
import { PlaythroughService } from '../../services/playthrough.service';
import {
SessionEntry, SessionEntryInput, EntryType, ENTRY_TYPE_META
} from '../../services/session-entry.model';
@@ -54,6 +55,8 @@ export class SessionDetailComponent implements OnInit, OnDestroy {
readonly entryTypeMeta = ENTRY_TYPE_META;
session: Session | null = null;
/** Résolu via Playthrough.campaignId (Session → Playthrough → Campaign). */
campaignId: string | null = null;
/** Timeline triée du plus récent au plus ancien (DESC) pour l'UX en partie. */
entries: SessionEntry[] = [];
@@ -74,6 +77,7 @@ export class SessionDetailComponent implements OnInit, OnDestroy {
private route: ActivatedRoute,
private router: Router,
private sessionService: SessionService,
private playthroughService: PlaythroughService,
private entryService: SessionEntryService,
private layoutService: LayoutService,
private pageTitleService: PageTitleService,
@@ -93,6 +97,11 @@ export class SessionDetailComponent implements OnInit, OnDestroy {
if (session) {
this.pageTitleService.set(session.name);
this.loadEntries(session.id);
if (session.playthroughId) {
this.playthroughService.getById(session.playthroughId).pipe(
catchError(() => of(null))
).subscribe(pt => { this.campaignId = pt ? pt.campaignId : null; });
}
}
});
}
@@ -168,9 +177,12 @@ export class SessionDetailComponent implements OnInit, OnDestroy {
variant: 'danger'
}).then(ok => {
if (!ok) return;
const campaignId = session.campaignId;
const cid = this.campaignId;
this.sessionService.deleteSession(session.id).subscribe({
next: () => this.router.navigate(['/campaigns', campaignId]),
next: () => {
if (cid) this.router.navigate(['/campaigns', cid]);
else this.router.navigate(['/campaigns']);
},
error: () => console.error('Erreur lors de la suppression de la session')
});
});