/// <summary> /// Add a linked quest to the current quest. /// </summary> /// <param name="parameter">An IQuest that should be linked to the current quest.</param> private void AddLinkedQuest(object?parameter) { if (parameter is IQuest questToAdd) { SelectedQuest?.AddLinkedQuest(questToAdd); } }
/// <summary> /// Remove a linked quest from the current quest. /// </summary> /// <param name="parameter">An IQuest that should be removed from the current quest.</param> private void RemoveLinkedQuest(object?parameter) { if (parameter is IQuest questToRemove) { SelectedQuest?.RemoveLinkedQuest(questToRemove); } }
/// <summary> /// Test function to see if adding a new linked quest is valid. /// </summary> /// <param name="parameter">Should provide an IQuest parameter for the quest /// potentially being linked to the current selected quest.</param> /// <returns>Returns true if it's OK to link the specified quest to the current quest.</returns> private bool CanAddLinkedQuest(object?parameter) { if (TallyIsRunning) { return(false); } if (SelectedQuest == null) { return(false); } if (parameter is IQuest questToAdd) { if (SelectedQuest == questToAdd) { return(false); } if (SelectedQuest.HasLinkedQuest(questToAdd)) { return(false); } return(true); } return(false); }