public void AddQuest(int id, BioQuest quest = null) { if (Quests == null) { Quests = InitCollection <KeyValuePair <int, BioQuest> >(); } if (Quests.Any(pair => pair.Key == id)) { return; } if (quest == null) { quest = new BioQuest(); } quest.Goals = InitCollection(quest.Goals); quest.PlotItems = InitCollection(quest.PlotItems); quest.Tasks = InitCollection(quest.Tasks); var questPair = new KeyValuePair <int, BioQuest>(id, quest); Quests.Add(questPair); SelectedQuest = questPair; }
public Location ToLocation() { var location = new Location(X, Y, Name, Description, FilePaths.NormalizePath(Image)); if (Monsters?.Any() ?? false) { foreach (var encounter in Monsters) { var availableMonster = MonsterFactory.Get(encounter.Id); if (availableMonster != null) { location.AddEncounter(encounter.Id, encounter.Chance); } else { Trace.TraceWarning($"Location({Name}) has monster {encounter.Id} that could not be found"); } } ; } ; if (Quests?.Any() ?? false) { foreach (var quest in Quests) { var availableQuest = QuestFactory.FindQuest(quest.Id); if (availableQuest != null) { location.AddQuest(availableQuest); } else { Trace.TraceWarning($"Location({Name}) has quest {quest.Id} that could not be found"); } } ; } ; if (Trader > 0) { var availableTader = TraderFactory.GetTrader(Trader); if (availableTader != null) { location.TraderHere = availableTader; } else { Trace.TraceWarning($"Location({Name}) has tracer '{Trader}' that could not be found"); } } ; return(location); }
public bool AcceptQuest(Quest lpQuest) { lock (syncLock) { if (!Quests.Any(i => i.Name == lpQuest.Name)) { Quests.Add(lpQuest); return(true); } } return(false); }
public bool AcceptQuest(Quest quest) { lock (Quests) { if (!Quests.Any(i => i.Name == quest.Name)) { Quests.Add(quest); return(true); } } return(false); }
public void RemoveQuest() { if (Quests == null || SelectedQuest.Value == null) { return; } var index = Quests.IndexOf(SelectedQuest); if (!Quests.Remove(SelectedQuest)) { return; } if (Quests.Any()) { SelectedQuest = ((index - 1) >= 0) ? Quests[index - 1] : Quests.First(); } }
protected virtual bool DoQuests(string rawParameters, params CommandParameter[] parameters) { if (parameters.Length == 0) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Quests:"); if (!Quests.Any()) { sb.AppendLine("None."); } else { int id = 0; foreach (IQuest quest in Quests) { sb.Append(BuildQuestSummary(quest, id)); id++; } } Page(sb); } else { int id = parameters[0].AsNumber; IQuest quest = id > 0 ? Quests.ElementAtOrDefault(id - 1) : null; // index starts at 0 if (quest == null) { Send("No such quest."); return(true); } StringBuilder sb = new StringBuilder(); sb.AppendFormatLine($"{quest.Blueprint.Title}: {(quest.IsCompleted ? "%g%complete%x%" : "in progress")}"); sb.AppendLine(quest.Blueprint.Description); sb.Append(BuildQuestObjectives(quest)); Page(sb); } return(true); }
public bool HasQuest(string lpName) { var result = Quests.Any(i => i.Name == lpName); return(result); }
public bool HasCompletedQuest(string lpName) { return(Quests.Any(i => i.Name == lpName && i.Completed)); }
private int GetMaxQuestId() { return(Quests.Any() ? Quests.Max(page => page.Key) : -1); }
public bool HasThisQuest(Quest quest) { return(Quests.Any(pq => pq.Details.ID == quest.ID)); }