PlotDirector/PlotLine/ViewModels/StoryPointViewModel.cs

36 lines
1.7 KiB
C#

using PlotLine.Models;
using PlotLine.Services;
namespace PlotLine.ViewModels;
public sealed class StoryPointViewModel
{
public Project Project { get; init; } = new();
public IReadOnlyList<Book> Books { get; init; } = [];
public IReadOnlyList<Chapter> Chapters { get; init; } = [];
public IReadOnlyList<Scene> 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<StoryPointCharacter> Characters { get; init; } = [];
public IReadOnlyList<RelationshipMapRelationshipViewModel> Relationships { get; init; } = [];
public IReadOnlyList<AssetStoryStateViewModel> Assets { get; init; } = [];
public LocationStoryStateViewModel? Location { get; init; }
public StoryPointSource? PreviousLocationUse { get; init; }
public IReadOnlyList<StoryPointThread> Threads { get; init; } = [];
public IReadOnlyList<ContinuityWarningViewModel> Warnings { get; init; } = [];
public IReadOnlyDictionary<int, StoryPointSource> Sources { get; init; } = new Dictionary<int, StoryPointSource>();
}
public sealed record StoryPointSource(int SceneID, string Label);
public sealed record StoryPointCharacter(SceneCharacter Appearance, CharacterAgeDisplayResult Age,
CharacterStoryStateViewModel? State, StoryPointSource? PreviousAppearance, IReadOnlyList<CharacterKnowledgeItem> Knowledge);
public sealed record StoryPointThread(int PlotThreadID, string Title, string Type, string PlotLineName, StoryPointSource? Source, string State);