using System.Collections.Generic; using System.Linq; using Questionable.Model.Questing; namespace Questionable.Model; internal sealed class Quest { public enum ESource { Assembly, ProjectDirectory, UserDirectory } public required ElementId Id { get; init; } public required QuestRoot Root { get; init; } public required IQuestInfo Info { get; init; } public required ESource Source { get; init; } public QuestSequence? FindSequence(byte currentSequence) { return Root.QuestSequence.SingleOrDefault((QuestSequence seq) => seq.Sequence == currentSequence); } public IEnumerable AllSequences() { return Root.QuestSequence; } public IEnumerable<(QuestSequence Sequence, int StepId, QuestStep Step)> AllSteps() { foreach (QuestSequence sequence in Root.QuestSequence) { int i = 0; while (i < sequence.Steps.Count) { QuestStep item = sequence.Steps[i]; yield return (Sequence: sequence, StepId: i, Step: item); int num = i + 1; i = num; } } } }