using PlotLine.Models; using PlotLine.Services; namespace PlotLine.ViewModels; public sealed class StoryPointViewModel { public Project Project { get; init; } = new(); public IReadOnlyList Books { get; init; } = []; public IReadOnlyList Chapters { get; init; } = []; public IReadOnlyList Scenes { get; init; } = []; public StoryPointSnapshot? Snapshot { get; init; } } public sealed class StoryPointSnapshot { public int ProjectID { get; init; } public Book Book { get; init; } = new(); public Chapter Chapter { get; init; } = new(); public Scene Scene { get; init; } = new(); public string? PovName { get; init; } public IReadOnlyList Characters { get; init; } = []; public IReadOnlyList Relationships { get; init; } = []; public IReadOnlyList Assets { get; init; } = []; public LocationStoryStateViewModel? Location { get; init; } public StoryPointSource? PreviousLocationUse { get; init; } public IReadOnlyList Threads { get; init; } = []; public IReadOnlyList Warnings { get; init; } = []; public IReadOnlyDictionary Sources { get; init; } = new Dictionary(); } public sealed record StoryPointSource(int SceneID, string Label); public sealed record StoryPointCharacter(SceneCharacter Appearance, CharacterAgeDisplayResult Age, CharacterStoryStateViewModel? State, StoryPointSource? PreviousAppearance, IReadOnlyList Knowledge); public sealed record StoryPointThread(int PlotThreadID, string Title, string Type, string PlotLineName, StoryPointSource? Source, string State);