Ejemplo n.º 1
0
        public AbstractQuestComponent(AbstractQuest quest)
        {
            if (quest is null)
            {
                throw new ArgumentNullException("quest", "QuestComponent must be associated with a not-null quest");
            }

            this.Quest = quest;
        }
Ejemplo n.º 2
0
        /// <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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        /// <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();
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public abstract void RemoveStep(AbstractQuest step);
Ejemplo n.º 8
0
 public abstract void AddStep(AbstractQuest step);