public AbstractQuestComponent(AbstractQuest quest) { if (quest is null) { throw new ArgumentNullException("quest", "QuestComponent must be associated with a not-null quest"); } this.Quest = quest; }
/// <summary> /// Returns a collection of quests for which the quest parameter is a step. /// </summary> /// <param name="quest"></param> /// <returns></returns> public List <AbstractQuest> GetDependentQuests(AbstractQuest stepQuest) { if (stepQuest is null) { throw new ArgumentNullException(nameof(stepQuest)); } return(QuestRegister.Where(quest => quest.Steps.Contains(stepQuest)).ToList()); }
public override void RemoveStep(AbstractQuest step) { if (step is null) { throw new ArgumentNullException(nameof(step)); } if (!_steps.Contains(step)) { throw new ArgumentException("The steps collection does not contain this particular step."); } _steps.Remove(step); }
public void RegisterQuest(AbstractQuest quest) { if (quest is null) { throw new ArgumentNullException(nameof(quest)); } if (QuestRegister.Contains(quest)) { throw new ArgumentException("Quest Register already contains this quest object."); } QuestRegister.Add(quest); RegisterModified?.Invoke(); }
/// <summary> /// Completely deletes the quest. Also removes links to it from dependent quests. /// </summary> /// <param name="quest"></param> public void UnregisterQuest(AbstractQuest quest) { if (quest is null) { throw new ArgumentNullException(nameof(quest)); } if (!QuestRegister.Contains(quest)) { throw new ArgumentException("Quest Register does not contain this quest object."); } foreach (var dependentQuest in GetDependentQuests(quest)) { dependentQuest.RemoveStep(quest); } QuestRegister.Remove(quest); RegisterModified?.Invoke(); }
public override void AddStep(AbstractQuest step) { if (step is null) { throw new ArgumentNullException(nameof(step)); } if (_steps.Contains(step)) { throw new ArgumentException("The steps collection already contains this particular step."); } if (step.Steps.Contains(this)) { throw new ArgumentException("The step parameter is already contains this quest as a step."); } if (step.Equals(this)) { throw new ArgumentException("The step parameter is equal by reference to this quest. A quest can't be a step to itself."); } _steps.Add(step); }
public abstract void RemoveStep(AbstractQuest step);
public abstract void AddStep(AbstractQuest step);