void SetQuest(string id, string idTask, QuestStatus status) { QuestTaskDetails task = _GetQuest(id, idTask); if (task != null) { task.status = status; } }
/// <summary> /// Verifies a task is of a specific status /// </summary> /// <returns><c>true</c> if this instance is task status the specified id status; otherwise, <c>false</c>.</returns> /// <param name="id">Identifier.</param> /// <param name="status">Status.</param> bool IsTaskStatus(string id, QuestStatus status) { QuestTaskDetails task = ctrl._GetTask(id); if (task != null) { return(task.status == status); } return(false); }
public QuestTaskDetails _GetQuest(string id, string taskId) { QuestEntryDetails quest = _GetQuest(id); QuestTaskDetails task = _GetTask(id); if (quest == null || task == null) { return(null); } if (quest.defenition.Tasks.Contains(task.defenition)) { return(task); } else { Debug.LogErrorFormat("Quest ID {0} does not contain task ID {1}. Please fix.", id, taskId); return(null); } }
// User boots up and starts a quest public void BeginQuest(string id) { // Get the quest and first task, mark them as ongoing, set start timestamp QuestEntryDetails quest = _GetQuest(id); if (quest != null) { quest.status = QuestStatus.Ongoing; quest.startTime = System.DateTime.Now; if (quest.defenition.Tasks != null && quest.defenition.Tasks.Count > 0) { QuestTaskDetails task = _GetQuest(id, quest.defenition.Tasks[0].id); if (task != null) { // @TODO Poll the requirements of the task to check if they've already been completed task.status = QuestStatus.Ongoing; task.startTime = System.DateTime.Now; } } } }
public QuestText GetQuestText(string questId) { QuestEntryDetails quest = _GetQuest(questId); if (quest == null) { return(null); } QuestText questText = new QuestText { title = quest.Title, description = quest.defenition.description }; if (quest.status == QuestStatus.Success) { questText.description += string.Format(" \n {0}", quest.defenition.successMessage); } else if (quest.status == QuestStatus.Failure) { questText.description += string.Format(" \n {0}", quest.defenition.failMessage); } else { // Generate a list of tasks List <QuestTaskText> tasks = new List <QuestTaskText>(); foreach (QuestTask t in quest.defenition.Tasks) { QuestTaskDetails task = _GetTask(t.id); tasks.Add(new QuestTaskText { title = t.displayName, status = task.status }); } questText.tasks = tasks; } return(questText); }
// @TODO Incomplete public bool NextTask(string questId) { if (status.IsQuestActive(questId)) { Debug.LogErrorFormat("Quest {0} is no longer active or not started.", questId); return(false); } QuestEntryDetails quest = _GetQuest(questId); QuestTaskDetails task = GetCurrentTask(questId); // Checks if all requirements have been fullfilled on the current task if (task.defenition.CheckRequirements()) { task.status = QuestStatus.Success; if (quest.currentTaskIndex + 1 >= quest.defenition.Tasks.Count) { // Quest has been completed EndQuest(questId); Debug.LogWarning("Quest {0} was marked as success from calling NextTask(). Please use EndQuest() to mark a quest as complete."); } else { // Update the next task and quest index quest.currentTaskIndex += 1; quest.status = QuestStatus.Ongoing; } quest.currentTaskIndex += 1; } else { return(false); } return(true); }