2024-07-16 14:43:31 +02:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2024-08-02 18:30:21 +02:00
|
|
|
|
using Questionable.Model.Questing;
|
2024-05-25 23:51:37 +02:00
|
|
|
|
|
2024-06-01 22:01:50 +02:00
|
|
|
|
namespace Questionable.Model;
|
2024-05-25 23:51:37 +02:00
|
|
|
|
|
|
|
|
|
internal sealed class Quest
|
|
|
|
|
{
|
2024-08-04 16:03:23 +02:00
|
|
|
|
public required ElementId Id { get; init; }
|
2024-07-11 02:56:42 +02:00
|
|
|
|
public required QuestRoot Root { get; init; }
|
2024-08-04 16:03:23 +02:00
|
|
|
|
public required IQuestInfo Info { get; init; }
|
2024-08-15 21:38:47 +02:00
|
|
|
|
public required ESource Source { get; init; }
|
2024-05-26 21:45:26 +02:00
|
|
|
|
|
|
|
|
|
public QuestSequence? FindSequence(byte currentSequence)
|
2024-07-11 02:56:42 +02:00
|
|
|
|
=> Root.QuestSequence.SingleOrDefault(seq => seq.Sequence == currentSequence);
|
2024-07-16 14:43:31 +02:00
|
|
|
|
|
|
|
|
|
public IEnumerable<QuestSequence> AllSequences() => Root.QuestSequence;
|
|
|
|
|
|
|
|
|
|
public IEnumerable<(QuestSequence Sequence, int StepId, QuestStep Step)> AllSteps()
|
|
|
|
|
{
|
|
|
|
|
foreach (var sequence in Root.QuestSequence)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < sequence.Steps.Count; ++i)
|
|
|
|
|
{
|
|
|
|
|
var step = sequence.Steps[i];
|
|
|
|
|
yield return (sequence, i, step);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-08-15 21:38:47 +02:00
|
|
|
|
|
|
|
|
|
public enum ESource
|
|
|
|
|
{
|
|
|
|
|
Assembly,
|
|
|
|
|
ProjectDirectory,
|
|
|
|
|
UserDirectory,
|
|
|
|
|
}
|
2024-05-25 23:51:37 +02:00
|
|
|
|
}
|