using System; using System.Collections.Generic; using System.Collections.Immutable; using Dalamud.Game.Text; using LLib.GameData; using Questionable.Model.Questing; namespace Questionable.Model; internal interface IQuestInfo { ElementId QuestId { get; } string Name { get; } uint IssuerDataId { get; } bool IsRepeatable { get; } bool IsSeasonalQuest => false; DateTime? SeasonalQuestExpiry => null; ImmutableList PreviousQuests { get; } EQuestJoin PreviousQuestJoin { get; } ushort Level { get; } EAlliedSociety AlliedSociety { get; } uint? JournalGenre { get; } ushort SortKey { get; } bool IsMainScenarioQuest { get; } IReadOnlyList ClassJobs { get; } EExpansionVersion Expansion { get; } string SimplifiedName => Name.Replace(".", "", StringComparison.Ordinal).Replace("*", "", StringComparison.Ordinal).Replace("\"", "", StringComparison.Ordinal) .Replace("/", "", StringComparison.Ordinal) .Replace("\\", "", StringComparison.Ordinal) .Replace("<", "", StringComparison.Ordinal) .Replace(">", "", StringComparison.Ordinal) .Replace("|", "", StringComparison.Ordinal) .Replace(":", "", StringComparison.Ordinal) .Replace("?", "", StringComparison.Ordinal) .TrimStart(SeIconChar.QuestSync.ToIconChar(), SeIconChar.QuestRepeatable.ToIconChar(), ' '); }