public void CancelQuest(QuestInfo quest) { bool available = false, current = false, completed = false; ClientUserQuest userQuest = GameScene.Game.QuestLog.FirstOrDefault(x => x.Quest == quest); if (userQuest == null) { return; } if (CompletedTab.Quests.Contains(quest)) { CompletedTab.Quests.Remove(quest); completed = true; } if (CurrentTab.Quests.Contains(quest)) { CurrentTab.Quests.Remove(quest); current = true; } if (GameScene.Game.CanAccept(quest)) { if (!AvailableTab.Quests.Contains(quest)) { AvailableTab.Quests.Add(quest); available = true; } } GameScene.Game.QuestLog.Remove(userQuest); if (available) { AvailableTab.NeedUpdate = true; AvailableTab.UpdateQuestDisplay(); } if (current) { CurrentTab.NeedUpdate = true; CurrentTab.UpdateQuestDisplay(); } if (completed) { CompletedTab.NeedUpdate = true; CompletedTab.UpdateQuestDisplay(); } }
public void QuestChanged(ClientUserQuest quest) { if (AvailableTab.SelectedQuest?.QuestInfo == quest.Quest) { AvailableTab.UpdateQuestDisplay(); } if (CurrentTab.SelectedQuest?.QuestInfo == quest.Quest) { CurrentTab.UpdateQuestDisplay(); } if (CompletedTab.SelectedQuest?.QuestInfo == quest.Quest) { CompletedTab.UpdateQuestDisplay(); } }
public void PopulateQuests() { bool available = false, current = false, completed = false; foreach (QuestInfo quest in Globals.QuestInfoList.Binding) { ClientUserQuest userQuest = GameScene.Game.QuestLog.FirstOrDefault(x => x.Quest == quest); if (userQuest == null) { if (!GameScene.Game.CanAccept(quest)) { continue; } if (AvailableTab.Quests.Contains(quest)) { continue; } AvailableTab.Quests.Add(quest); available = true; continue; } if (AvailableTab.Quests.Contains(quest)) { AvailableTab.Quests.Remove(quest); available = true; } if (userQuest.Completed) { if (CompletedTab.Quests.Contains(quest)) { continue; } CompletedTab.Quests.Add(quest); completed = true; if (!CurrentTab.Quests.Contains(quest)) { continue; } CurrentTab.Quests.Remove(quest); current = true; continue; } if (CurrentTab.Quests.Contains(quest)) { continue; } CurrentTab.Quests.Add(quest); current = true; } if (available) { AvailableTab.NeedUpdate = true; AvailableTab.UpdateQuestDisplay(); } if (current) { CurrentTab.NeedUpdate = true; CurrentTab.UpdateQuestDisplay(); } if (completed) { CompletedTab.NeedUpdate = true; CompletedTab.UpdateQuestDisplay(); } }
public void PopulateQuests() { foreach (DXLabel line in Lines) { line.Dispose(); } Lines.Clear(); if (!Config.QuestTrackerVisible) { Visible = false; return; } foreach (QuestInfo quest in GameScene.Game.QuestBox.CurrentTab.Quests) { ClientUserQuest userQuest = GameScene.Game.QuestLog.First(x => x.Quest == quest); if (!userQuest.Track) { continue; } DXLabel label = new DXLabel { Text = quest.QuestName, Parent = TextPanel, Outline = true, OutlineColour = Color.Black, IsControl = false, Location = new Point(15, Lines.Count * 15) }; DXAnimatedControl QuestIcon = new DXAnimatedControl { Parent = TextPanel, Location = new Point(2, Lines.Count * 15), Loop = true, LibraryFile = LibraryFile.Interface, BaseIndex = 83, FrameCount = 2, AnimationDelay = TimeSpan.FromSeconds(1), IsControl = false, }; label.Disposing += (o, e) => { QuestIcon.Dispose(); }; label.LocationChanged += (o, e) => { QuestIcon.Location = new Point(QuestIcon.Location.X, label.Location.Y); }; QuestIcon.BaseIndex = !userQuest.IsComplete ? 85 : 93; if (userQuest.IsComplete) { label.Text += " (Complete)"; } Lines.Add(label); if (userQuest.IsComplete) { DXLabel label1 = new DXLabel { Text = $"Goto {quest.FinishNPC.NPCName} in {quest.FinishNPC.RegionName}", Parent = TextPanel, ForeColour = Color.White, Outline = true, OutlineColour = Color.Black, IsControl = false, Location = new Point(25, Lines.Count * 15) }; Lines.Add(label1); } else { foreach (QuestTask task in quest.Tasks) { ClientUserQuestTask userTask = userQuest.Tasks.FirstOrDefault(x => x.Task == task); if (userTask != null && userTask.Completed) { continue; } DXLabel label1 = new DXLabel { Text = GameScene.Game.GetTaskText(task, userQuest), Parent = TextPanel, ForeColour = Color.White, Outline = true, OutlineColour = Color.Black, IsControl = false, Location = new Point(25, Lines.Count * 15) }; Lines.Add(label1); } } } Visible = Lines.Count > 0; UpdateScrollBar(); }