Questionable/Questionable.Model/Questing/SkipStepConditions.cs

61 lines
2.7 KiB
C#
Raw Permalink Normal View History

2024-07-27 13:39:47 +00:00
using System.Collections.Generic;
using System.Linq;
using System.Text.Json.Serialization;
using Questionable.Model.Common;
using Questionable.Model.Questing.Converter;
2024-07-27 13:39:47 +00:00
2024-08-02 16:30:21 +00:00
namespace Questionable.Model.Questing;
2024-07-27 13:39:47 +00:00
public sealed class SkipStepConditions
{
public bool Never { get; set; }
public IList<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = new List<QuestWorkValue?>();
2024-07-27 13:39:47 +00:00
public ELockedSkipCondition? Flying { get; set; }
public ELockedSkipCondition? Chocobo { get; set; }
2024-12-03 13:00:20 +00:00
public bool? Diving { get; set; }
2024-07-27 13:39:47 +00:00
public bool NotTargetable { get; set; }
public List<ushort> InTerritory { get; set; } = [];
public List<ushort> NotInTerritory { get; set; } = [];
2024-07-27 13:39:47 +00:00
public SkipItemConditions? Item { get; set; }
[JsonConverter(typeof(ElementIdListConverter))]
public List<ElementId> QuestsAccepted { get; set; } = [];
[JsonConverter(typeof(ElementIdListConverter))]
public List<ElementId> QuestsCompleted { get; set; } = [];
public List<uint> NotNamePlateIconId { get; set; } = [];
public EAetheryteLocation? AetheryteLocked { get; set; }
public EAetheryteLocation? AetheryteUnlocked { get; set; }
2024-08-14 09:40:49 +00:00
public NearPositionCondition? NearPosition { get; set; }
2024-07-27 13:39:47 +00:00
public EExtraSkipCondition? ExtraCondition { get; set; }
public bool HasSkipConditions()
{
2024-07-27 15:37:08 +00:00
if (Never)
return false;
2024-08-02 07:55:55 +00:00
return (CompletionQuestVariablesFlags.Count > 0 && CompletionQuestVariablesFlags.Any(x => x != null)) ||
Flying != null ||
2024-07-28 19:03:44 +00:00
Chocobo != null ||
2024-12-03 13:00:20 +00:00
Diving != null ||
NotTargetable ||
2024-07-28 19:03:44 +00:00
InTerritory.Count > 0 ||
NotInTerritory.Count > 0 ||
Item != null ||
QuestsAccepted.Count > 0 ||
QuestsCompleted.Count > 0 ||
NotNamePlateIconId.Count > 0 ||
AetheryteLocked != null ||
AetheryteUnlocked != null ||
2024-08-14 09:40:49 +00:00
NearPosition != null ||
ExtraCondition != null;
2024-07-27 13:39:47 +00:00
}
public override string ToString()
{
return
2024-12-03 13:00:20 +00:00
$"{nameof(Never)}: {Never}, {nameof(CompletionQuestVariablesFlags)}: {CompletionQuestVariablesFlags}, {nameof(Flying)}: {Flying}, {nameof(Chocobo)}: {Chocobo}, {nameof(Diving)}: {Diving}, {nameof(NotTargetable)}: {NotTargetable}, {nameof(InTerritory)}: {string.Join(" ", InTerritory)}, {nameof(NotInTerritory)}: {string.Join(" ", NotInTerritory)}, {nameof(Item)}: {Item}, {nameof(QuestsAccepted)}: {string.Join(" ", QuestsAccepted)}, {nameof(QuestsCompleted)}: {string.Join(" ", QuestsCompleted)}, {nameof(NotNamePlateIconId)}: {string.Join(" ", NotNamePlateIconId)}, {nameof(NearPosition)}: {NearPosition}, {nameof(ExtraCondition)}: {ExtraCondition}";
}
2024-07-27 13:39:47 +00:00
}